Import gdb-7.0
[dragonfly.git] / contrib / gdb-7 / gdb / linespec.c
1 /* Parser for linespec for the GNU debugger, GDB.
2
3    Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4    1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
5    2009 Free Software Foundation, Inc.
6
7    This file is part of GDB.
8
9    This program is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "symtab.h"
24 #include "frame.h"
25 #include "command.h"
26 #include "symfile.h"
27 #include "objfiles.h"
28 #include "source.h"
29 #include "demangle.h"
30 #include "value.h"
31 #include "completer.h"
32 #include "cp-abi.h"
33 #include "parser-defs.h"
34 #include "block.h"
35 #include "objc-lang.h"
36 #include "linespec.h"
37 #include "exceptions.h"
38 #include "language.h"
39 #include "interps.h"
40 #include "mi/mi-cmds.h"
41 #include "target.h"
42
43 /* We share this one with symtab.c, but it is not exported widely. */
44
45 extern char *operator_chars (char *, char **);
46
47 /* Prototypes for local functions */
48
49 static void initialize_defaults (struct symtab **default_symtab,
50                                  int *default_line);
51
52 static void set_flags (char *arg, int *is_quoted, char **paren_pointer);
53
54 static struct symtabs_and_lines decode_indirect (char **argptr);
55
56 static char *locate_first_half (char **argptr, int *is_quote_enclosed);
57
58 static struct symtabs_and_lines decode_objc (char **argptr,
59                                              int funfirstline,
60                                              struct symtab *file_symtab,
61                                              char ***canonical,
62                                              char *saved_arg);
63
64 static struct symtabs_and_lines decode_compound (char **argptr,
65                                                  int funfirstline,
66                                                  char ***canonical,
67                                                  char *saved_arg,
68                                                  char *p,
69                                                  int *not_found_ptr);
70
71 static struct symbol *lookup_prefix_sym (char **argptr, char *p);
72
73 static struct symtabs_and_lines find_method (int funfirstline,
74                                              char ***canonical,
75                                              char *saved_arg,
76                                              char *copy,
77                                              struct type *t,
78                                              struct symbol *sym_class,
79                                              int *not_found_ptr);
80
81 static NORETURN void cplusplus_error (const char *name,
82                                       const char *fmt, ...)
83      ATTR_NORETURN ATTR_FORMAT (printf, 2, 3);
84
85 static int total_number_of_methods (struct type *type);
86
87 static int find_methods (struct type *, char *,
88                          enum language, struct symbol **);
89
90 static int add_matching_methods (int method_counter, struct type *t,
91                                  enum language language,
92                                  struct symbol **sym_arr);
93
94 static int add_constructors (int method_counter, struct type *t,
95                              enum language language,
96                              struct symbol **sym_arr);
97
98 static void build_canonical_line_spec (struct symtab_and_line *,
99                                        char *, char ***);
100
101 static char *find_toplevel_char (char *s, char c);
102
103 static int is_objc_method_format (const char *s);
104
105 static struct symtabs_and_lines decode_line_2 (struct symbol *[],
106                                                int, int, char ***);
107
108 static struct symtab *symtab_from_filename (char **argptr,
109                                             char *p, int is_quote_enclosed,
110                                             int *not_found_ptr);
111
112 static struct
113 symtabs_and_lines decode_all_digits (char **argptr,
114                                      struct symtab *default_symtab,
115                                      int default_line,
116                                      char ***canonical,
117                                      struct symtab *file_symtab,
118                                      char *q);
119
120 static struct symtabs_and_lines decode_dollar (char *copy,
121                                                int funfirstline,
122                                                struct symtab *default_symtab,
123                                                char ***canonical,
124                                                struct symtab *file_symtab);
125
126 static struct symtabs_and_lines decode_variable (char *copy,
127                                                  int funfirstline,
128                                                  char ***canonical,
129                                                  struct symtab *file_symtab,
130                                                  int *not_found_ptr);
131
132 static struct
133 symtabs_and_lines symbol_found (int funfirstline,
134                                 char ***canonical,
135                                 char *copy,
136                                 struct symbol *sym,
137                                 struct symtab *file_symtab);
138
139 static struct
140 symtabs_and_lines minsym_found (int funfirstline,
141                                 struct minimal_symbol *msymbol);
142
143 /* Helper functions. */
144
145 /* Issue a helpful hint on using the command completion feature on
146    single quoted demangled C++ symbols as part of the completion
147    error.  */
148
149 static NORETURN void
150 cplusplus_error (const char *name, const char *fmt, ...)
151 {
152   struct ui_file *tmp_stream;
153   char *message;
154   tmp_stream = mem_fileopen ();
155   make_cleanup_ui_file_delete (tmp_stream);
156
157   {
158     va_list args;
159     va_start (args, fmt);
160     vfprintf_unfiltered (tmp_stream, fmt, args);
161     va_end (args);
162   }
163
164   while (*name == '\'')
165     name++;
166   fprintf_unfiltered (tmp_stream,
167                       ("Hint: try '%s<TAB> or '%s<ESC-?>\n"
168                        "(Note leading single quote.)"),
169                       name, name);
170
171   message = ui_file_xstrdup (tmp_stream, NULL);
172   make_cleanup (xfree, message);
173   throw_error (NOT_FOUND_ERROR, "%s", message);
174 }
175
176 /* Return the number of methods described for TYPE, including the
177    methods from types it derives from. This can't be done in the symbol
178    reader because the type of the baseclass might still be stubbed
179    when the definition of the derived class is parsed.  */
180
181 static int
182 total_number_of_methods (struct type *type)
183 {
184   int n;
185   int count;
186
187   CHECK_TYPEDEF (type);
188   if (TYPE_CPLUS_SPECIFIC (type) == NULL)
189     return 0;
190   count = TYPE_NFN_FIELDS_TOTAL (type);
191
192   for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
193     count += total_number_of_methods (TYPE_BASECLASS (type, n));
194
195   return count;
196 }
197
198 /* Recursive helper function for decode_line_1.
199    Look for methods named NAME in type T.
200    Return number of matches.
201    Put matches in SYM_ARR, which should have been allocated with
202    a size of total_number_of_methods (T) * sizeof (struct symbol *).
203    Note that this function is g++ specific.  */
204
205 static int
206 find_methods (struct type *t, char *name, enum language language,
207               struct symbol **sym_arr)
208 {
209   int i1 = 0;
210   int ibase;
211   char *class_name = type_name_no_tag (t);
212
213   /* Ignore this class if it doesn't have a name.  This is ugly, but
214      unless we figure out how to get the physname without the name of
215      the class, then the loop can't do any good.  */
216   if (class_name
217       && (lookup_symbol_in_language (class_name, (struct block *) NULL,
218                          STRUCT_DOMAIN, language, (int *) NULL)))
219     {
220       int method_counter;
221       int name_len = strlen (name);
222
223       CHECK_TYPEDEF (t);
224
225       /* Loop over each method name.  At this level, all overloads of a name
226          are counted as a single name.  There is an inner loop which loops over
227          each overload.  */
228
229       for (method_counter = TYPE_NFN_FIELDS (t) - 1;
230            method_counter >= 0;
231            --method_counter)
232         {
233           char *method_name = TYPE_FN_FIELDLIST_NAME (t, method_counter);
234           char dem_opname[64];
235
236           if (strncmp (method_name, "__", 2) == 0 ||
237               strncmp (method_name, "op", 2) == 0 ||
238               strncmp (method_name, "type", 4) == 0)
239             {
240               if (cplus_demangle_opname (method_name, dem_opname, DMGL_ANSI))
241                 method_name = dem_opname;
242               else if (cplus_demangle_opname (method_name, dem_opname, 0))
243                 method_name = dem_opname;
244             }
245
246           if (strcmp_iw (name, method_name) == 0)
247             /* Find all the overloaded methods with that name.  */
248             i1 += add_matching_methods (method_counter, t, language,
249                                         sym_arr + i1);
250           else if (strncmp (class_name, name, name_len) == 0
251                    && (class_name[name_len] == '\0'
252                        || class_name[name_len] == '<'))
253             i1 += add_constructors (method_counter, t, language,
254                                     sym_arr + i1);
255         }
256     }
257
258   /* Only search baseclasses if there is no match yet, since names in
259      derived classes override those in baseclasses.
260
261      FIXME: The above is not true; it is only true of member functions
262      if they have the same number of arguments (??? - section 13.1 of the
263      ARM says the function members are not in the same scope but doesn't
264      really spell out the rules in a way I understand.  In any case, if
265      the number of arguments differ this is a case in which we can overload
266      rather than hiding without any problem, and gcc 2.4.5 does overload
267      rather than hiding in this case).  */
268
269   if (i1 == 0)
270     for (ibase = 0; ibase < TYPE_N_BASECLASSES (t); ibase++)
271       i1 += find_methods (TYPE_BASECLASS (t, ibase), name,
272                           language, sym_arr + i1);
273
274   return i1;
275 }
276
277 /* Add the symbols associated to methods of the class whose type is T
278    and whose name matches the method indexed by METHOD_COUNTER in the
279    array SYM_ARR.  Return the number of methods added.  */
280
281 static int
282 add_matching_methods (int method_counter, struct type *t,
283                       enum language language, struct symbol **sym_arr)
284 {
285   int field_counter;
286   int i1 = 0;
287
288   for (field_counter = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
289        field_counter >= 0;
290        --field_counter)
291     {
292       struct fn_field *f;
293       char *phys_name;
294
295       f = TYPE_FN_FIELDLIST1 (t, method_counter);
296
297       if (TYPE_FN_FIELD_STUB (f, field_counter))
298         {
299           char *tmp_name;
300
301           tmp_name = gdb_mangle_name (t,
302                                       method_counter,
303                                       field_counter);
304           phys_name = alloca (strlen (tmp_name) + 1);
305           strcpy (phys_name, tmp_name);
306           xfree (tmp_name);
307         }
308       else
309         phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
310
311       sym_arr[i1] = lookup_symbol_in_language (phys_name,
312                                    NULL, VAR_DOMAIN,
313                                    language,
314                                    (int *) NULL);
315       if (sym_arr[i1])
316         i1++;
317       else
318         {
319           /* This error message gets printed, but the method
320              still seems to be found
321              fputs_filtered("(Cannot find method ", gdb_stdout);
322              fprintf_symbol_filtered (gdb_stdout, phys_name,
323              language_cplus,
324              DMGL_PARAMS | DMGL_ANSI);
325              fputs_filtered(" - possibly inlined.)\n", gdb_stdout);
326           */
327         }
328     }
329
330   return i1;
331 }
332
333 /* Add the symbols associated to constructors of the class whose type
334    is CLASS_TYPE and which are indexed by by METHOD_COUNTER to the
335    array SYM_ARR.  Return the number of methods added.  */
336
337 static int
338 add_constructors (int method_counter, struct type *t,
339                   enum language language, struct symbol **sym_arr)
340 {
341   int field_counter;
342   int i1 = 0;
343
344   /* For GCC 3.x and stabs, constructors and destructors
345      have names like __base_ctor and __complete_dtor.
346      Check the physname for now if we're looking for a
347      constructor.  */
348   for (field_counter
349          = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
350        field_counter >= 0;
351        --field_counter)
352     {
353       struct fn_field *f;
354       char *phys_name;
355
356       f = TYPE_FN_FIELDLIST1 (t, method_counter);
357
358       /* GCC 3.x will never produce stabs stub methods, so
359          we don't need to handle this case.  */
360       if (TYPE_FN_FIELD_STUB (f, field_counter))
361         continue;
362       phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
363       if (! is_constructor_name (phys_name))
364         continue;
365
366       /* If this method is actually defined, include it in the
367          list.  */
368       sym_arr[i1] = lookup_symbol_in_language (phys_name,
369                                    NULL, VAR_DOMAIN,
370                                    language,
371                                    (int *) NULL);
372       if (sym_arr[i1])
373         i1++;
374     }
375
376   return i1;
377 }
378
379 /* Helper function for decode_line_1.
380    Build a canonical line spec in CANONICAL if it is non-NULL and if
381    the SAL has a symtab.
382    If SYMNAME is non-NULL the canonical line spec is `filename:symname'.
383    If SYMNAME is NULL the line number from SAL is used and the canonical
384    line spec is `filename:linenum'.  */
385
386 static void
387 build_canonical_line_spec (struct symtab_and_line *sal, char *symname,
388                            char ***canonical)
389 {
390   char **canonical_arr;
391   char *canonical_name;
392   char *filename;
393   struct symtab *s = sal->symtab;
394
395   if (s == (struct symtab *) NULL
396       || s->filename == (char *) NULL
397       || canonical == (char ***) NULL)
398     return;
399
400   canonical_arr = (char **) xmalloc (sizeof (char *));
401   *canonical = canonical_arr;
402
403   filename = s->filename;
404   if (symname != NULL)
405     {
406       canonical_name = xmalloc (strlen (filename) + strlen (symname) + 2);
407       sprintf (canonical_name, "%s:%s", filename, symname);
408     }
409   else
410     {
411       canonical_name = xmalloc (strlen (filename) + 30);
412       sprintf (canonical_name, "%s:%d", filename, sal->line);
413     }
414   canonical_arr[0] = canonical_name;
415 }
416
417
418
419 /* Find an instance of the character C in the string S that is outside
420    of all parenthesis pairs, single-quoted strings, and double-quoted
421    strings.  Also, ignore the char within a template name, like a ','
422    within foo<int, int>.  */
423
424 static char *
425 find_toplevel_char (char *s, char c)
426 {
427   int quoted = 0;               /* zero if we're not in quotes;
428                                    '"' if we're in a double-quoted string;
429                                    '\'' if we're in a single-quoted string.  */
430   int depth = 0;                /* Number of unclosed parens we've seen.  */
431   char *scan;
432
433   for (scan = s; *scan; scan++)
434     {
435       if (quoted)
436         {
437           if (*scan == quoted)
438             quoted = 0;
439           else if (*scan == '\\' && *(scan + 1))
440             scan++;
441         }
442       else if (*scan == c && ! quoted && depth == 0)
443         return scan;
444       else if (*scan == '"' || *scan == '\'')
445         quoted = *scan;
446       else if (*scan == '(' || *scan == '<')
447         depth++;
448       else if ((*scan == ')' || *scan == '>') && depth > 0)
449         depth--;
450     }
451
452   return 0;
453 }
454
455 /* Determines if the gives string corresponds to an Objective-C method
456    representation, such as -[Foo bar:] or +[Foo bar]. Objective-C symbols
457    are allowed to have spaces and parentheses in them.  */
458
459 static int 
460 is_objc_method_format (const char *s)
461 {
462   if (s == NULL || *s == '\0')
463     return 0;
464   /* Handle arguments with the format FILENAME:SYMBOL.  */
465   if ((s[0] == ':') && (strchr ("+-", s[1]) != NULL) 
466       && (s[2] == '[') && strchr(s, ']'))
467     return 1;
468   /* Handle arguments that are just SYMBOL.  */
469   else if ((strchr ("+-", s[0]) != NULL) && (s[1] == '[') && strchr(s, ']'))
470     return 1;
471   return 0;
472 }
473
474 /* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
475    operate on (ask user if necessary).
476    If CANONICAL is non-NULL return a corresponding array of mangled names
477    as canonical line specs there.  */
478
479 static struct symtabs_and_lines
480 decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
481                char ***canonical)
482 {
483   struct symtabs_and_lines values, return_values;
484   char *args, *arg1;
485   int i;
486   char *prompt;
487   char *symname;
488   struct cleanup *old_chain;
489   char **canonical_arr = (char **) NULL;
490   const char *select_mode = multiple_symbols_select_mode ();
491
492   if (select_mode == multiple_symbols_cancel)
493     error (_("\
494 canceled because the command is ambiguous\n\
495 See set/show multiple-symbol."));
496   
497   values.sals = (struct symtab_and_line *)
498     alloca (nelts * sizeof (struct symtab_and_line));
499   return_values.sals = (struct symtab_and_line *)
500     xmalloc (nelts * sizeof (struct symtab_and_line));
501   old_chain = make_cleanup (xfree, return_values.sals);
502
503   if (canonical)
504     {
505       canonical_arr = (char **) xmalloc (nelts * sizeof (char *));
506       make_cleanup (xfree, canonical_arr);
507       memset (canonical_arr, 0, nelts * sizeof (char *));
508       *canonical = canonical_arr;
509     }
510
511   i = 0;
512   while (i < nelts)
513     {
514       init_sal (&return_values.sals[i]);        /* Initialize to zeroes.  */
515       init_sal (&values.sals[i]);
516       if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
517         values.sals[i] = find_function_start_sal (sym_arr[i], funfirstline);
518       i++;
519     }
520
521   /* If select_mode is "all", then do not print the multiple-choice
522      menu and act as if the user had chosen choice "1" (all).  */
523   if (select_mode == multiple_symbols_all
524       || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
525     args = "1";
526   else
527     {
528       i = 0;
529       printf_unfiltered (_("[0] cancel\n[1] all\n"));
530       while (i < nelts)
531         {
532           if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
533             {
534               if (values.sals[i].symtab)
535                 printf_unfiltered ("[%d] %s at %s:%d\n",
536                                    (i + 2),
537                                    SYMBOL_PRINT_NAME (sym_arr[i]),
538                                    values.sals[i].symtab->filename,
539                                    values.sals[i].line);
540               else
541                 printf_unfiltered (_("[%d] %s at ?FILE:%d [No symtab? Probably broken debug info...]\n"),
542                                    (i + 2),
543                                    SYMBOL_PRINT_NAME (sym_arr[i]),
544                                    values.sals[i].line);
545
546             }
547           else
548             printf_unfiltered (_("?HERE\n"));
549           i++;
550         }
551
552       prompt = getenv ("PS2");
553       if (prompt == NULL)
554         {
555           prompt = "> ";
556         }
557       args = command_line_input (prompt, 0, "overload-choice");
558     }
559
560   if (args == 0 || *args == 0)
561     error_no_arg (_("one or more choice numbers"));
562
563   i = 0;
564   while (*args)
565     {
566       int num;
567
568       arg1 = args;
569       while (*arg1 >= '0' && *arg1 <= '9')
570         arg1++;
571       if (*arg1 && *arg1 != ' ' && *arg1 != '\t')
572         error (_("Arguments must be choice numbers."));
573
574       num = atoi (args);
575
576       if (num == 0)
577         error (_("canceled"));
578       else if (num == 1)
579         {
580           if (canonical_arr)
581             {
582               for (i = 0; i < nelts; i++)
583                 {
584                   if (canonical_arr[i] == NULL)
585                     {
586                       symname = SYMBOL_LINKAGE_NAME (sym_arr[i]);
587                       canonical_arr[i] = xstrdup (symname);
588                     }
589                 }
590             }
591           memcpy (return_values.sals, values.sals,
592                   (nelts * sizeof (struct symtab_and_line)));
593           return_values.nelts = nelts;
594           discard_cleanups (old_chain);
595           return return_values;
596         }
597
598       if (num >= nelts + 2)
599         {
600           printf_unfiltered (_("No choice number %d.\n"), num);
601         }
602       else
603         {
604           num -= 2;
605           if (values.sals[num].pc)
606             {
607               if (canonical_arr)
608                 {
609                   symname = SYMBOL_LINKAGE_NAME (sym_arr[num]);
610                   make_cleanup (xfree, symname);
611                   canonical_arr[i] = xstrdup (symname);
612                 }
613               return_values.sals[i++] = values.sals[num];
614               values.sals[num].pc = 0;
615             }
616           else
617             {
618               printf_unfiltered (_("duplicate request for %d ignored.\n"), num);
619             }
620         }
621
622       args = arg1;
623       while (*args == ' ' || *args == '\t')
624         args++;
625     }
626   return_values.nelts = i;
627   discard_cleanups (old_chain);
628   return return_values;
629 }
630 \f
631 /* The parser of linespec itself. */
632
633 /* Parse a string that specifies a line number.
634    Pass the address of a char * variable; that variable will be
635    advanced over the characters actually parsed.
636
637    The string can be:
638
639    LINENUM -- that line number in current file.  PC returned is 0.
640    FILE:LINENUM -- that line in that file.  PC returned is 0.
641    FUNCTION -- line number of openbrace of that function.
642    PC returned is the start of the function.
643    VARIABLE -- line number of definition of that variable.
644    PC returned is 0.
645    FILE:FUNCTION -- likewise, but prefer functions in that file.
646    *EXPR -- line in which address EXPR appears.
647
648    This may all be followed by an "if EXPR", which we ignore.
649
650    FUNCTION may be an undebuggable function found in minimal symbol table.
651
652    If the argument FUNFIRSTLINE is nonzero, we want the first line
653    of real code inside a function when a function is specified, and it is
654    not OK to specify a variable or type to get its line number.
655
656    DEFAULT_SYMTAB specifies the file to use if none is specified.
657    It defaults to current_source_symtab.
658    DEFAULT_LINE specifies the line number to use for relative
659    line numbers (that start with signs).  Defaults to current_source_line.
660    If CANONICAL is non-NULL, store an array of strings containing the canonical
661    line specs there if necessary. Currently overloaded member functions and
662    line numbers or static functions without a filename yield a canonical
663    line spec. The array and the line spec strings are allocated on the heap,
664    it is the callers responsibility to free them.
665
666    Note that it is possible to return zero for the symtab
667    if no file is validly specified.  Callers must check that.
668    Also, the line number returned may be invalid.  
669  
670    If NOT_FOUND_PTR is not null, store a boolean true/false value at the location, based
671    on whether or not failure occurs due to an unknown function or file.  In the case
672    where failure does occur due to an unknown function or file, do not issue an error
673    message.  */
674
675 /* We allow single quotes in various places.  This is a hideous
676    kludge, which exists because the completer can't yet deal with the
677    lack of single quotes.  FIXME: write a linespec_completer which we
678    can use as appropriate instead of make_symbol_completion_list.  */
679
680 struct symtabs_and_lines
681 decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
682                int default_line, char ***canonical, int *not_found_ptr)
683 {
684   char *p;
685   char *q;
686   /* If a file name is specified, this is its symtab.  */
687   struct symtab *file_symtab = NULL;
688
689   char *copy;
690   /* This is NULL if there are no parens in *ARGPTR, or a pointer to
691      the closing parenthesis if there are parens.  */
692   char *paren_pointer;
693   /* This says whether or not something in *ARGPTR is quoted with
694      completer_quotes (i.e. with single quotes).  */
695   int is_quoted;
696   /* Is part of *ARGPTR is enclosed in double quotes?  */
697   int is_quote_enclosed;
698   int is_objc_method = 0;
699   char *saved_arg = *argptr;
700
701   if (not_found_ptr)
702     *not_found_ptr = 0;
703
704   /* Defaults have defaults.  */
705
706   initialize_defaults (&default_symtab, &default_line);
707   
708   /* See if arg is *PC.  */
709
710   if (**argptr == '*')
711     return decode_indirect (argptr);
712
713   /* Set various flags.  'paren_pointer' is important for overload
714      checking, where we allow things like:
715         (gdb) break c::f(int)
716   */
717
718   set_flags (*argptr, &is_quoted, &paren_pointer);
719
720   /* Check to see if it's a multipart linespec (with colons or
721      periods).  */
722
723   /* Locate the end of the first half of the linespec.
724      After the call, for instance, if the argptr string is "foo.c:123"
725      p will point at "123".  If there is only one part, like "foo", p
726      will point to "". If this is a C++ name, like "A::B::foo", p will
727      point to "::B::foo". Argptr is not changed by this call.  */
728
729   p = locate_first_half (argptr, &is_quote_enclosed);
730
731   /* Check if this is an Objective-C method (anything that starts with
732      a '+' or '-' and a '[').  */
733   if (is_objc_method_format (p))
734     {
735       is_objc_method = 1;
736       paren_pointer  = NULL; /* Just a category name.  Ignore it.  */
737     }
738
739   /* Check if the symbol could be an Objective-C selector.  */
740
741   {
742     struct symtabs_and_lines values;
743     values = decode_objc (argptr, funfirstline, NULL,
744                           canonical, saved_arg);
745     if (values.sals != NULL)
746       return values;
747   }
748
749   /* Does it look like there actually were two parts?  */
750
751   if ((p[0] == ':' || p[0] == '.') && paren_pointer == NULL)
752     {
753       if (is_quoted)
754         *argptr = *argptr + 1;
755       
756       /* Is it a C++ or Java compound data structure?
757          The check on p[1] == ':' is capturing the case of "::",
758          since p[0]==':' was checked above.  
759          Note that the call to decode_compound does everything
760          for us, including the lookup on the symbol table, so we
761          can return now. */
762         
763       if (p[0] == '.' || p[1] == ':')
764         return decode_compound (argptr, funfirstline, canonical,
765                                 saved_arg, p, not_found_ptr);
766
767       /* No, the first part is a filename; set file_symtab to be that file's
768          symtab.  Also, move argptr past the filename.  */
769
770       file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed, 
771                                           not_found_ptr);
772     }
773 #if 0
774   /* No one really seems to know why this was added. It certainly
775      breaks the command line, though, whenever the passed
776      name is of the form ClassName::Method. This bit of code
777      singles out the class name, and if funfirstline is set (for
778      example, you are setting a breakpoint at this function),
779      you get an error. This did not occur with earlier
780      verions, so I am ifdef'ing this out. 3/29/99 */
781   else
782     {
783       /* Check if what we have till now is a symbol name */
784
785       /* We may be looking at a template instantiation such
786          as "foo<int>".  Check here whether we know about it,
787          instead of falling through to the code below which
788          handles ordinary function names, because that code
789          doesn't like seeing '<' and '>' in a name -- the
790          skip_quoted call doesn't go past them.  So see if we
791          can figure it out right now. */
792
793       copy = (char *) alloca (p - *argptr + 1);
794       memcpy (copy, *argptr, p - *argptr);
795       copy[p - *argptr] = '\000';
796       sym = lookup_symbol (copy, 0, VAR_DOMAIN, 0);
797       if (sym)
798         {
799           *argptr = (*p == '\'') ? p + 1 : p;
800           return symbol_found (funfirstline, canonical, copy, sym, NULL);
801         }
802       /* Otherwise fall out from here and go to file/line spec
803          processing, etc. */
804     }
805 #endif
806
807   /* file_symtab is specified file's symtab, or 0 if no file specified.
808      arg no longer contains the file name.  */
809
810   /* Check whether arg is all digits (and sign).  */
811
812   q = *argptr;
813   if (*q == '-' || *q == '+')
814     q++;
815   while (*q >= '0' && *q <= '9')
816     q++;
817
818   if (q != *argptr && (*q == 0 || *q == ' ' || *q == '\t' || *q == ','))
819     /* We found a token consisting of all digits -- at least one digit.  */
820     return decode_all_digits (argptr, default_symtab, default_line,
821                               canonical, file_symtab, q);
822
823   /* Arg token is not digits => try it as a variable name
824      Find the next token (everything up to end or next whitespace).  */
825
826   if (**argptr == '$')          /* May be a convenience variable.  */
827     /* One or two $ chars possible.  */
828     p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1));
829   else if (is_quoted)
830     {
831       p = skip_quoted (*argptr);
832       if (p[-1] != '\'')
833         error (_("Unmatched single quote."));
834     }
835   else if (is_objc_method)
836     {
837       /* allow word separators in method names for Obj-C */
838       p = skip_quoted_chars (*argptr, NULL, "");
839     }
840   else if (paren_pointer != NULL)
841     {
842       p = paren_pointer + 1;
843     }
844   else
845     {
846       p = skip_quoted (*argptr);
847     }
848
849   /* Keep any template parameters */
850   if (*p == '<')
851     p = find_template_name_end (p);
852
853   copy = (char *) alloca (p - *argptr + 1);
854   memcpy (copy, *argptr, p - *argptr);
855   copy[p - *argptr] = '\0';
856   if (p != *argptr
857       && copy[0]
858       && copy[0] == copy[p - *argptr - 1]
859       && strchr (get_gdb_completer_quote_characters (), copy[0]) != NULL)
860     {
861       copy[p - *argptr - 1] = '\0';
862       copy++;
863     }
864   while (*p == ' ' || *p == '\t')
865     p++;
866   *argptr = p;
867
868   /* If it starts with $: may be a legitimate variable or routine name
869      (e.g. HP-UX millicode routines such as $$dyncall), or it may
870      be history value, or it may be a convenience variable.  */
871
872   if (*copy == '$')
873     return decode_dollar (copy, funfirstline, default_symtab,
874                           canonical, file_symtab);
875
876   /* Look up that token as a variable.
877      If file specified, use that file's per-file block to start with.  */
878
879   return decode_variable (copy, funfirstline, canonical,
880                           file_symtab, not_found_ptr);
881 }
882
883 \f
884
885 /* Now, more helper functions for decode_line_1.  Some conventions
886    that these functions follow:
887
888    Decode_line_1 typically passes along some of its arguments or local
889    variables to the subfunctions.  It passes the variables by
890    reference if they are modified by the subfunction, and by value
891    otherwise.
892
893    Some of the functions have side effects that don't arise from
894    variables that are passed by reference.  In particular, if a
895    function is passed ARGPTR as an argument, it modifies what ARGPTR
896    points to; typically, it advances *ARGPTR past whatever substring
897    it has just looked at.  (If it doesn't modify *ARGPTR, then the
898    function gets passed *ARGPTR instead, which is then called ARG: see
899    set_flags, for example.)  Also, functions that return a struct
900    symtabs_and_lines may modify CANONICAL, as in the description of
901    decode_line_1.
902
903    If a function returns a struct symtabs_and_lines, then that struct
904    will immediately make its way up the call chain to be returned by
905    decode_line_1.  In particular, all of the functions decode_XXX
906    calculate the appropriate struct symtabs_and_lines, under the
907    assumption that their argument is of the form XXX.  */
908
909 /* First, some functions to initialize stuff at the beggining of the
910    function.  */
911
912 static void
913 initialize_defaults (struct symtab **default_symtab, int *default_line)
914 {
915   if (*default_symtab == 0)
916     {
917       /* Use whatever we have for the default source line.  We don't use
918          get_current_or_default_symtab_and_line as it can recurse and call
919          us back! */
920       struct symtab_and_line cursal = 
921         get_current_source_symtab_and_line ();
922       
923       *default_symtab = cursal.symtab;
924       *default_line = cursal.line;
925     }
926 }
927
928 static void
929 set_flags (char *arg, int *is_quoted, char **paren_pointer)
930 {
931   char *ii;
932   int has_if = 0;
933
934   /* 'has_if' is for the syntax:
935         (gdb) break foo if (a==b)
936   */
937   if ((ii = strstr (arg, " if ")) != NULL ||
938       (ii = strstr (arg, "\tif ")) != NULL ||
939       (ii = strstr (arg, " if\t")) != NULL ||
940       (ii = strstr (arg, "\tif\t")) != NULL ||
941       (ii = strstr (arg, " if(")) != NULL ||
942       (ii = strstr (arg, "\tif( ")) != NULL)
943     has_if = 1;
944   /* Temporarily zap out "if (condition)" to not confuse the
945      parenthesis-checking code below.  This is undone below. Do not
946      change ii!!  */
947   if (has_if)
948     {
949       *ii = '\0';
950     }
951
952   *is_quoted = (*arg
953                 && strchr (get_gdb_completer_quote_characters (),
954                            *arg) != NULL);
955
956   *paren_pointer = strchr (arg, '(');
957   if (*paren_pointer != NULL)
958     *paren_pointer = strrchr (*paren_pointer, ')');
959
960   /* Now that we're safely past the paren_pointer check, put back " if
961      (condition)" so outer layers can see it.  */
962   if (has_if)
963     *ii = ' ';
964 }
965
966 \f
967
968 /* Decode arg of the form *PC.  */
969
970 static struct symtabs_and_lines
971 decode_indirect (char **argptr)
972 {
973   struct symtabs_and_lines values;
974   CORE_ADDR pc;
975   
976   (*argptr)++;
977   pc = parse_and_eval_address_1 (argptr);
978
979   values.sals = (struct symtab_and_line *)
980     xmalloc (sizeof (struct symtab_and_line));
981
982   values.nelts = 1;
983   values.sals[0] = find_pc_line (pc, 0);
984   values.sals[0].pc = pc;
985   values.sals[0].section = find_pc_overlay (pc);
986   values.sals[0].explicit_pc = 1;
987
988   return values;
989 }
990
991 \f
992
993 /* Locate the first half of the linespec, ending in a colon, period,
994    or whitespace.  (More or less.)  Also, check to see if *ARGPTR is
995    enclosed in double quotes; if so, set is_quote_enclosed, advance
996    ARGPTR past that and zero out the trailing double quote.
997    If ARGPTR is just a simple name like "main", p will point to ""
998    at the end.  */
999
1000 static char *
1001 locate_first_half (char **argptr, int *is_quote_enclosed)
1002 {
1003   char *ii;
1004   char *p, *p1;
1005   int has_comma;
1006
1007   /* Maybe we were called with a line range FILENAME:LINENUM,FILENAME:LINENUM
1008      and we must isolate the first half.  Outer layers will call again later
1009      for the second half.
1010
1011      Don't count commas that appear in argument lists of overloaded
1012      functions, or in quoted strings.  It's stupid to go to this much
1013      trouble when the rest of the function is such an obvious roach hotel.  */
1014   ii = find_toplevel_char (*argptr, ',');
1015   has_comma = (ii != 0);
1016
1017   /* Temporarily zap out second half to not confuse the code below.
1018      This is undone below. Do not change ii!!  */
1019   if (has_comma)
1020     {
1021       *ii = '\0';
1022     }
1023
1024   /* Maybe arg is FILE : LINENUM or FILE : FUNCTION.  May also be
1025      CLASS::MEMBER, or NAMESPACE::NAME.  Look for ':', but ignore
1026      inside of <>.  */
1027
1028   p = *argptr;
1029   if (p[0] == '"')
1030     {
1031       *is_quote_enclosed = 1;
1032       (*argptr)++;
1033       p++;
1034     }
1035   else
1036     *is_quote_enclosed = 0;
1037   for (; *p; p++)
1038     {
1039       if (p[0] == '<')
1040         {
1041           char *temp_end = find_template_name_end (p);
1042           if (!temp_end)
1043             error (_("malformed template specification in command"));
1044           p = temp_end;
1045         }
1046       /* Check for a colon and a plus or minus and a [ (which
1047          indicates an Objective-C method) */
1048       if (is_objc_method_format (p))
1049         {
1050           break;
1051         }
1052       /* Check for the end of the first half of the linespec.  End of
1053          line, a tab, a double colon or the last single colon, or a
1054          space.  But if enclosed in double quotes we do not break on
1055          enclosed spaces.  */
1056       if (!*p
1057           || p[0] == '\t'
1058           || ((p[0] == ':')
1059               && ((p[1] == ':') || (strchr (p + 1, ':') == NULL)))
1060           || ((p[0] == ' ') && !*is_quote_enclosed))
1061         break;
1062       if (p[0] == '.' && strchr (p, ':') == NULL)
1063         {
1064           /* Java qualified method.  Find the *last* '.', since the
1065              others are package qualifiers.  */
1066           for (p1 = p; *p1; p1++)
1067             {
1068               if (*p1 == '.')
1069                 p = p1;
1070             }
1071           break;
1072         }
1073     }
1074   while (p[0] == ' ' || p[0] == '\t')
1075     p++;
1076
1077   /* If the closing double quote was left at the end, remove it.  */
1078   if (*is_quote_enclosed)
1079     {
1080       char *closing_quote = strchr (p - 1, '"');
1081       if (closing_quote && closing_quote[1] == '\0')
1082         *closing_quote = '\0';
1083     }
1084
1085   /* Now that we've safely parsed the first half, put back ',' so
1086      outer layers can see it.  */
1087   if (has_comma)
1088     *ii = ',';
1089
1090   return p;
1091 }
1092
1093 \f
1094
1095 /* Here's where we recognise an Objective-C Selector.  An Objective C
1096    selector may be implemented by more than one class, therefore it
1097    may represent more than one method/function.  This gives us a
1098    situation somewhat analogous to C++ overloading.  If there's more
1099    than one method that could represent the selector, then use some of
1100    the existing C++ code to let the user choose one.  */
1101
1102 struct symtabs_and_lines
1103 decode_objc (char **argptr, int funfirstline, struct symtab *file_symtab,
1104              char ***canonical, char *saved_arg)
1105 {
1106   struct symtabs_and_lines values;
1107   struct symbol **sym_arr = NULL;
1108   struct symbol *sym = NULL;
1109   char *copy = NULL;
1110   struct block *block = NULL;
1111   unsigned i1 = 0;
1112   unsigned i2 = 0;
1113
1114   values.sals = NULL;
1115   values.nelts = 0;
1116
1117   if (file_symtab != NULL)
1118     block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (file_symtab), STATIC_BLOCK);
1119   else
1120     {
1121       enum language save_language;
1122
1123       /* get_selected_block can change the current language when there is
1124          no selected frame yet.  */
1125       save_language = current_language->la_language;
1126       block = get_selected_block (0);
1127       set_language (save_language);
1128     }
1129
1130   copy = find_imps (file_symtab, block, *argptr, NULL, &i1, &i2); 
1131     
1132   if (i1 > 0)
1133     {
1134       sym_arr = (struct symbol **) alloca ((i1 + 1) * sizeof (struct symbol *));
1135       sym_arr[i1] = NULL;
1136
1137       copy = find_imps (file_symtab, block, *argptr, sym_arr, &i1, &i2); 
1138       *argptr = copy;
1139     }
1140
1141   /* i1 now represents the TOTAL number of matches found.
1142      i2 represents how many HIGH-LEVEL (struct symbol) matches,
1143      which will come first in the sym_arr array.  Any low-level
1144      (minimal_symbol) matches will follow those.  */
1145       
1146   if (i1 == 1)
1147     {
1148       if (i2 > 0)
1149         {
1150           /* Already a struct symbol.  */
1151           sym = sym_arr[0];
1152         }
1153       else
1154         {
1155           sym = find_pc_function (SYMBOL_VALUE_ADDRESS (sym_arr[0]));
1156           if ((sym != NULL) && strcmp (SYMBOL_LINKAGE_NAME (sym_arr[0]), SYMBOL_LINKAGE_NAME (sym)) != 0)
1157             {
1158               warning (_("debugging symbol \"%s\" does not match selector; ignoring"), SYMBOL_LINKAGE_NAME (sym));
1159               sym = NULL;
1160             }
1161         }
1162               
1163       values.sals = (struct symtab_and_line *) xmalloc (sizeof (struct symtab_and_line));
1164       values.nelts = 1;
1165               
1166       if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
1167         {
1168           /* Canonicalize this, so it remains resolved for dylib loads.  */
1169           values.sals[0] = find_function_start_sal (sym, funfirstline);
1170           build_canonical_line_spec (values.sals, SYMBOL_NATURAL_NAME (sym), canonical);
1171         }
1172       else
1173         {
1174           /* The only match was a non-debuggable symbol.  */
1175           values.sals[0].symtab = NULL;
1176           values.sals[0].line = 0;
1177           values.sals[0].end = 0;
1178           values.sals[0].pc = SYMBOL_VALUE_ADDRESS (sym_arr[0]);
1179         }
1180       return values;
1181     }
1182
1183   if (i1 > 1)
1184     {
1185       /* More than one match. The user must choose one or more.  */
1186       return decode_line_2 (sym_arr, i2, funfirstline, canonical);
1187     }
1188
1189   return values;
1190 }
1191
1192 /* This handles C++ and Java compound data structures.  P should point
1193    at the first component separator, i.e. double-colon or period.  As
1194    an example, on entrance to this function we could have ARGPTR
1195    pointing to "AAA::inA::fun" and P pointing to "::inA::fun".  */
1196
1197 static struct symtabs_and_lines
1198 decode_compound (char **argptr, int funfirstline, char ***canonical,
1199                  char *saved_arg, char *p, int *not_found_ptr)
1200 {
1201   struct symtabs_and_lines values;
1202   char *p2;
1203   char *saved_arg2 = *argptr;
1204   char *temp_end;
1205   struct symbol *sym;
1206   char *copy;
1207   struct symbol *sym_class;
1208   struct symbol **sym_arr;
1209   struct type *t;
1210
1211   /* First check for "global" namespace specification, of the form
1212      "::foo".  If found, skip over the colons and jump to normal
1213      symbol processing.  I.e. the whole line specification starts with
1214      "::" (note the condition that *argptr == p). */
1215   if (p[0] == ':' 
1216       && ((*argptr == p) || (p[-1] == ' ') || (p[-1] == '\t')))
1217     saved_arg2 += 2;
1218
1219   /* Given our example "AAA::inA::fun", we have two cases to consider:
1220
1221      1) AAA::inA is the name of a class.  In that case, presumably it
1222         has a method called "fun"; we then look up that method using
1223         find_method.
1224
1225      2) AAA::inA isn't the name of a class.  In that case, either the
1226         user made a typo or AAA::inA is the name of a namespace.
1227         Either way, we just look up AAA::inA::fun with lookup_symbol.
1228
1229      Thus, our first task is to find everything before the last set of
1230      double-colons and figure out if it's the name of a class.  So we
1231      first loop through all of the double-colons.  */
1232
1233   p2 = p;               /* Save for restart.  */
1234
1235   /* This is very messy. Following the example above we have now the
1236      following pointers:
1237      p -> "::inA::fun"
1238      argptr -> "AAA::inA::fun
1239      saved_arg -> "AAA::inA::fun
1240      saved_arg2 -> "AAA::inA::fun
1241      p2 -> "::inA::fun". */
1242
1243   /* In the loop below, with these strings, we'll make 2 passes, each
1244      is marked in comments.*/
1245
1246   while (1)
1247     {
1248       /* Move pointer up to next possible class/namespace token.  */
1249
1250       p = p2 + 1;       /* Restart with old value +1.  */
1251
1252       /* PASS1: at this point p2->"::inA::fun", so p->":inA::fun",
1253          i.e. if there is a double-colon, p will now point to the
1254          second colon. */
1255       /* PASS2: p2->"::fun", p->":fun" */
1256
1257       /* Move pointer ahead to next double-colon.  */
1258       while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\''))
1259         {
1260           if (p[0] == '<')
1261             {
1262               temp_end = find_template_name_end (p);
1263               if (!temp_end)
1264                 error (_("malformed template specification in command"));
1265               p = temp_end;
1266             }
1267           /* Note that, since, at the start of this loop, p would be
1268              pointing to the second colon in a double-colon, we only
1269              satisfy the condition below if there is another
1270              double-colon to the right (after). I.e. there is another
1271              component that can be a class or a namespace. I.e, if at
1272              the beginning of this loop (PASS1), we had
1273              p->":inA::fun", we'll trigger this when p has been
1274              advanced to point to "::fun".  */
1275           /* PASS2: we will not trigger this. */
1276           else if ((p[0] == ':') && (p[1] == ':'))
1277             break;      /* Found double-colon.  */
1278           else
1279             /* PASS2: We'll keep getting here, until p->"", at which point
1280                we exit this loop.  */
1281             p++;
1282         }
1283
1284       if (*p != ':')
1285         break;          /* Out of the while (1).  This would happen
1286                            for instance if we have looked up
1287                            unsuccessfully all the components of the
1288                            string, and p->""(PASS2)  */
1289
1290       /* We get here if p points to ' ', '\t', '\'', "::" or ""(i.e
1291          string ended). */
1292       /* Save restart for next time around.  */
1293       p2 = p;
1294       /* Restore argptr as it was on entry to this function.  */
1295       *argptr = saved_arg2;
1296       /* PASS1: at this point p->"::fun" argptr->"AAA::inA::fun",
1297          p2->"::fun".  */
1298
1299       /* All ready for next pass through the loop.  */
1300     }                   /* while (1) */
1301
1302
1303   /* Start of lookup in the symbol tables. */
1304
1305   /* Lookup in the symbol table the substring between argptr and
1306      p. Note, this call changes the value of argptr.  */
1307   /* Before the call, argptr->"AAA::inA::fun",
1308      p->"", p2->"::fun".  After the call: argptr->"fun", p, p2
1309      unchanged.  */
1310   sym_class = lookup_prefix_sym (argptr, p2);
1311
1312   /* If sym_class has been found, and if "AAA::inA" is a class, then
1313      we're in case 1 above.  So we look up "fun" as a method of that
1314      class.  */
1315   if (sym_class &&
1316       (t = check_typedef (SYMBOL_TYPE (sym_class)),
1317        (TYPE_CODE (t) == TYPE_CODE_STRUCT
1318         || TYPE_CODE (t) == TYPE_CODE_UNION)))
1319     {
1320       /* Arg token is not digits => try it as a function name.
1321          Find the next token (everything up to end or next
1322          blank).  */
1323       if (**argptr
1324           && strchr (get_gdb_completer_quote_characters (),
1325                      **argptr) != NULL)
1326         {
1327           p = skip_quoted (*argptr);
1328           *argptr = *argptr + 1;
1329         }
1330       else
1331         {
1332           /* At this point argptr->"fun".  */
1333           p = *argptr;
1334           while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p != ':')
1335             p++;
1336           /* At this point p->"".  String ended.  */
1337         }
1338
1339       /* Allocate our own copy of the substring between argptr and
1340          p. */
1341       copy = (char *) alloca (p - *argptr + 1);
1342       memcpy (copy, *argptr, p - *argptr);
1343       copy[p - *argptr] = '\0';
1344       if (p != *argptr
1345           && copy[p - *argptr - 1]
1346           && strchr (get_gdb_completer_quote_characters (),
1347                      copy[p - *argptr - 1]) != NULL)
1348         copy[p - *argptr - 1] = '\0';
1349
1350       /* At this point copy->"fun", p->"" */
1351
1352       /* No line number may be specified.  */
1353       while (*p == ' ' || *p == '\t')
1354         p++;
1355       *argptr = p;
1356       /* At this point arptr->"".  */
1357
1358       /* Look for copy as a method of sym_class. */
1359       /* At this point copy->"fun", sym_class is "AAA:inA",
1360          saved_arg->"AAA::inA::fun".  This concludes the scanning of
1361          the string for possible components matches.  If we find it
1362          here, we return. If not, and we are at the and of the string,
1363          we'll lookup the whole string in the symbol tables.  */
1364
1365       return find_method (funfirstline, canonical, saved_arg,
1366                           copy, t, sym_class, not_found_ptr);
1367
1368     } /* End if symbol found */
1369
1370
1371   /* We couldn't find a class, so we're in case 2 above.  We check the
1372      entire name as a symbol instead.  */
1373
1374   copy = (char *) alloca (p - saved_arg2 + 1);
1375   memcpy (copy, saved_arg2, p - saved_arg2);
1376   /* Note: if is_quoted should be true, we snuff out quote here
1377      anyway.  */
1378   copy[p - saved_arg2] = '\000';
1379   /* Set argptr to skip over the name.  */
1380   *argptr = (*p == '\'') ? p + 1 : p;
1381
1382   /* Look up entire name */
1383   sym = lookup_symbol (copy, 0, VAR_DOMAIN, 0);
1384   if (sym)
1385     return symbol_found (funfirstline, canonical, copy, sym, NULL);
1386
1387   /* Couldn't find any interpretation as classes/namespaces, so give
1388      up.  The quotes are important if copy is empty.  */
1389   if (not_found_ptr)
1390     *not_found_ptr = 1;
1391   cplusplus_error (saved_arg,
1392                    "Can't find member of namespace, class, struct, or union named \"%s\"\n",
1393                    copy);
1394 }
1395
1396 /* Next come some helper functions for decode_compound.  */
1397
1398 /* Return the symbol corresponding to the substring of *ARGPTR ending
1399    at P, allowing whitespace.  Also, advance *ARGPTR past the symbol
1400    name in question, the compound object separator ("::" or "."), and
1401    whitespace.  Note that *ARGPTR is changed whether or not the
1402    lookup_symbol call finds anything (i.e we return NULL).  As an
1403    example, say ARGPTR is "AAA::inA::fun" and P is "::inA::fun".  */
1404
1405 static struct symbol *
1406 lookup_prefix_sym (char **argptr, char *p)
1407 {
1408   char *p1;
1409   char *copy;
1410
1411   /* Extract the class name.  */
1412   p1 = p;
1413   while (p != *argptr && p[-1] == ' ')
1414     --p;
1415   copy = (char *) alloca (p - *argptr + 1);
1416   memcpy (copy, *argptr, p - *argptr);
1417   copy[p - *argptr] = 0;
1418
1419   /* Discard the class name from the argptr.  */
1420   p = p1 + (p1[0] == ':' ? 2 : 1);
1421   while (*p == ' ' || *p == '\t')
1422     p++;
1423   *argptr = p;
1424
1425   /* At this point p1->"::inA::fun", p->"inA::fun" copy->"AAA",
1426      argptr->"inA::fun" */
1427
1428   return lookup_symbol (copy, 0, STRUCT_DOMAIN, 0);
1429 }
1430
1431 /* This finds the method COPY in the class whose type is T and whose
1432    symbol is SYM_CLASS.  */
1433
1434 static struct symtabs_and_lines
1435 find_method (int funfirstline, char ***canonical, char *saved_arg,
1436              char *copy, struct type *t, struct symbol *sym_class, int *not_found_ptr)
1437 {
1438   struct symtabs_and_lines values;
1439   struct symbol *sym = NULL;
1440   int i1;       /*  Counter for the symbol array.  */
1441   struct symbol **sym_arr =  alloca (total_number_of_methods (t)
1442                                      * sizeof (struct symbol *));
1443
1444   /* Find all methods with a matching name, and put them in
1445      sym_arr.  */
1446
1447   i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr);
1448
1449   if (i1 == 1)
1450     {
1451       /* There is exactly one field with that name.  */
1452       sym = sym_arr[0];
1453
1454       if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
1455         {
1456           values.sals = (struct symtab_and_line *)
1457             xmalloc (sizeof (struct symtab_and_line));
1458           values.nelts = 1;
1459           values.sals[0] = find_function_start_sal (sym,
1460                                                     funfirstline);
1461         }
1462       else
1463         {
1464           values.sals = NULL;
1465           values.nelts = 0;
1466         }
1467       return values;
1468     }
1469   if (i1 > 0)
1470     {
1471       /* There is more than one field with that name
1472          (overloaded).  Ask the user which one to use.  */
1473       return decode_line_2 (sym_arr, i1, funfirstline, canonical);
1474     }
1475   else
1476     {
1477       char *tmp;
1478
1479       if (is_operator_name (copy))
1480         {
1481           tmp = (char *) alloca (strlen (copy + 3) + 9);
1482           strcpy (tmp, "operator ");
1483           strcat (tmp, copy + 3);
1484         }
1485       else
1486         tmp = copy;
1487       if (not_found_ptr)
1488         *not_found_ptr = 1;
1489       if (tmp[0] == '~')
1490         cplusplus_error (saved_arg,
1491                          "the class `%s' does not have destructor defined\n",
1492                          SYMBOL_PRINT_NAME (sym_class));
1493       else
1494         cplusplus_error (saved_arg,
1495                          "the class %s does not have any method named %s\n",
1496                          SYMBOL_PRINT_NAME (sym_class), tmp);
1497     }
1498 }
1499
1500 \f
1501
1502 /* Return the symtab associated to the filename given by the substring
1503    of *ARGPTR ending at P, and advance ARGPTR past that filename.  If
1504    NOT_FOUND_PTR is not null and the source file is not found, store
1505    boolean true at the location pointed to and do not issue an
1506    error message.  */
1507
1508 static struct symtab *
1509 symtab_from_filename (char **argptr, char *p, int is_quote_enclosed, 
1510                       int *not_found_ptr)
1511 {
1512   char *p1;
1513   char *copy;
1514   struct symtab *file_symtab;
1515   
1516   p1 = p;
1517   while (p != *argptr && p[-1] == ' ')
1518     --p;
1519   if ((*p == '"') && is_quote_enclosed)
1520     --p;
1521   copy = (char *) alloca (p - *argptr + 1);
1522   memcpy (copy, *argptr, p - *argptr);
1523   /* It may have the ending quote right after the file name.  */
1524   if (is_quote_enclosed && copy[p - *argptr - 1] == '"')
1525     copy[p - *argptr - 1] = 0;
1526   else
1527     copy[p - *argptr] = 0;
1528
1529   /* Find that file's data.  */
1530   file_symtab = lookup_symtab (copy);
1531   if (file_symtab == 0)
1532     {
1533       if (not_found_ptr)
1534         *not_found_ptr = 1;
1535       if (!have_full_symbols () && !have_partial_symbols ())
1536         throw_error (NOT_FOUND_ERROR,
1537                      _("No symbol table is loaded.  Use the \"file\" command."));
1538       throw_error (NOT_FOUND_ERROR, _("No source file named %s."), copy);
1539     }
1540
1541   /* Discard the file name from the arg.  */
1542   p = p1 + 1;
1543   while (*p == ' ' || *p == '\t')
1544     p++;
1545   *argptr = p;
1546
1547   return file_symtab;
1548 }
1549
1550 \f
1551
1552 /* This decodes a line where the argument is all digits (possibly
1553    preceded by a sign).  Q should point to the end of those digits;
1554    the other arguments are as usual.  */
1555
1556 static struct symtabs_and_lines
1557 decode_all_digits (char **argptr, struct symtab *default_symtab,
1558                    int default_line, char ***canonical,
1559                    struct symtab *file_symtab, char *q)
1560
1561 {
1562   struct symtabs_and_lines values;
1563   struct symtab_and_line val;
1564
1565   enum sign
1566     {
1567       none, plus, minus
1568     }
1569   sign = none;
1570
1571   /* We might need a canonical line spec if no file was specified.  */
1572   int need_canonical = (file_symtab == NULL) ? 1 : 0;
1573
1574   init_sal (&val);
1575
1576   /* This is where we need to make sure that we have good defaults.
1577      We must guarantee that this section of code is never executed
1578      when we are called with just a function name, since
1579      set_default_source_symtab_and_line uses
1580      select_source_symtab that calls us with such an argument.  */
1581
1582   if (file_symtab == 0 && default_symtab == 0)
1583     {
1584       /* Make sure we have at least a default source file.  */
1585       set_default_source_symtab_and_line ();
1586       initialize_defaults (&default_symtab, &default_line);
1587     }
1588
1589   if (**argptr == '+')
1590     sign = plus, (*argptr)++;
1591   else if (**argptr == '-')
1592     sign = minus, (*argptr)++;
1593   val.line = atoi (*argptr);
1594   switch (sign)
1595     {
1596     case plus:
1597       if (q == *argptr)
1598         val.line = 5;
1599       if (file_symtab == 0)
1600         val.line = default_line + val.line;
1601       break;
1602     case minus:
1603       if (q == *argptr)
1604         val.line = 15;
1605       if (file_symtab == 0)
1606         val.line = default_line - val.line;
1607       else
1608         val.line = 1;
1609       break;
1610     case none:
1611       break;            /* No need to adjust val.line.  */
1612     }
1613
1614   while (*q == ' ' || *q == '\t')
1615     q++;
1616   *argptr = q;
1617   if (file_symtab == 0)
1618     file_symtab = default_symtab;
1619
1620   /* It is possible that this source file has more than one symtab, 
1621      and that the new line number specification has moved us from the
1622      default (in file_symtab) to a new one.  */
1623   val.symtab = find_line_symtab (file_symtab, val.line, NULL, NULL);
1624   if (val.symtab == 0)
1625     val.symtab = file_symtab;
1626
1627   val.pc = 0;
1628   values.sals = (struct symtab_and_line *)
1629     xmalloc (sizeof (struct symtab_and_line));
1630   values.sals[0] = val;
1631   values.nelts = 1;
1632   if (need_canonical)
1633     build_canonical_line_spec (values.sals, NULL, canonical);
1634   values.sals[0].explicit_line = 1;
1635   return values;
1636 }
1637
1638 \f
1639
1640 /* Decode a linespec starting with a dollar sign.  */
1641
1642 static struct symtabs_and_lines
1643 decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
1644                char ***canonical, struct symtab *file_symtab)
1645 {
1646   LONGEST valx;
1647   int index = 0;
1648   int need_canonical = 0;
1649   struct symtabs_and_lines values;
1650   struct symtab_and_line val;
1651   char *p;
1652   struct symbol *sym;
1653   struct minimal_symbol *msymbol;
1654
1655   p = (copy[1] == '$') ? copy + 2 : copy + 1;
1656   while (*p >= '0' && *p <= '9')
1657     p++;
1658   if (!*p)              /* Reached end of token without hitting non-digit.  */
1659     {
1660       /* We have a value history reference.  */
1661       struct value *val_history;
1662       sscanf ((copy[1] == '$') ? copy + 2 : copy + 1, "%d", &index);
1663       val_history = access_value_history ((copy[1] == '$') ? -index : index);
1664       if (TYPE_CODE (value_type (val_history)) != TYPE_CODE_INT)
1665         error (_("History values used in line specs must have integer values."));
1666       valx = value_as_long (val_history);
1667     }
1668   else
1669     {
1670       /* Not all digits -- may be user variable/function or a
1671          convenience variable.  */
1672
1673       /* Look up entire name as a symbol first.  */
1674       sym = lookup_symbol (copy, 0, VAR_DOMAIN, 0);
1675       file_symtab = (struct symtab *) NULL;
1676       need_canonical = 1;
1677       /* Symbol was found --> jump to normal symbol processing.  */
1678       if (sym)
1679         return symbol_found (funfirstline, canonical, copy, sym, NULL);
1680
1681       /* If symbol was not found, look in minimal symbol tables.  */
1682       msymbol = lookup_minimal_symbol (copy, NULL, NULL);
1683       /* Min symbol was found --> jump to minsym processing.  */
1684       if (msymbol)
1685         return minsym_found (funfirstline, msymbol);
1686
1687       /* Not a user variable or function -- must be convenience variable.  */
1688       if (!get_internalvar_integer (lookup_internalvar (copy + 1), &valx))
1689         error (_("Convenience variables used in line specs must have integer values."));
1690     }
1691
1692   init_sal (&val);
1693
1694   /* Either history value or convenience value from above, in valx.  */
1695   val.symtab = file_symtab ? file_symtab : default_symtab;
1696   val.line = valx;
1697   val.pc = 0;
1698
1699   values.sals = (struct symtab_and_line *) xmalloc (sizeof val);
1700   values.sals[0] = val;
1701   values.nelts = 1;
1702
1703   if (need_canonical)
1704     build_canonical_line_spec (values.sals, NULL, canonical);
1705
1706   return values;
1707 }
1708
1709 \f
1710
1711 /* Decode a linespec that's a variable.  If FILE_SYMTAB is non-NULL,
1712    look in that symtab's static variables first.  If NOT_FOUND_PTR is not NULL and
1713    the function cannot be found, store boolean true in the location pointed to
1714    and do not issue an error message.  */ 
1715
1716 static struct symtabs_and_lines
1717 decode_variable (char *copy, int funfirstline, char ***canonical,
1718                  struct symtab *file_symtab, int *not_found_ptr)
1719 {
1720   struct symbol *sym;
1721
1722   struct minimal_symbol *msymbol;
1723
1724   sym = lookup_symbol (copy,
1725                        (file_symtab
1726                         ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (file_symtab),
1727                                              STATIC_BLOCK)
1728                         : get_selected_block (0)),
1729                        VAR_DOMAIN, 0);
1730
1731   if (sym != NULL)
1732     return symbol_found (funfirstline, canonical, copy, sym, file_symtab);
1733
1734   msymbol = lookup_minimal_symbol (copy, NULL, NULL);
1735
1736   if (msymbol != NULL)
1737     return minsym_found (funfirstline, msymbol);
1738
1739   if (not_found_ptr)
1740     *not_found_ptr = 1;
1741
1742   if (!have_full_symbols ()
1743       && !have_partial_symbols ()
1744       && !have_minimal_symbols ())
1745     throw_error (NOT_FOUND_ERROR,
1746                  _("No symbol table is loaded.  Use the \"file\" command."));
1747   throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined."), copy);
1748 }
1749
1750
1751 \f
1752
1753 /* Now come some functions that are called from multiple places within
1754    decode_line_1.  */
1755
1756 /* We've found a symbol SYM to associate with our linespec; build a
1757    corresponding struct symtabs_and_lines.  */
1758
1759 static struct symtabs_and_lines
1760 symbol_found (int funfirstline, char ***canonical, char *copy,
1761               struct symbol *sym, struct symtab *file_symtab)
1762 {
1763   struct symtabs_and_lines values;
1764   
1765   if (SYMBOL_CLASS (sym) == LOC_BLOCK)
1766     {
1767       /* Arg is the name of a function */
1768       values.sals = (struct symtab_and_line *)
1769         xmalloc (sizeof (struct symtab_and_line));
1770       values.sals[0] = find_function_start_sal (sym, funfirstline);
1771       values.nelts = 1;
1772
1773       /* Don't use the SYMBOL_LINE; if used at all it points to
1774          the line containing the parameters or thereabouts, not
1775          the first line of code.  */
1776
1777       /* We might need a canonical line spec if it is a static
1778          function.  */
1779       if (file_symtab == 0)
1780         {
1781           struct blockvector *bv = BLOCKVECTOR (SYMBOL_SYMTAB (sym));
1782           struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1783           if (lookup_block_symbol (b, copy, NULL, VAR_DOMAIN) != NULL)
1784             build_canonical_line_spec (values.sals, copy, canonical);
1785         }
1786       return values;
1787     }
1788   else
1789     {
1790       if (funfirstline)
1791         error (_("\"%s\" is not a function"), copy);
1792       else if (SYMBOL_LINE (sym) != 0)
1793         {
1794           /* We know its line number.  */
1795           values.sals = (struct symtab_and_line *)
1796             xmalloc (sizeof (struct symtab_and_line));
1797           values.nelts = 1;
1798           memset (&values.sals[0], 0, sizeof (values.sals[0]));
1799           values.sals[0].symtab = SYMBOL_SYMTAB (sym);
1800           values.sals[0].line = SYMBOL_LINE (sym);
1801           return values;
1802         }
1803       else
1804         /* This can happen if it is compiled with a compiler which doesn't
1805            put out line numbers for variables.  */
1806         /* FIXME: Shouldn't we just set .line and .symtab to zero
1807            and return?  For example, "info line foo" could print
1808            the address.  */
1809         error (_("Line number not known for symbol \"%s\""), copy);
1810     }
1811 }
1812
1813 /* We've found a minimal symbol MSYMBOL to associate with our
1814    linespec; build a corresponding struct symtabs_and_lines.  */
1815
1816 static struct symtabs_and_lines
1817 minsym_found (int funfirstline, struct minimal_symbol *msymbol)
1818 {
1819   struct objfile *objfile = msymbol_objfile (msymbol);
1820   struct gdbarch *gdbarch = get_objfile_arch (objfile);
1821   struct symtabs_and_lines values;
1822   CORE_ADDR pc;
1823
1824   values.sals = (struct symtab_and_line *)
1825     xmalloc (sizeof (struct symtab_and_line));
1826   values.sals[0] = find_pc_sect_line (SYMBOL_VALUE_ADDRESS (msymbol),
1827                                       (struct obj_section *) 0, 0);
1828   values.sals[0].section = SYMBOL_OBJ_SECTION (msymbol);
1829
1830   /* The minimal symbol might point to a function descriptor;
1831      resolve it to the actual code address instead.  */
1832   pc = gdbarch_convert_from_func_ptr_addr (gdbarch,
1833                                            values.sals[0].pc,
1834                                            &current_target);
1835   if (pc != values.sals[0].pc)
1836     values.sals[0] = find_pc_sect_line (pc, NULL, 0);
1837
1838   if (funfirstline)
1839     {
1840       struct symtab_and_line sal;
1841
1842       values.sals[0].pc = find_function_start_pc (gdbarch,
1843                                                   values.sals[0].pc,
1844                                                   values.sals[0].section);
1845
1846       sal = find_pc_sect_line (values.sals[0].pc, values.sals[0].section, 0);
1847
1848       /* Check if SKIP_PROLOGUE left us in mid-line, and the next
1849          line is still part of the same function.  If there is no
1850          line information here, sal.pc will be the passed in PC.  */
1851       if (sal.pc != values.sals[0].pc
1852           && (lookup_minimal_symbol_by_pc_section (values.sals[0].pc,
1853                                                    values.sals[0].section)
1854               == lookup_minimal_symbol_by_pc_section (sal.end,
1855                                                       values.sals[0].section)))
1856         /* Recalculate the line number (might not be N+1).  */
1857         values.sals[0] = find_pc_sect_line (sal.end, values.sals[0].section, 0);
1858     }
1859
1860   values.nelts = 1;
1861   return values;
1862 }