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