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