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