xref: /dragonfly/contrib/gdb-7/gdb/linespec.c (revision c89a6c1b)
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 }
1863