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