2011-03-24 Paolo Bonzini <pbonzini@redhat.com>
[deliverable/binutils-gdb.git] / gdb / linespec.c
CommitLineData
50641945 1/* Parser for linespec for the GNU debugger, GDB.
05ff989b 2
6aba47ca 3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
0fb0cc75 4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
7b6bb8da 5 2009, 2010, 2011 Free Software Foundation, Inc.
50641945
FN
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
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
50641945
FN
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
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
50641945
FN
21
22#include "defs.h"
23#include "symtab.h"
c5f0f3d0
FN
24#include "frame.h"
25#include "command.h"
50641945
FN
26#include "symfile.h"
27#include "objfiles.h"
0378c332 28#include "source.h"
50641945 29#include "demangle.h"
c5f0f3d0
FN
30#include "value.h"
31#include "completer.h"
015a42b4 32#include "cp-abi.h"
12907978 33#include "cp-support.h"
c38da1af 34#include "parser-defs.h"
fe898f56 35#include "block.h"
d2630e69 36#include "objc-lang.h"
b9362cc7 37#include "linespec.h"
05ff989b 38#include "exceptions.h"
53c5240f 39#include "language.h"
dc67126b
NR
40#include "interps.h"
41#include "mi/mi-cmds.h"
bccdca4a 42#include "target.h"
94af9270 43#include "arch-utils.h"
c00f8484
KS
44#include <ctype.h>
45#include "cli/cli-utils.h"
50641945 46
1777feb0 47/* We share this one with symtab.c, but it is not exported widely. */
50641945
FN
48
49extern char *operator_chars (char *, char **);
50
1777feb0 51/* Prototypes for local functions. */
50641945 52
44fe14ab
DC
53static void initialize_defaults (struct symtab **default_symtab,
54 int *default_line);
55
56static struct symtabs_and_lines decode_indirect (char **argptr);
57
0960f083
DC
58static char *locate_first_half (char **argptr, int *is_quote_enclosed);
59
d2630e69
AF
60static struct symtabs_and_lines decode_objc (char **argptr,
61 int funfirstline,
62 struct symtab *file_symtab,
63 char ***canonical,
64 char *saved_arg);
65
614b3b14
DC
66static struct symtabs_and_lines decode_compound (char **argptr,
67 int funfirstline,
68 char ***canonical,
69 char *saved_arg,
f3a5f1de
KO
70 char *p,
71 int *not_found_ptr);
614b3b14 72
93d91629
DC
73static struct symbol *lookup_prefix_sym (char **argptr, char *p);
74
4224873a
DC
75static struct symtabs_and_lines find_method (int funfirstline,
76 char ***canonical,
77 char *saved_arg,
78 char *copy,
79 struct type *t,
f3a5f1de
KO
80 struct symbol *sym_class,
81 int *not_found_ptr);
4224873a 82
c25c4a8b
JK
83static void cplusplus_error (const char *name, const char *fmt, ...)
84 ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF (2, 3);
50641945
FN
85
86static int total_number_of_methods (struct type *type);
87
53c5240f
PA
88static int find_methods (struct type *, char *,
89 enum language, struct symbol **);
50641945 90
aee8d8ba 91static int add_matching_methods (int method_counter, struct type *t,
53c5240f 92 enum language language,
aee8d8ba
DC
93 struct symbol **sym_arr);
94
95static int add_constructors (int method_counter, struct type *t,
53c5240f 96 enum language language,
aee8d8ba
DC
97 struct symbol **sym_arr);
98
50641945
FN
99static void build_canonical_line_spec (struct symtab_and_line *,
100 char *, char ***);
101
102static char *find_toplevel_char (char *s, char c);
103
889f28e2
AF
104static int is_objc_method_format (const char *s);
105
50641945
FN
106static struct symtabs_and_lines decode_line_2 (struct symbol *[],
107 int, int, char ***);
108
f3c39e76 109static struct symtab *symtab_from_filename (char **argptr,
68219205
JJ
110 char *p, int is_quote_enclosed,
111 int *not_found_ptr);
f3c39e76 112
84fba31b
DC
113static struct
114symtabs_and_lines decode_all_digits (char **argptr,
115 struct symtab *default_symtab,
116 int default_line,
117 char ***canonical,
88d262ca 118 struct symtab *file_symtab,
84fba31b
DC
119 char *q);
120
14e91ac5
DC
121static struct symtabs_and_lines decode_dollar (char *copy,
122 int funfirstline,
123 struct symtab *default_symtab,
124 char ***canonical,
88d262ca 125 struct symtab *file_symtab);
14e91ac5 126
0f5238ed
TT
127static int decode_label (char *copy, char ***canonical,
128 struct symtabs_and_lines *result);
129
bca02a8a
DC
130static struct symtabs_and_lines decode_variable (char *copy,
131 int funfirstline,
132 char ***canonical,
68219205
JJ
133 struct symtab *file_symtab,
134 int *not_found_ptr);
bca02a8a 135
413dad4d
DC
136static struct
137symtabs_and_lines symbol_found (int funfirstline,
138 char ***canonical,
139 char *copy,
140 struct symbol *sym,
2570f2b7 141 struct symtab *file_symtab);
413dad4d
DC
142
143static struct
144symtabs_and_lines minsym_found (int funfirstline,
145 struct minimal_symbol *msymbol);
146
1777feb0 147/* Helper functions. */
50641945 148
255e7dbf
AC
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. */
50641945 152
c25c4a8b 153static void
255e7dbf 154cplusplus_error (const char *name, const char *fmt, ...)
50641945 155{
255e7dbf 156 struct ui_file *tmp_stream;
f3a5f1de 157 char *message;
e0881a8e 158
255e7dbf
AC
159 tmp_stream = mem_fileopen ();
160 make_cleanup_ui_file_delete (tmp_stream);
161
162 {
163 va_list args;
e0881a8e 164
255e7dbf
AC
165 va_start (args, fmt);
166 vfprintf_unfiltered (tmp_stream, fmt, args);
167 va_end (args);
168 }
169
50641945
FN
170 while (*name == '\'')
171 name++;
255e7dbf
AC
172 fprintf_unfiltered (tmp_stream,
173 ("Hint: try '%s<TAB> or '%s<ESC-?>\n"
174 "(Note leading single quote.)"),
175 name, name);
f3a5f1de 176
759ef836
PA
177 message = ui_file_xstrdup (tmp_stream, NULL);
178 make_cleanup (xfree, message);
179 throw_error (NOT_FOUND_ERROR, "%s", message);
50641945
FN
180}
181
182/* Return the number of methods described for TYPE, including the
1777feb0 183 methods from types it derives from. This can't be done in the symbol
50641945
FN
184 reader because the type of the baseclass might still be stubbed
185 when the definition of the derived class is parsed. */
186
187static int
188total_number_of_methods (struct type *type)
189{
190 int n;
191 int count;
192
193 CHECK_TYPEDEF (type);
b4ba55a1 194 if (! HAVE_CPLUS_STRUCT (type))
50641945
FN
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
211static int
53c5240f
PA
212find_methods (struct type *t, char *name, enum language language,
213 struct symbol **sym_arr)
50641945
FN
214{
215 int i1 = 0;
216 int ibase;
50641945 217 char *class_name = type_name_no_tag (t);
c00f8484
KS
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);
50641945
FN
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
53c5240f 236 && (lookup_symbol_in_language (class_name, (struct block *) NULL,
2570f2b7 237 STRUCT_DOMAIN, language, (int *) NULL)))
50641945
FN
238 {
239 int method_counter;
5c717440 240 int name_len = strlen (name);
50641945 241
8bd1f2c6 242 CHECK_TYPEDEF (t);
50641945
FN
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 {
50641945
FN
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
13b57657 265 if (strcmp_iw (name, method_name) == 0)
50641945 266 /* Find all the overloaded methods with that name. */
53c5240f 267 i1 += add_matching_methods (method_counter, t, language,
aee8d8ba 268 sym_arr + i1);
5c717440
DJ
269 else if (strncmp (class_name, name, name_len) == 0
270 && (class_name[name_len] == '\0'
271 || class_name[name_len] == '<'))
53c5240f 272 i1 += add_constructors (method_counter, t, language,
aee8d8ba 273 sym_arr + i1);
50641945
FN
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++)
53c5240f
PA
290 i1 += find_methods (TYPE_BASECLASS (t, ibase), name,
291 language, sym_arr + i1);
50641945 292
c00f8484 293 do_cleanups (cleanup);
50641945
FN
294 return i1;
295}
296
aee8d8ba
DC
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
301static int
302add_matching_methods (int method_counter, struct type *t,
53c5240f 303 enum language language, struct symbol **sym_arr)
aee8d8ba
DC
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);
53c5240f 330
53c5240f 331 sym_arr[i1] = lookup_symbol_in_language (phys_name,
aee8d8ba 332 NULL, VAR_DOMAIN,
53c5240f 333 language,
2570f2b7 334 (int *) NULL);
aee8d8ba
DC
335 if (sym_arr[i1])
336 i1++;
337 else
338 {
339 /* This error message gets printed, but the method
1777feb0 340 still seems to be found.
aee8d8ba
DC
341 fputs_filtered("(Cannot find method ", gdb_stdout);
342 fprintf_symbol_filtered (gdb_stdout, phys_name,
1777feb0
MS
343 language_cplus,
344 DMGL_PARAMS | DMGL_ANSI);
aee8d8ba
DC
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
357static int
358add_constructors (int method_counter, struct type *t,
53c5240f 359 enum language language, struct symbol **sym_arr)
aee8d8ba
DC
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;
53c5240f 375
aee8d8ba
DC
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. */
53c5240f 388 sym_arr[i1] = lookup_symbol_in_language (phys_name,
aee8d8ba 389 NULL, VAR_DOMAIN,
53c5240f 390 language,
2570f2b7 391 (int *) NULL);
aee8d8ba
DC
392 if (sym_arr[i1])
393 i1++;
394 }
395
396 return i1;
397}
398
50641945
FN
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
406static void
407build_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
8120c9d5
EZ
441 strings. Also, ignore the char within a template name, like a ','
442 within foo<int, int>. */
443
50641945
FN
444static char *
445find_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. */
a04257e6 450 int depth = 0; /* Number of unclosed parens we've seen. */
50641945
FN
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;
8120c9d5 466 else if (*scan == '(' || *scan == '<')
50641945 467 depth++;
8120c9d5 468 else if ((*scan == ')' || *scan == '>') && depth > 0)
50641945
FN
469 depth--;
470 }
471
472 return 0;
473}
474
889f28e2 475/* Determines if the gives string corresponds to an Objective-C method
1777feb0 476 representation, such as -[Foo bar:] or +[Foo bar]. Objective-C symbols
889f28e2
AF
477 are allowed to have spaces and parentheses in them. */
478
479static int
480is_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
50641945
FN
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
499static struct symtabs_and_lines
500decode_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;
717d2f5a 510 const char *select_mode = multiple_symbols_select_mode ();
50641945 511
717d2f5a 512 if (select_mode == multiple_symbols_cancel)
3e43a32a
MS
513 error (_("canceled because the command is ambiguous\n"
514 "See set/show multiple-symbol."));
717d2f5a 515
50641945
FN
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));
b8c9b27d 520 old_chain = make_cleanup (xfree, return_values.sals);
50641945
FN
521
522 if (canonical)
523 {
524 canonical_arr = (char **) xmalloc (nelts * sizeof (char *));
b8c9b27d 525 make_cleanup (xfree, canonical_arr);
50641945
FN
526 memset (canonical_arr, 0, nelts * sizeof (char *));
527 *canonical = canonical_arr;
528 }
529
530 i = 0;
50641945
FN
531 while (i < nelts)
532 {
a04257e6 533 init_sal (&return_values.sals[i]); /* Initialize to zeroes. */
fe39c653 534 init_sal (&values.sals[i]);
50641945 535 if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
717d2f5a 536 values.sals[i] = find_function_start_sal (sym_arr[i], funfirstline);
50641945
FN
537 i++;
538 }
539
717d2f5a
JB
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). */
dc67126b
NR
542 if (select_mode == multiple_symbols_all
543 || ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ())))
717d2f5a
JB
544 args = "1";
545 else
50641945 546 {
717d2f5a
JB
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
3e43a32a
MS
560 printf_unfiltered (_("[%d] %s at ?FILE:%d [No symtab? "
561 "Probably broken debug info...]\n"),
717d2f5a
JB
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");
50641945 578 }
50641945
FN
579
580 if (args == 0 || *args == 0)
e2e0b3e5 581 error_no_arg (_("one or more choice numbers"));
50641945
FN
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')
8a3fe4f8 592 error (_("Arguments must be choice numbers."));
50641945
FN
593
594 num = atoi (args);
595
596 if (num == 0)
8a3fe4f8 597 error (_("canceled"));
50641945
FN
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 {
3567439c 606 symname = SYMBOL_LINKAGE_NAME (sym_arr[i]);
1b36a34b 607 canonical_arr[i] = xstrdup (symname);
50641945
FN
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 {
a3f17187 620 printf_unfiltered (_("No choice number %d.\n"), num);
50641945
FN
621 }
622 else
623 {
624 num -= 2;
625 if (values.sals[num].pc)
626 {
627 if (canonical_arr)
628 {
3567439c 629 symname = SYMBOL_LINKAGE_NAME (sym_arr[num]);
b8c9b27d 630 make_cleanup (xfree, symname);
1b36a34b 631 canonical_arr[i] = xstrdup (symname);
50641945
FN
632 }
633 return_values.sals[i++] = values.sals[num];
634 values.sals[num].pc = 0;
635 }
636 else
637 {
3e43a32a
MS
638 printf_unfiltered (_("duplicate request for %d ignored.\n"),
639 num);
50641945
FN
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}
94af9270
KS
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 != '('. */
658static char *
659find_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}
c00f8484
KS
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
686static int
687name_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
705static char *
706keep_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
50641945 741\f
1777feb0 742/* The parser of linespec itself. */
50641945
FN
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.
0f5238ed 754 LABEL -- a label in the current scope
50641945
FN
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
1777feb0 773 line specs there if necessary. Currently overloaded member functions and
50641945 774 line numbers or static functions without a filename yield a canonical
1777feb0 775 line spec. The array and the line spec strings are allocated on the heap,
50641945
FN
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.
68219205
JJ
780 Also, the line number returned may be invalid.
781
3e43a32a
MS
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. */
50641945
FN
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
792struct symtabs_and_lines
793decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
68219205 794 int default_line, char ***canonical, int *not_found_ptr)
50641945 795{
f3c39e76 796 char *p;
614b3b14 797 char *q;
88d262ca
DC
798 /* If a file name is specified, this is its symtab. */
799 struct symtab *file_symtab = NULL;
50641945 800
50641945 801 char *copy;
636b1a6d
DC
802 /* This says whether or not something in *ARGPTR is quoted with
803 completer_quotes (i.e. with single quotes). */
e325fb69 804 int is_quoted;
0e0b460e 805 /* Is *ARGPTR is enclosed in double quotes? */
50641945 806 int is_quote_enclosed;
d2630e69 807 int is_objc_method = 0;
50641945 808 char *saved_arg = *argptr;
791dfb64
DJ
809 /* If IS_QUOTED, the end of the quoted bit. */
810 char *end_quote = NULL;
0e0b460e
KS
811 /* The "first half" of the linespec. */
812 char *first_half;
50641945 813
68219205
JJ
814 if (not_found_ptr)
815 *not_found_ptr = 0;
816
50641945
FN
817 /* Defaults have defaults. */
818
44fe14ab
DC
819 initialize_defaults (&default_symtab, &default_line);
820
a04257e6 821 /* See if arg is *PC. */
50641945 822
e325fb69
MS
823 if (**argptr == '*')
824 return decode_indirect (argptr);
5f01dbc0 825
e325fb69
MS
826 is_quoted = (strchr (get_gdb_completer_quote_characters (),
827 **argptr) != NULL);
50641945 828
791dfb64
DJ
829 if (is_quoted)
830 end_quote = skip_quoted (*argptr);
50641945 831
0960f083
DC
832 /* Check to see if it's a multipart linespec (with colons or
833 periods). */
50641945 834
17763fd9
EZ
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
1777feb0
MS
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. */
50641945 840
0e0b460e 841 first_half = p = locate_first_half (argptr, &is_quote_enclosed);
50641945 842
d2630e69
AF
843 /* Check if this is an Objective-C method (anything that starts with
844 a '+' or '-' and a '['). */
889f28e2 845 if (is_objc_method_format (p))
94af9270 846 is_objc_method = 1;
d2630e69
AF
847
848 /* Check if the symbol could be an Objective-C selector. */
849
850 {
851 struct symtabs_and_lines values;
e0881a8e 852
d2630e69
AF
853 values = decode_objc (argptr, funfirstline, NULL,
854 canonical, saved_arg);
855 if (values.sals != NULL)
856 return values;
857 }
858
0960f083 859 /* Does it look like there actually were two parts? */
50641945 860
791dfb64 861 if (p[0] == ':' || p[0] == '.')
50641945 862 {
17763fd9
EZ
863 /* Is it a C++ or Java compound data structure?
864 The check on p[1] == ':' is capturing the case of "::",
1777feb0 865 since p[0]==':' was checked above.
17763fd9
EZ
866 Note that the call to decode_compound does everything
867 for us, including the lookup on the symbol table, so we
1777feb0 868 can return now. */
17763fd9 869
50641945 870 if (p[0] == '.' || p[1] == ':')
791dfb64 871 {
94af9270
KS
872 struct symtabs_and_lines values;
873
874 if (is_quote_enclosed)
875 ++saved_arg;
876 values = decode_compound (argptr, funfirstline, canonical,
791dfb64 877 saved_arg, p, not_found_ptr);
94af9270
KS
878 if (is_quoted && **argptr == '\'')
879 *argptr = *argptr + 1;
880 return values;
791dfb64 881 }
50641945 882
94af9270
KS
883 /* No, the first part is a filename; set file_symtab to be that file's
884 symtab. Also, move argptr past the filename. */
50641945 885
94af9270
KS
886 file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed,
887 not_found_ptr);
50641945 888
94af9270
KS
889 /* Check for single quotes on the non-filename part. */
890 if (!is_quoted)
50641945 891 {
94af9270
KS
892 is_quoted = (**argptr
893 && strchr (get_gdb_completer_quote_characters (),
894 **argptr) != NULL);
895 if (is_quoted)
896 end_quote = skip_quoted (*argptr);
50641945 897 }
50641945 898 }
50641945 899
bc882aa9 900 /* file_symtab is specified file's symtab, or 0 if no file specified.
50641945
FN
901 arg no longer contains the file name. */
902
0e0b460e
KS
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
a04257e6 914 /* Check whether arg is all digits (and sign). */
50641945
FN
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 == ','))
84fba31b
DC
923 /* We found a token consisting of all digits -- at least one digit. */
924 return decode_all_digits (argptr, default_symtab, default_line,
88d262ca 925 canonical, file_symtab, q);
50641945
FN
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
a04257e6
DC
930 if (**argptr == '$') /* May be a convenience variable. */
931 /* One or two $ chars possible. */
932 p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1));
50641945
FN
933 else if (is_quoted)
934 {
791dfb64 935 p = end_quote;
50641945 936 if (p[-1] != '\'')
8a3fe4f8 937 error (_("Unmatched single quote."));
50641945 938 }
d2630e69
AF
939 else if (is_objc_method)
940 {
1777feb0 941 /* allow word separators in method names for Obj-C. */
d2630e69
AF
942 p = skip_quoted_chars (*argptr, NULL, "");
943 }
50641945
FN
944 else
945 {
946 p = skip_quoted (*argptr);
947 }
948
c00f8484
KS
949 /* Keep any important naming information. */
950 p = keep_name_info (p);
94af9270 951
50641945
FN
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]
c5f0f3d0 958 && strchr (get_gdb_completer_quote_characters (), copy[0]) != NULL)
50641945
FN
959 {
960 copy[p - *argptr - 1] = '\0';
961 copy++;
962 }
791dfb64
DJ
963 else if (is_quoted)
964 copy[p - *argptr - 1] = '\0';
50641945
FN
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
a04257e6 971 be history value, or it may be a convenience variable. */
50641945
FN
972
973 if (*copy == '$')
14e91ac5 974 return decode_dollar (copy, funfirstline, default_symtab,
88d262ca 975 canonical, file_symtab);
50641945 976
0f5238ed
TT
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
50641945
FN
987 /* Look up that token as a variable.
988 If file specified, use that file's per-file block to start with. */
989
68219205
JJ
990 return decode_variable (copy, funfirstline, canonical,
991 file_symtab, not_found_ptr);
413dad4d 992}
50641945 993
44fe14ab
DC
994\f
995
614b3b14
DC
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
94af9270
KS
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.
614b3b14
DC
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. */
44fe14ab
DC
1018
1019/* First, some functions to initialize stuff at the beggining of the
1020 function. */
1021
1022static void
1023initialize_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
1777feb0 1029 us back! */
44fe14ab
DC
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
1042static struct symtabs_and_lines
1043decode_indirect (char **argptr)
1044{
1045 struct symtabs_and_lines values;
1046 CORE_ADDR pc;
1047
1048 (*argptr)++;
63ffa6ee 1049 pc = value_as_address (parse_to_comma_and_eval (argptr));
44fe14ab
DC
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);
ed0616c6 1058 values.sals[0].explicit_pc = 1;
44fe14ab
DC
1059
1060 return values;
1061}
413dad4d
DC
1062
1063\f
1064
0960f083
DC
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
17763fd9
EZ
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. */
0960f083
DC
1071
1072static char *
1073locate_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
a04257e6 1089 /* Temporarily zap out second half to not confuse the code below.
1777feb0 1090 This is undone below. Do not change ii!! */
0960f083
DC
1091 if (has_comma)
1092 {
1093 *ii = '\0';
1094 }
1095
a04257e6
DC
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 <>. */
0960f083
DC
1099
1100 p = *argptr;
1101 if (p[0] == '"')
1102 {
1103 *is_quote_enclosed = 1;
1104 (*argptr)++;
1105 p++;
1106 }
1107 else
0e0b460e
KS
1108 {
1109 *is_quote_enclosed = 0;
1110 if (strchr (get_gdb_completer_quote_characters (), *p))
1111 {
1112 ++(*argptr);
1113 ++p;
1114 }
1115 }
0960f083
DC
1116 for (; *p; p++)
1117 {
1118 if (p[0] == '<')
1119 {
1120 char *temp_end = find_template_name_end (p);
e0881a8e 1121
0960f083 1122 if (!temp_end)
8a3fe4f8 1123 error (_("malformed template specification in command"));
0960f083
DC
1124 p = temp_end;
1125 }
c00f8484
KS
1126
1127 if (p[0] == '(')
1128 p = find_method_overload_end (p);
1129
d2630e69 1130 /* Check for a colon and a plus or minus and a [ (which
1777feb0 1131 indicates an Objective-C method). */
889f28e2 1132 if (is_objc_method_format (p))
d2630e69
AF
1133 {
1134 break;
1135 }
a04257e6
DC
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. */
0960f083
DC
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;
a04257e6 1146 if (p[0] == '.' && strchr (p, ':') == NULL)
0960f083 1147 {
a04257e6 1148 /* Java qualified method. Find the *last* '.', since the
94af9270
KS
1149 others are package qualifiers. Stop at any open parenthesis
1150 which might provide overload information. */
1151 for (p1 = p; *p1 && *p1 != '('; p1++)
0960f083
DC
1152 {
1153 if (*p1 == '.')
1154 p = p1;
1155 }
1156 break;
1157 }
1158 }
1159 while (p[0] == ' ' || p[0] == '\t')
1160 p++;
1161
a04257e6 1162 /* If the closing double quote was left at the end, remove it. */
0960f083
DC
1163 if (*is_quote_enclosed)
1164 {
1165 char *closing_quote = strchr (p - 1, '"');
e0881a8e 1166
0960f083
DC
1167 if (closing_quote && closing_quote[1] == '\0')
1168 *closing_quote = '\0';
1169 }
1170
a04257e6
DC
1171 /* Now that we've safely parsed the first half, put back ',' so
1172 outer layers can see it. */
0960f083
DC
1173 if (has_comma)
1174 *ii = ',';
1175
1176 return p;
1177}
1178
1179\f
1180
d2630e69
AF
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
1188struct symtabs_and_lines
1189decode_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;
d2630e69 1195 struct block *block = NULL;
15550d6b
MK
1196 unsigned i1 = 0;
1197 unsigned i2 = 0;
d2630e69
AF
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
c4fc331b
AS
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
5715d26e 1215 find_imps (file_symtab, block, *argptr, NULL, &i1, &i2);
d2630e69
AF
1216
1217 if (i1 > 0)
1218 {
1777feb0
MS
1219 sym_arr = (struct symbol **)
1220 alloca ((i1 + 1) * sizeof (struct symbol *));
46be51c4 1221 sym_arr[i1] = NULL;
d2630e69 1222
5715d26e 1223 *argptr = find_imps (file_symtab, block, *argptr, sym_arr, &i1, &i2);
d2630e69
AF
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]));
3e43a32a
MS
1241 if ((sym != NULL) && strcmp (SYMBOL_LINKAGE_NAME (sym_arr[0]),
1242 SYMBOL_LINKAGE_NAME (sym)) != 0)
d2630e69 1243 {
3e43a32a
MS
1244 warning (_("debugging symbol \"%s\" does "
1245 "not match selector; ignoring"),
1246 SYMBOL_LINKAGE_NAME (sym));
d2630e69
AF
1247 sym = NULL;
1248 }
1249 }
1250
3e43a32a
MS
1251 values.sals = (struct symtab_and_line *)
1252 xmalloc (sizeof (struct symtab_and_line));
d2630e69
AF
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);
3e43a32a
MS
1259 build_canonical_line_spec (values.sals,
1260 SYMBOL_NATURAL_NAME (sym), canonical);
d2630e69
AF
1261 }
1262 else
1263 {
69368a60
UW
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;
d2630e69
AF
1277 }
1278 return values;
1279 }
1280
1281 if (i1 > 1)
1282 {
1777feb0 1283 /* More than one match. The user must choose one or more. */
d2630e69
AF
1284 return decode_line_2 (sym_arr, i2, funfirstline, canonical);
1285 }
1286
1287 return values;
1288}
1289
614b3b14 1290/* This handles C++ and Java compound data structures. P should point
17763fd9
EZ
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". */
614b3b14
DC
1294
1295static struct symtabs_and_lines
1296decode_compound (char **argptr, int funfirstline, char ***canonical,
c00f8484 1297 char *the_real_saved_arg, char *p, int *not_found_ptr)
614b3b14
DC
1298{
1299 struct symtabs_and_lines values;
93d91629 1300 char *p2;
614b3b14
DC
1301 char *saved_arg2 = *argptr;
1302 char *temp_end;
1303 struct symbol *sym;
614b3b14
DC
1304 char *copy;
1305 struct symbol *sym_class;
614b3b14 1306 struct type *t;
94af9270 1307 char *saved_java_argptr = NULL;
c00f8484
KS
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 }
614b3b14 1325
17763fd9
EZ
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
1777feb0 1329 "::" (note the condition that *argptr == p). */
614b3b14
DC
1330 if (p[0] == ':'
1331 && ((*argptr == p) || (p[-1] == ' ') || (p[-1] == '\t')))
1332 saved_arg2 += 2;
1333
87b3ede8
DC
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
c00f8484
KS
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.
87b3ede8
DC
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. */
614b3b14 1349
a04257e6 1350 p2 = p; /* Save for restart. */
17763fd9 1351
1777feb0 1352 /* This is very messy. Following the example above we have now the
17763fd9
EZ
1353 following pointers:
1354 p -> "::inA::fun"
1355 argptr -> "AAA::inA::fun
1356 saved_arg -> "AAA::inA::fun
1357 saved_arg2 -> "AAA::inA::fun
1777feb0 1358 p2 -> "::inA::fun". */
17763fd9
EZ
1359
1360 /* In the loop below, with these strings, we'll make 2 passes, each
1777feb0 1361 is marked in comments. */
17763fd9 1362
614b3b14
DC
1363 while (1)
1364 {
c00f8484
KS
1365 static char *break_characters = " \t(";
1366
a04257e6 1367 /* Move pointer up to next possible class/namespace token. */
17763fd9 1368
a04257e6 1369 p = p2 + 1; /* Restart with old value +1. */
17763fd9
EZ
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
1777feb0 1373 second colon. */
87b3ede8 1374 /* PASS2: p2->"::fun", p->":fun" */
17763fd9 1375
a04257e6 1376 /* Move pointer ahead to next double-colon. */
c00f8484
KS
1377 while (*p
1378 && strchr (break_characters, *p) == NULL
1379 && strchr (get_gdb_completer_quote_characters (), *p) == NULL)
614b3b14 1380 {
12907978
KS
1381 if (current_language->la_language == language_cplus)
1382 p += cp_validate_operator (p);
1383
614b3b14
DC
1384 if (p[0] == '<')
1385 {
1386 temp_end = find_template_name_end (p);
1387 if (!temp_end)
8a3fe4f8 1388 error (_("malformed template specification in command"));
614b3b14
DC
1389 p = temp_end;
1390 }
17763fd9
EZ
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
1777feb0
MS
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
17763fd9
EZ
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". */
1777feb0 1399 /* PASS2: we will not trigger this. */
614b3b14 1400 else if ((p[0] == ':') && (p[1] == ':'))
a04257e6 1401 break; /* Found double-colon. */
614b3b14 1402 else
c00f8484
KS
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 }
614b3b14
DC
1409 }
1410
1411 if (*p != ':')
17763fd9
EZ
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
1777feb0 1415 string, and p->""(PASS2). */
17763fd9 1416
c00f8484 1417 /* We get here if p points to one of the break characters or "" (i.e.,
1777feb0 1418 string ended). */
17763fd9
EZ
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;
87b3ede8
DC
1423 /* PASS1: at this point p->"::fun" argptr->"AAA::inA::fun",
1424 p2->"::fun". */
17763fd9
EZ
1425
1426 /* All ready for next pass through the loop. */
614b3b14
DC
1427 } /* while (1) */
1428
87b3ede8 1429
1777feb0 1430 /* Start of lookup in the symbol tables. */
87b3ede8
DC
1431
1432 /* Lookup in the symbol table the substring between argptr and
1777feb0 1433 p. Note, this call changes the value of argptr. */
87b3ede8
DC
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". */
94af9270 1460 char *a;
e0881a8e 1461
87b3ede8 1462 p = *argptr;
94af9270
KS
1463 while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p != ':'
1464 && *p != '(')
87b3ede8
DC
1465 p++;
1466 /* At this point p->"". String ended. */
12907978
KS
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 }
94af9270 1476
c00f8484
KS
1477 /* Keep any important naming information. */
1478 p = keep_name_info (p);
94af9270
KS
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;
e0881a8e 1485
94af9270
KS
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 }
87b3ede8
DC
1503 }
1504
1505 /* Allocate our own copy of the substring between argptr and
1777feb0 1506 p. */
87b3ede8
DC
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
1777feb0 1516 /* At this point copy->"fun", p->"". */
87b3ede8
DC
1517
1518 /* No line number may be specified. */
1519 while (*p == ' ' || *p == '\t')
1520 p++;
1521 *argptr = p;
1522 /* At this point arptr->"". */
1523
1777feb0 1524 /* Look for copy as a method of sym_class. */
87b3ede8
DC
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
1777feb0 1528 here, we return. If not, and we are at the and of the string,
87b3ede8
DC
1529 we'll lookup the whole string in the symbol tables. */
1530
94af9270
KS
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);
3e43a32a 1546 error (_("the class `%s' does not have "
8f7e195f 1547 "any method instance named %s"),
94af9270
KS
1548 SYMBOL_PRINT_NAME (sym_class), copy);
1549 }
1550 }
1551 return values;
1777feb0 1552 } /* End if symbol found. */
87b3ede8
DC
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
c00f8484
KS
1558 if (current_language->la_language == language_cplus
1559 || current_language->la_language == language_java)
1560 p = keep_name_info (p);
1561
614b3b14
DC
1562 copy = (char *) alloca (p - saved_arg2 + 1);
1563 memcpy (copy, saved_arg2, p - saved_arg2);
a04257e6
DC
1564 /* Note: if is_quoted should be true, we snuff out quote here
1565 anyway. */
614b3b14 1566 copy[p - saved_arg2] = '\000';
a04257e6 1567 /* Set argptr to skip over the name. */
614b3b14 1568 *argptr = (*p == '\'') ? p + 1 : p;
17763fd9 1569
1777feb0 1570 /* Look up entire name. */
c00f8484 1571 sym = lookup_symbol (copy, get_selected_block (0), VAR_DOMAIN, 0);
614b3b14 1572 if (sym)
2570f2b7 1573 return symbol_found (funfirstline, canonical, copy, sym, NULL);
c00f8484
KS
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 }
614b3b14 1584
c00f8484 1585 /* Couldn't find a minimal symbol, either, so give up. */
f3a5f1de
KO
1586 if (not_found_ptr)
1587 *not_found_ptr = 1;
c00f8484 1588 cplusplus_error (the_real_saved_arg,
3e43a32a
MS
1589 "Can't find member of namespace, "
1590 "class, struct, or union named \"%s\"\n",
614b3b14
DC
1591 copy);
1592}
1593
93d91629
DC
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
17763fd9
EZ
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". */
93d91629
DC
1602
1603static struct symbol *
1604lookup_prefix_sym (char **argptr, char *p)
1605{
1606 char *p1;
1607 char *copy;
1e5a1abc 1608 struct symbol *sym;
93d91629
DC
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
17763fd9 1618 /* Discard the class name from the argptr. */
93d91629
DC
1619 p = p1 + (p1[0] == ':' ? 2 : 1);
1620 while (*p == ' ' || *p == '\t')
1621 p++;
1622 *argptr = p;
1623
17763fd9 1624 /* At this point p1->"::inA::fun", p->"inA::fun" copy->"AAA",
1777feb0 1625 argptr->"inA::fun". */
17763fd9 1626
c00f8484 1627 sym = lookup_symbol (copy, get_selected_block (0), STRUCT_DOMAIN, 0);
1e5a1abc
KS
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);
e0881a8e 1637
1e5a1abc
KS
1638 if (s != NULL)
1639 {
1640 struct type *t = SYMBOL_TYPE (s);
e0881a8e 1641
1e5a1abc
KS
1642 CHECK_TYPEDEF (t);
1643 if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
1644 return s;
1645 }
1646 }
1647
1648 return sym;
93d91629
DC
1649}
1650
4224873a
DC
1651/* This finds the method COPY in the class whose type is T and whose
1652 symbol is SYM_CLASS. */
1653
1654static struct symtabs_and_lines
1655find_method (int funfirstline, char ***canonical, char *saved_arg,
3e43a32a
MS
1656 char *copy, struct type *t, struct symbol *sym_class,
1657 int *not_found_ptr)
4224873a
DC
1658{
1659 struct symtabs_and_lines values;
46be51c4 1660 struct symbol *sym = NULL;
78a11fb4 1661 int i1; /* Counter for the symbol array. */
4224873a
DC
1662 struct symbol **sym_arr = alloca (total_number_of_methods (t)
1663 * sizeof (struct symbol *));
1664
78a11fb4
DC
1665 /* Find all methods with a matching name, and put them in
1666 sym_arr. */
4224873a 1667
19ef5c71 1668 i1 = find_methods (t, copy, SYMBOL_LANGUAGE (sym_class), sym_arr);
4224873a 1669
4224873a
DC
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 {
15550d6b 1685 values.sals = NULL;
4224873a
DC
1686 values.nelts = 0;
1687 }
1688 return values;
1689 }
1690 if (i1 > 0)
1691 {
94af9270
KS
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. */
c00f8484 1695 if (strchr (copy, '('))
94af9270
KS
1696 {
1697 int i;
c00f8484
KS
1698 char *name;
1699 char *canon;
d03a3acf 1700 struct cleanup *cleanup;
e0881a8e 1701
c00f8484
KS
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);
d03a3acf 1715 if (canon != NULL)
94af9270 1716 {
c00f8484 1717 xfree (name);
d03a3acf 1718 name = canon;
d03a3acf 1719 }
c00f8484 1720 cleanup = make_cleanup (xfree, name);
94af9270 1721
d03a3acf
KS
1722 for (i = 0; i < i1; ++i)
1723 {
94af9270
KS
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);
d03a3acf 1731 do_cleanups (cleanup);
94af9270
KS
1732 return values;
1733 }
94af9270
KS
1734 }
1735
3e43a32a 1736 error (_("the class `%s' does not have "
8f7e195f 1737 "any method instance named %s"),
94af9270
KS
1738 SYMBOL_PRINT_NAME (sym_class), copy);
1739 }
1740
4224873a
DC
1741 return decode_line_2 (sym_arr, i1, funfirstline, canonical);
1742 }
1743 else
1744 {
f3a5f1de
KO
1745 if (not_found_ptr)
1746 *not_found_ptr = 1;
12907978 1747 if (copy[0] == '~')
4224873a
DC
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",
12907978 1754 SYMBOL_PRINT_NAME (sym_class), copy);
4224873a
DC
1755 }
1756}
1757
f3c39e76
DC
1758\f
1759
1760/* Return the symtab associated to the filename given by the substring
68219205
JJ
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. */
f3c39e76
DC
1765
1766static struct symtab *
68219205
JJ
1767symtab_from_filename (char **argptr, char *p, int is_quote_enclosed,
1768 int *not_found_ptr)
f3c39e76
DC
1769{
1770 char *p1;
1771 char *copy;
94cd26f8 1772 struct symtab *file_symtab;
f3c39e76
DC
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);
a04257e6 1781 /* It may have the ending quote right after the file name. */
0e0b460e
KS
1782 if ((is_quote_enclosed && copy[p - *argptr - 1] == '"')
1783 || copy[p - *argptr - 1] == '\'')
f3c39e76
DC
1784 copy[p - *argptr - 1] = 0;
1785 else
1786 copy[p - *argptr] = 0;
1787
1788 /* Find that file's data. */
94cd26f8
DC
1789 file_symtab = lookup_symtab (copy);
1790 if (file_symtab == 0)
f3c39e76 1791 {
68219205 1792 if (not_found_ptr)
05ff989b 1793 *not_found_ptr = 1;
b96e2927
PA
1794 if (!have_full_symbols () && !have_partial_symbols ())
1795 throw_error (NOT_FOUND_ERROR,
3e43a32a
MS
1796 _("No symbol table is loaded. "
1797 "Use the \"file\" command."));
109c3e39 1798 throw_error (NOT_FOUND_ERROR, _("No source file named %s."), copy);
f3c39e76
DC
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
94cd26f8 1807 return file_symtab;
f3c39e76
DC
1808}
1809
84fba31b
DC
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
1816static struct symtabs_and_lines
1817decode_all_digits (char **argptr, struct symtab *default_symtab,
1818 int default_line, char ***canonical,
88d262ca 1819 struct symtab *file_symtab, char *q)
84fba31b
DC
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. */
46be51c4 1832 int need_canonical = (file_symtab == NULL) ? 1 : 0;
84fba31b
DC
1833
1834 init_sal (&val);
1835
6c95b8df
PA
1836 val.pspace = current_program_space;
1837
84fba31b
DC
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
a04257e6 1842 select_source_symtab that calls us with such an argument. */
84fba31b 1843
88d262ca 1844 if (file_symtab == 0 && default_symtab == 0)
84fba31b 1845 {
a04257e6 1846 /* Make sure we have at least a default source file. */
84fba31b
DC
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;
88d262ca 1861 if (file_symtab == 0)
84fba31b
DC
1862 val.line = default_line + val.line;
1863 break;
1864 case minus:
1865 if (q == *argptr)
1866 val.line = 15;
88d262ca 1867 if (file_symtab == 0)
84fba31b
DC
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;
88d262ca
DC
1879 if (file_symtab == 0)
1880 file_symtab = default_symtab;
84fba31b
DC
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
88d262ca
DC
1884 default (in file_symtab) to a new one. */
1885 val.symtab = find_line_symtab (file_symtab, val.line, NULL, NULL);
84fba31b 1886 if (val.symtab == 0)
88d262ca 1887 val.symtab = file_symtab;
84fba31b 1888
6c95b8df 1889 val.pspace = SYMTAB_PSPACE (val.symtab);
84fba31b
DC
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);
ed0616c6 1897 values.sals[0].explicit_line = 1;
84fba31b
DC
1898 return values;
1899}
f3c39e76 1900
614b3b14
DC
1901\f
1902
14e91ac5
DC
1903/* Decode a linespec starting with a dollar sign. */
1904
1905static struct symtabs_and_lines
1906decode_dollar (char *copy, int funfirstline, struct symtab *default_symtab,
88d262ca 1907 char ***canonical, struct symtab *file_symtab)
14e91ac5 1908{
4fa62494 1909 LONGEST valx;
14e91ac5
DC
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;
14e91ac5
DC
1916 struct minimal_symbol *msymbol;
1917
1918 p = (copy[1] == '$') ? copy + 2 : copy + 1;
1919 while (*p >= '0' && *p <= '9')
1920 p++;
a04257e6 1921 if (!*p) /* Reached end of token without hitting non-digit. */
14e91ac5 1922 {
a04257e6 1923 /* We have a value history reference. */
4fa62494 1924 struct value *val_history;
e0881a8e 1925
14e91ac5 1926 sscanf ((copy[1] == '$') ? copy + 2 : copy + 1, "%d", &index);
4fa62494
UW
1927 val_history = access_value_history ((copy[1] == '$') ? -index : index);
1928 if (TYPE_CODE (value_type (val_history)) != TYPE_CODE_INT)
3e43a32a
MS
1929 error (_("History values used in line "
1930 "specs must have integer values."));
4fa62494 1931 valx = value_as_long (val_history);
14e91ac5
DC
1932 }
1933 else
1934 {
1935 /* Not all digits -- may be user variable/function or a
a04257e6 1936 convenience variable. */
14e91ac5 1937
a04257e6 1938 /* Look up entire name as a symbol first. */
2570f2b7 1939 sym = lookup_symbol (copy, 0, VAR_DOMAIN, 0);
46be51c4 1940 file_symtab = (struct symtab *) NULL;
14e91ac5
DC
1941 need_canonical = 1;
1942 /* Symbol was found --> jump to normal symbol processing. */
1943 if (sym)
2570f2b7 1944 return symbol_found (funfirstline, canonical, copy, sym, NULL);
14e91ac5 1945
a04257e6 1946 /* If symbol was not found, look in minimal symbol tables. */
14e91ac5 1947 msymbol = lookup_minimal_symbol (copy, NULL, NULL);
a04257e6 1948 /* Min symbol was found --> jump to minsym processing. */
14e91ac5
DC
1949 if (msymbol)
1950 return minsym_found (funfirstline, msymbol);
1951
a04257e6 1952 /* Not a user variable or function -- must be convenience variable. */
4fa62494 1953 if (!get_internalvar_integer (lookup_internalvar (copy + 1), &valx))
3e43a32a
MS
1954 error (_("Convenience variables used in line "
1955 "specs must have integer values."));
14e91ac5
DC
1956 }
1957
1958 init_sal (&val);
1959
a04257e6 1960 /* Either history value or convenience value from above, in valx. */
88d262ca 1961 val.symtab = file_symtab ? file_symtab : default_symtab;
4fa62494 1962 val.line = valx;
14e91ac5 1963 val.pc = 0;
6c95b8df 1964 val.pspace = current_program_space;
14e91ac5
DC
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
bca02a8a
DC
1976\f
1977
0f5238ed
TT
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
1986static int
1987decode_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
88d262ca 1999/* Decode a linespec that's a variable. If FILE_SYMTAB is non-NULL,
3e43a32a
MS
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. */
bca02a8a
DC
2003
2004static struct symtabs_and_lines
2005decode_variable (char *copy, int funfirstline, char ***canonical,
68219205 2006 struct symtab *file_symtab, int *not_found_ptr)
bca02a8a
DC
2007{
2008 struct symbol *sym;
bca02a8a
DC
2009 struct minimal_symbol *msymbol;
2010
2011 sym = lookup_symbol (copy,
88d262ca
DC
2012 (file_symtab
2013 ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (file_symtab),
2014 STATIC_BLOCK)
bca02a8a 2015 : get_selected_block (0)),
2570f2b7 2016 VAR_DOMAIN, 0);
bca02a8a
DC
2017
2018 if (sym != NULL)
2570f2b7 2019 return symbol_found (funfirstline, canonical, copy, sym, file_symtab);
bca02a8a
DC
2020
2021 msymbol = lookup_minimal_symbol (copy, NULL, NULL);
2022
2023 if (msymbol != NULL)
2024 return minsym_found (funfirstline, msymbol);
2025
68219205 2026 if (not_found_ptr)
05ff989b 2027 *not_found_ptr = 1;
b96e2927
PA
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."));
109c3e39 2034 throw_error (NOT_FOUND_ERROR, _("Function \"%s\" not defined."), copy);
bca02a8a
DC
2035}
2036
2037
14e91ac5
DC
2038\f
2039
413dad4d
DC
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
2046static struct symtabs_and_lines
2047symbol_found (int funfirstline, char ***canonical, char *copy,
2570f2b7 2048 struct symbol *sym, struct symtab *file_symtab)
413dad4d
DC
2049{
2050 struct symtabs_and_lines values;
2051
2052 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
50641945 2053 {
1777feb0 2054 /* Arg is the name of a function. */
50641945
FN
2055 values.sals = (struct symtab_and_line *)
2056 xmalloc (sizeof (struct symtab_and_line));
413dad4d
DC
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. */
88d262ca 2066 if (file_symtab == 0)
50641945 2067 {
2570f2b7 2068 struct blockvector *bv = BLOCKVECTOR (SYMBOL_SYMTAB (sym));
413dad4d 2069 struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
e0881a8e 2070
94af9270 2071 if (lookup_block_symbol (b, copy, VAR_DOMAIN) != NULL)
413dad4d 2072 build_canonical_line_spec (values.sals, copy, canonical);
50641945 2073 }
50641945
FN
2074 return values;
2075 }
413dad4d
DC
2076 else
2077 {
0f5238ed 2078 if (funfirstline && SYMBOL_CLASS (sym) != LOC_LABEL)
8a3fe4f8 2079 error (_("\"%s\" is not a function"), copy);
413dad4d
DC
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]));
2570f2b7 2087 values.sals[0].symtab = SYMBOL_SYMTAB (sym);
413dad4d 2088 values.sals[0].line = SYMBOL_LINE (sym);
0f5238ed 2089 values.sals[0].pspace = SYMTAB_PSPACE (SYMBOL_SYMTAB (sym));
413dad4d
DC
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. */
8a3fe4f8 2098 error (_("Line number not known for symbol \"%s\""), copy);
413dad4d
DC
2099 }
2100}
50641945 2101
413dad4d
DC
2102/* We've found a minimal symbol MSYMBOL to associate with our
2103 linespec; build a corresponding struct symtabs_and_lines. */
50641945 2104
413dad4d
DC
2105static struct symtabs_and_lines
2106minsym_found (int funfirstline, struct minimal_symbol *msymbol)
2107{
bccdca4a
UW
2108 struct objfile *objfile = msymbol_objfile (msymbol);
2109 struct gdbarch *gdbarch = get_objfile_arch (objfile);
413dad4d 2110 struct symtabs_and_lines values;
bccdca4a 2111 CORE_ADDR pc;
413dad4d
DC
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),
714835d5
UW
2116 (struct obj_section *) 0, 0);
2117 values.sals[0].section = SYMBOL_OBJ_SECTION (msymbol);
bccdca4a
UW
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
413dad4d 2127 if (funfirstline)
059acae7 2128 skip_prologue_sal (&values.sals[0]);
e48883f7 2129
413dad4d
DC
2130 values.nelts = 1;
2131 return values;
50641945 2132}
This page took 1.093229 seconds and 4 git commands to generate.