* gdb/linespec.c (find_methods): Whitespace differences aren't
[binutils-gdb.git] / gdb / linespec.c
1 /* Parser for linespec for the GNU debugger, GDB.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
3 1996, 1997, 1998, 1999, 2000, 2001
4 Free Software Foundation, Inc.
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. */
22
23 #include "defs.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "command.h"
27 #include "symfile.h"
28 #include "objfiles.h"
29 #include "demangle.h"
30 #include "value.h"
31 #include "completer.h"
32
33 /* Prototype for one function in parser-defs.h,
34 instead of including that entire file. */
35
36 extern char *find_template_name_end (char *);
37
38 /* We share this one with symtab.c, but it is not exported widely. */
39
40 extern char *operator_chars (char *, char **);
41
42 /* Prototypes for local functions */
43
44 static void cplusplus_hint (char *name);
45
46 static int total_number_of_methods (struct type *type);
47
48 static int find_methods (struct type *, char *, struct symbol **);
49
50 static void build_canonical_line_spec (struct symtab_and_line *,
51 char *, char ***);
52
53 static char *find_toplevel_char (char *s, char c);
54
55 static struct symtabs_and_lines decode_line_2 (struct symbol *[],
56 int, int, char ***);
57
58 /* Helper functions. */
59
60 /* While the C++ support is still in flux, issue a possibly helpful hint on
61 using the new command completion feature on single quoted demangled C++
62 symbols. Remove when loose ends are cleaned up. FIXME -fnf */
63
64 static void
65 cplusplus_hint (char *name)
66 {
67 while (*name == '\'')
68 name++;
69 printf_filtered ("Hint: try '%s<TAB> or '%s<ESC-?>\n", name, name);
70 printf_filtered ("(Note leading single quote.)\n");
71 }
72
73 /* Return the number of methods described for TYPE, including the
74 methods from types it derives from. This can't be done in the symbol
75 reader because the type of the baseclass might still be stubbed
76 when the definition of the derived class is parsed. */
77
78 static int
79 total_number_of_methods (struct type *type)
80 {
81 int n;
82 int count;
83
84 CHECK_TYPEDEF (type);
85 if (TYPE_CPLUS_SPECIFIC (type) == NULL)
86 return 0;
87 count = TYPE_NFN_FIELDS_TOTAL (type);
88
89 for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
90 count += total_number_of_methods (TYPE_BASECLASS (type, n));
91
92 return count;
93 }
94
95 /* Recursive helper function for decode_line_1.
96 Look for methods named NAME in type T.
97 Return number of matches.
98 Put matches in SYM_ARR, which should have been allocated with
99 a size of total_number_of_methods (T) * sizeof (struct symbol *).
100 Note that this function is g++ specific. */
101
102 static int
103 find_methods (struct type *t, char *name, struct symbol **sym_arr)
104 {
105 int i1 = 0;
106 int ibase;
107 char *class_name = type_name_no_tag (t);
108
109 /* Ignore this class if it doesn't have a name. This is ugly, but
110 unless we figure out how to get the physname without the name of
111 the class, then the loop can't do any good. */
112 if (class_name
113 && (lookup_symbol (class_name, (struct block *) NULL,
114 STRUCT_NAMESPACE, (int *) NULL,
115 (struct symtab **) NULL)))
116 {
117 int method_counter;
118
119 CHECK_TYPEDEF (t);
120
121 /* Loop over each method name. At this level, all overloads of a name
122 are counted as a single name. There is an inner loop which loops over
123 each overload. */
124
125 for (method_counter = TYPE_NFN_FIELDS (t) - 1;
126 method_counter >= 0;
127 --method_counter)
128 {
129 int field_counter;
130 char *method_name = TYPE_FN_FIELDLIST_NAME (t, method_counter);
131 char dem_opname[64];
132
133 if (strncmp (method_name, "__", 2) == 0 ||
134 strncmp (method_name, "op", 2) == 0 ||
135 strncmp (method_name, "type", 4) == 0)
136 {
137 if (cplus_demangle_opname (method_name, dem_opname, DMGL_ANSI))
138 method_name = dem_opname;
139 else if (cplus_demangle_opname (method_name, dem_opname, 0))
140 method_name = dem_opname;
141 }
142
143 if (strcmp_iw (name, method_name) == 0)
144 /* Find all the overloaded methods with that name. */
145 for (field_counter = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
146 field_counter >= 0;
147 --field_counter)
148 {
149 struct fn_field *f;
150 char *phys_name;
151
152 f = TYPE_FN_FIELDLIST1 (t, method_counter);
153
154 if (TYPE_FN_FIELD_STUB (f, field_counter))
155 {
156 char *tmp_name;
157
158 tmp_name = gdb_mangle_name (t,
159 method_counter,
160 field_counter);
161 phys_name = alloca (strlen (tmp_name) + 1);
162 strcpy (phys_name, tmp_name);
163 xfree (tmp_name);
164 }
165 else
166 phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
167
168 /* Destructor is handled by caller, dont add it to the list */
169 if (DESTRUCTOR_PREFIX_P (phys_name))
170 continue;
171
172 sym_arr[i1] = lookup_symbol (phys_name,
173 NULL, VAR_NAMESPACE,
174 (int *) NULL,
175 (struct symtab **) NULL);
176 if (sym_arr[i1])
177 i1++;
178 else
179 {
180 /* This error message gets printed, but the method
181 still seems to be found
182 fputs_filtered("(Cannot find method ", gdb_stdout);
183 fprintf_symbol_filtered (gdb_stdout, phys_name,
184 language_cplus,
185 DMGL_PARAMS | DMGL_ANSI);
186 fputs_filtered(" - possibly inlined.)\n", gdb_stdout);
187 */
188 }
189 }
190 }
191 }
192
193 /* Only search baseclasses if there is no match yet, since names in
194 derived classes override those in baseclasses.
195
196 FIXME: The above is not true; it is only true of member functions
197 if they have the same number of arguments (??? - section 13.1 of the
198 ARM says the function members are not in the same scope but doesn't
199 really spell out the rules in a way I understand. In any case, if
200 the number of arguments differ this is a case in which we can overload
201 rather than hiding without any problem, and gcc 2.4.5 does overload
202 rather than hiding in this case). */
203
204 if (i1 == 0)
205 for (ibase = 0; ibase < TYPE_N_BASECLASSES (t); ibase++)
206 i1 += find_methods (TYPE_BASECLASS (t, ibase), name, sym_arr + i1);
207
208 return i1;
209 }
210
211 /* Helper function for decode_line_1.
212 Build a canonical line spec in CANONICAL if it is non-NULL and if
213 the SAL has a symtab.
214 If SYMNAME is non-NULL the canonical line spec is `filename:symname'.
215 If SYMNAME is NULL the line number from SAL is used and the canonical
216 line spec is `filename:linenum'. */
217
218 static void
219 build_canonical_line_spec (struct symtab_and_line *sal, char *symname,
220 char ***canonical)
221 {
222 char **canonical_arr;
223 char *canonical_name;
224 char *filename;
225 struct symtab *s = sal->symtab;
226
227 if (s == (struct symtab *) NULL
228 || s->filename == (char *) NULL
229 || canonical == (char ***) NULL)
230 return;
231
232 canonical_arr = (char **) xmalloc (sizeof (char *));
233 *canonical = canonical_arr;
234
235 filename = s->filename;
236 if (symname != NULL)
237 {
238 canonical_name = xmalloc (strlen (filename) + strlen (symname) + 2);
239 sprintf (canonical_name, "%s:%s", filename, symname);
240 }
241 else
242 {
243 canonical_name = xmalloc (strlen (filename) + 30);
244 sprintf (canonical_name, "%s:%d", filename, sal->line);
245 }
246 canonical_arr[0] = canonical_name;
247 }
248
249
250
251 /* Find an instance of the character C in the string S that is outside
252 of all parenthesis pairs, single-quoted strings, and double-quoted
253 strings. */
254 static char *
255 find_toplevel_char (char *s, char c)
256 {
257 int quoted = 0; /* zero if we're not in quotes;
258 '"' if we're in a double-quoted string;
259 '\'' if we're in a single-quoted string. */
260 int depth = 0; /* number of unclosed parens we've seen */
261 char *scan;
262
263 for (scan = s; *scan; scan++)
264 {
265 if (quoted)
266 {
267 if (*scan == quoted)
268 quoted = 0;
269 else if (*scan == '\\' && *(scan + 1))
270 scan++;
271 }
272 else if (*scan == c && ! quoted && depth == 0)
273 return scan;
274 else if (*scan == '"' || *scan == '\'')
275 quoted = *scan;
276 else if (*scan == '(')
277 depth++;
278 else if (*scan == ')' && depth > 0)
279 depth--;
280 }
281
282 return 0;
283 }
284
285 /* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
286 operate on (ask user if necessary).
287 If CANONICAL is non-NULL return a corresponding array of mangled names
288 as canonical line specs there. */
289
290 static struct symtabs_and_lines
291 decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
292 char ***canonical)
293 {
294 struct symtabs_and_lines values, return_values;
295 char *args, *arg1;
296 int i;
297 char *prompt;
298 char *symname;
299 struct cleanup *old_chain;
300 char **canonical_arr = (char **) NULL;
301
302 values.sals = (struct symtab_and_line *)
303 alloca (nelts * sizeof (struct symtab_and_line));
304 return_values.sals = (struct symtab_and_line *)
305 xmalloc (nelts * sizeof (struct symtab_and_line));
306 old_chain = make_cleanup (xfree, return_values.sals);
307
308 if (canonical)
309 {
310 canonical_arr = (char **) xmalloc (nelts * sizeof (char *));
311 make_cleanup (xfree, canonical_arr);
312 memset (canonical_arr, 0, nelts * sizeof (char *));
313 *canonical = canonical_arr;
314 }
315
316 i = 0;
317 printf_unfiltered ("[0] cancel\n[1] all\n");
318 while (i < nelts)
319 {
320 INIT_SAL (&return_values.sals[i]); /* initialize to zeroes */
321 INIT_SAL (&values.sals[i]);
322 if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
323 {
324 values.sals[i] = find_function_start_sal (sym_arr[i], funfirstline);
325 printf_unfiltered ("[%d] %s at %s:%d\n",
326 (i + 2),
327 SYMBOL_SOURCE_NAME (sym_arr[i]),
328 values.sals[i].symtab->filename,
329 values.sals[i].line);
330 }
331 else
332 printf_unfiltered ("?HERE\n");
333 i++;
334 }
335
336 if ((prompt = getenv ("PS2")) == NULL)
337 {
338 prompt = "> ";
339 }
340 args = command_line_input (prompt, 0, "overload-choice");
341
342 if (args == 0 || *args == 0)
343 error_no_arg ("one or more choice numbers");
344
345 i = 0;
346 while (*args)
347 {
348 int num;
349
350 arg1 = args;
351 while (*arg1 >= '0' && *arg1 <= '9')
352 arg1++;
353 if (*arg1 && *arg1 != ' ' && *arg1 != '\t')
354 error ("Arguments must be choice numbers.");
355
356 num = atoi (args);
357
358 if (num == 0)
359 error ("canceled");
360 else if (num == 1)
361 {
362 if (canonical_arr)
363 {
364 for (i = 0; i < nelts; i++)
365 {
366 if (canonical_arr[i] == NULL)
367 {
368 symname = SYMBOL_NAME (sym_arr[i]);
369 canonical_arr[i] = savestring (symname, strlen (symname));
370 }
371 }
372 }
373 memcpy (return_values.sals, values.sals,
374 (nelts * sizeof (struct symtab_and_line)));
375 return_values.nelts = nelts;
376 discard_cleanups (old_chain);
377 return return_values;
378 }
379
380 if (num >= nelts + 2)
381 {
382 printf_unfiltered ("No choice number %d.\n", num);
383 }
384 else
385 {
386 num -= 2;
387 if (values.sals[num].pc)
388 {
389 if (canonical_arr)
390 {
391 symname = SYMBOL_NAME (sym_arr[num]);
392 make_cleanup (xfree, symname);
393 canonical_arr[i] = savestring (symname, strlen (symname));
394 }
395 return_values.sals[i++] = values.sals[num];
396 values.sals[num].pc = 0;
397 }
398 else
399 {
400 printf_unfiltered ("duplicate request for %d ignored.\n", num);
401 }
402 }
403
404 args = arg1;
405 while (*args == ' ' || *args == '\t')
406 args++;
407 }
408 return_values.nelts = i;
409 discard_cleanups (old_chain);
410 return return_values;
411 }
412 \f
413 /* The parser of linespec itself. */
414
415 /* Parse a string that specifies a line number.
416 Pass the address of a char * variable; that variable will be
417 advanced over the characters actually parsed.
418
419 The string can be:
420
421 LINENUM -- that line number in current file. PC returned is 0.
422 FILE:LINENUM -- that line in that file. PC returned is 0.
423 FUNCTION -- line number of openbrace of that function.
424 PC returned is the start of the function.
425 VARIABLE -- line number of definition of that variable.
426 PC returned is 0.
427 FILE:FUNCTION -- likewise, but prefer functions in that file.
428 *EXPR -- line in which address EXPR appears.
429
430 This may all be followed by an "if EXPR", which we ignore.
431
432 FUNCTION may be an undebuggable function found in minimal symbol table.
433
434 If the argument FUNFIRSTLINE is nonzero, we want the first line
435 of real code inside a function when a function is specified, and it is
436 not OK to specify a variable or type to get its line number.
437
438 DEFAULT_SYMTAB specifies the file to use if none is specified.
439 It defaults to current_source_symtab.
440 DEFAULT_LINE specifies the line number to use for relative
441 line numbers (that start with signs). Defaults to current_source_line.
442 If CANONICAL is non-NULL, store an array of strings containing the canonical
443 line specs there if necessary. Currently overloaded member functions and
444 line numbers or static functions without a filename yield a canonical
445 line spec. The array and the line spec strings are allocated on the heap,
446 it is the callers responsibility to free them.
447
448 Note that it is possible to return zero for the symtab
449 if no file is validly specified. Callers must check that.
450 Also, the line number returned may be invalid. */
451
452 /* We allow single quotes in various places. This is a hideous
453 kludge, which exists because the completer can't yet deal with the
454 lack of single quotes. FIXME: write a linespec_completer which we
455 can use as appropriate instead of make_symbol_completion_list. */
456
457 struct symtabs_and_lines
458 decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
459 int default_line, char ***canonical)
460 {
461 struct symtabs_and_lines values;
462 #ifdef HPPA_COMPILER_BUG
463 /* FIXME: The native HP 9000/700 compiler has a bug which appears
464 when optimizing this file with target i960-vxworks. I haven't
465 been able to construct a simple test case. The problem is that
466 in the second call to SKIP_PROLOGUE below, the compiler somehow
467 does not realize that the statement val = find_pc_line (...) will
468 change the values of the fields of val. It extracts the elements
469 into registers at the top of the block, and does not update the
470 registers after the call to find_pc_line. You can check this by
471 inserting a printf at the end of find_pc_line to show what values
472 it is returning for val.pc and val.end and another printf after
473 the call to see what values the function actually got (remember,
474 this is compiling with cc -O, with this patch removed). You can
475 also examine the assembly listing: search for the second call to
476 skip_prologue; the LDO statement before the next call to
477 find_pc_line loads the address of the structure which
478 find_pc_line will return; if there is a LDW just before the LDO,
479 which fetches an element of the structure, then the compiler
480 still has the bug.
481
482 Setting val to volatile avoids the problem. We must undef
483 volatile, because the HPPA native compiler does not define
484 __STDC__, although it does understand volatile, and so volatile
485 will have been defined away in defs.h. */
486 #undef volatile
487 volatile struct symtab_and_line val;
488 #define volatile /*nothing */
489 #else
490 struct symtab_and_line val;
491 #endif
492 register char *p, *p1;
493 char *q, *pp, *ii, *p2;
494 #if 0
495 char *q1;
496 #endif
497 register struct symtab *s;
498
499 register struct symbol *sym;
500 /* The symtab that SYM was found in. */
501 struct symtab *sym_symtab;
502
503 register CORE_ADDR pc;
504 register struct minimal_symbol *msymbol;
505 char *copy;
506 struct symbol *sym_class;
507 int i1;
508 int is_quoted;
509 int is_quote_enclosed;
510 int has_parens;
511 int has_if = 0;
512 int has_comma = 0;
513 struct symbol **sym_arr;
514 struct type *t;
515 char *saved_arg = *argptr;
516 extern char *gdb_completer_quote_characters;
517
518 INIT_SAL (&val); /* initialize to zeroes */
519
520 /* Defaults have defaults. */
521
522 if (default_symtab == 0)
523 {
524 default_symtab = current_source_symtab;
525 default_line = current_source_line;
526 }
527
528 /* See if arg is *PC */
529
530 if (**argptr == '*')
531 {
532 (*argptr)++;
533 pc = parse_and_eval_address_1 (argptr);
534
535 values.sals = (struct symtab_and_line *)
536 xmalloc (sizeof (struct symtab_and_line));
537
538 values.nelts = 1;
539 values.sals[0] = find_pc_line (pc, 0);
540 values.sals[0].pc = pc;
541 values.sals[0].section = find_pc_overlay (pc);
542
543 return values;
544 }
545
546 /* 'has_if' is for the syntax:
547 * (gdb) break foo if (a==b)
548 */
549 if ((ii = strstr (*argptr, " if ")) != NULL ||
550 (ii = strstr (*argptr, "\tif ")) != NULL ||
551 (ii = strstr (*argptr, " if\t")) != NULL ||
552 (ii = strstr (*argptr, "\tif\t")) != NULL ||
553 (ii = strstr (*argptr, " if(")) != NULL ||
554 (ii = strstr (*argptr, "\tif( ")) != NULL)
555 has_if = 1;
556 /* Temporarily zap out "if (condition)" to not
557 * confuse the parenthesis-checking code below.
558 * This is undone below. Do not change ii!!
559 */
560 if (has_if)
561 {
562 *ii = '\0';
563 }
564
565 /* Set various flags.
566 * 'has_parens' is important for overload checking, where
567 * we allow things like:
568 * (gdb) break c::f(int)
569 */
570
571 /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
572
573 is_quoted = (**argptr
574 && strchr (get_gdb_completer_quote_characters (),
575 **argptr) != NULL);
576
577 has_parens = ((pp = strchr (*argptr, '(')) != NULL
578 && (pp = strrchr (pp, ')')) != NULL);
579
580 /* Now that we're safely past the has_parens check,
581 * put back " if (condition)" so outer layers can see it
582 */
583 if (has_if)
584 *ii = ' ';
585
586 /* Maybe we were called with a line range FILENAME:LINENUM,FILENAME:LINENUM
587 and we must isolate the first half. Outer layers will call again later
588 for the second half.
589
590 Don't count commas that appear in argument lists of overloaded
591 functions, or in quoted strings. It's stupid to go to this much
592 trouble when the rest of the function is such an obvious roach hotel. */
593 ii = find_toplevel_char (*argptr, ',');
594 has_comma = (ii != 0);
595
596 /* Temporarily zap out second half to not
597 * confuse the code below.
598 * This is undone below. Do not change ii!!
599 */
600 if (has_comma)
601 {
602 *ii = '\0';
603 }
604
605 /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
606 /* May also be CLASS::MEMBER, or NAMESPACE::NAME */
607 /* Look for ':', but ignore inside of <> */
608
609 s = NULL;
610 p = *argptr;
611 if (p[0] == '"')
612 {
613 is_quote_enclosed = 1;
614 (*argptr)++;
615 p++;
616 }
617 else
618 is_quote_enclosed = 0;
619 for (; *p; p++)
620 {
621 if (p[0] == '<')
622 {
623 char *temp_end = find_template_name_end (p);
624 if (!temp_end)
625 error ("malformed template specification in command");
626 p = temp_end;
627 }
628 /* Check for the end of the first half of the linespec. End of line,
629 a tab, a double colon or the last single colon, or a space. But
630 if enclosed in double quotes we do not break on enclosed spaces */
631 if (!*p
632 || p[0] == '\t'
633 || ((p[0] == ':')
634 && ((p[1] == ':') || (strchr (p + 1, ':') == NULL)))
635 || ((p[0] == ' ') && !is_quote_enclosed))
636 break;
637 if (p[0] == '.' && strchr (p, ':') == NULL) /* Java qualified method. */
638 {
639 /* Find the *last* '.', since the others are package qualifiers. */
640 for (p1 = p; *p1; p1++)
641 {
642 if (*p1 == '.')
643 p = p1;
644 }
645 break;
646 }
647 }
648 while (p[0] == ' ' || p[0] == '\t')
649 p++;
650
651 /* if the closing double quote was left at the end, remove it */
652 if (is_quote_enclosed)
653 {
654 char *closing_quote = strchr (p - 1, '"');
655 if (closing_quote && closing_quote[1] == '\0')
656 *closing_quote = '\0';
657 }
658
659 /* Now that we've safely parsed the first half,
660 * put back ',' so outer layers can see it
661 */
662 if (has_comma)
663 *ii = ',';
664
665 if ((p[0] == ':' || p[0] == '.') && !has_parens)
666 {
667 /* C++ */
668 /* ... or Java */
669 if (is_quoted)
670 *argptr = *argptr + 1;
671 if (p[0] == '.' || p[1] == ':')
672 {
673 char *saved_arg2 = *argptr;
674 char *temp_end;
675 /* First check for "global" namespace specification,
676 of the form "::foo". If found, skip over the colons
677 and jump to normal symbol processing */
678 if (p[0] == ':'
679 && ((*argptr == p) || (p[-1] == ' ') || (p[-1] == '\t')))
680 saved_arg2 += 2;
681
682 /* We have what looks like a class or namespace
683 scope specification (A::B), possibly with many
684 levels of namespaces or classes (A::B::C::D).
685
686 Some versions of the HP ANSI C++ compiler (as also possibly
687 other compilers) generate class/function/member names with
688 embedded double-colons if they are inside namespaces. To
689 handle this, we loop a few times, considering larger and
690 larger prefixes of the string as though they were single
691 symbols. So, if the initially supplied string is
692 A::B::C::D::foo, we have to look up "A", then "A::B",
693 then "A::B::C", then "A::B::C::D", and finally
694 "A::B::C::D::foo" as single, monolithic symbols, because
695 A, B, C or D may be namespaces.
696
697 Note that namespaces can nest only inside other
698 namespaces, and not inside classes. So we need only
699 consider *prefixes* of the string; there is no need to look up
700 "B::C" separately as a symbol in the previous example. */
701
702 p2 = p; /* save for restart */
703 while (1)
704 {
705 /* Extract the class name. */
706 p1 = p;
707 while (p != *argptr && p[-1] == ' ')
708 --p;
709 copy = (char *) alloca (p - *argptr + 1);
710 memcpy (copy, *argptr, p - *argptr);
711 copy[p - *argptr] = 0;
712
713 /* Discard the class name from the arg. */
714 p = p1 + (p1[0] == ':' ? 2 : 1);
715 while (*p == ' ' || *p == '\t')
716 p++;
717 *argptr = p;
718
719 sym_class = lookup_symbol (copy, 0, STRUCT_NAMESPACE, 0,
720 (struct symtab **) NULL);
721
722 if (sym_class &&
723 (t = check_typedef (SYMBOL_TYPE (sym_class)),
724 (TYPE_CODE (t) == TYPE_CODE_STRUCT
725 || TYPE_CODE (t) == TYPE_CODE_UNION)))
726 {
727 /* Arg token is not digits => try it as a function name
728 Find the next token(everything up to end or next blank). */
729 if (**argptr
730 && strchr (get_gdb_completer_quote_characters (),
731 **argptr) != NULL)
732 {
733 p = skip_quoted (*argptr);
734 *argptr = *argptr + 1;
735 }
736 else
737 {
738 p = *argptr;
739 while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p != ':')
740 p++;
741 }
742 /*
743 q = operator_chars (*argptr, &q1);
744 if (q1 - q)
745 {
746 char *opname;
747 char *tmp = alloca (q1 - q + 1);
748 memcpy (tmp, q, q1 - q);
749 tmp[q1 - q] = '\0';
750 opname = cplus_mangle_opname (tmp, DMGL_ANSI);
751 if (opname == NULL)
752 {
753 error_begin ();
754 printf_filtered ("no mangling for \"%s\"\n", tmp);
755 cplusplus_hint (saved_arg);
756 return_to_top_level (RETURN_ERROR);
757 }
758 copy = (char*) alloca (3 + strlen(opname));
759 sprintf (copy, "__%s", opname);
760 p = q1;
761 }
762 else
763 */
764 {
765 copy = (char *) alloca (p - *argptr + 1);
766 memcpy (copy, *argptr, p - *argptr);
767 copy[p - *argptr] = '\0';
768 if (p != *argptr
769 && copy[p - *argptr - 1]
770 && strchr (get_gdb_completer_quote_characters (),
771 copy[p - *argptr - 1]) != NULL)
772 copy[p - *argptr - 1] = '\0';
773 }
774
775 /* no line number may be specified */
776 while (*p == ' ' || *p == '\t')
777 p++;
778 *argptr = p;
779
780 sym = 0;
781 i1 = 0; /* counter for the symbol array */
782 sym_arr = (struct symbol **) alloca (total_number_of_methods (t)
783 * sizeof (struct symbol *));
784
785 if (destructor_name_p (copy, t))
786 {
787 /* Destructors are a special case. */
788 int m_index, f_index;
789
790 if (get_destructor_fn_field (t, &m_index, &f_index))
791 {
792 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, m_index);
793
794 sym_arr[i1] =
795 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, f_index),
796 NULL, VAR_NAMESPACE, (int *) NULL,
797 (struct symtab **) NULL);
798 if (sym_arr[i1])
799 i1++;
800 }
801 }
802 else
803 i1 = find_methods (t, copy, sym_arr);
804 if (i1 == 1)
805 {
806 /* There is exactly one field with that name. */
807 sym = sym_arr[0];
808
809 if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
810 {
811 values.sals = (struct symtab_and_line *)
812 xmalloc (sizeof (struct symtab_and_line));
813 values.nelts = 1;
814 values.sals[0] = find_function_start_sal (sym,
815 funfirstline);
816 }
817 else
818 {
819 values.nelts = 0;
820 }
821 return values;
822 }
823 if (i1 > 0)
824 {
825 /* There is more than one field with that name
826 (overloaded). Ask the user which one to use. */
827 return decode_line_2 (sym_arr, i1, funfirstline, canonical);
828 }
829 else
830 {
831 char *tmp;
832
833 if (OPNAME_PREFIX_P (copy))
834 {
835 tmp = (char *) alloca (strlen (copy + 3) + 9);
836 strcpy (tmp, "operator ");
837 strcat (tmp, copy + 3);
838 }
839 else
840 tmp = copy;
841 error_begin ();
842 if (tmp[0] == '~')
843 printf_filtered
844 ("the class `%s' does not have destructor defined\n",
845 SYMBOL_SOURCE_NAME (sym_class));
846 else
847 printf_filtered
848 ("the class %s does not have any method named %s\n",
849 SYMBOL_SOURCE_NAME (sym_class), tmp);
850 cplusplus_hint (saved_arg);
851 return_to_top_level (RETURN_ERROR);
852 }
853 }
854
855 /* Move pointer up to next possible class/namespace token */
856 p = p2 + 1; /* restart with old value +1 */
857 /* Move pointer ahead to next double-colon */
858 while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\''))
859 {
860 if (p[0] == '<')
861 {
862 temp_end = find_template_name_end (p);
863 if (!temp_end)
864 error ("malformed template specification in command");
865 p = temp_end;
866 }
867 else if ((p[0] == ':') && (p[1] == ':'))
868 break; /* found double-colon */
869 else
870 p++;
871 }
872
873 if (*p != ':')
874 break; /* out of the while (1) */
875
876 p2 = p; /* save restart for next time around */
877 *argptr = saved_arg2; /* restore argptr */
878 } /* while (1) */
879
880 /* Last chance attempt -- check entire name as a symbol */
881 /* Use "copy" in preparation for jumping out of this block,
882 to be consistent with usage following the jump target */
883 copy = (char *) alloca (p - saved_arg2 + 1);
884 memcpy (copy, saved_arg2, p - saved_arg2);
885 /* Note: if is_quoted should be true, we snuff out quote here anyway */
886 copy[p - saved_arg2] = '\000';
887 /* Set argptr to skip over the name */
888 *argptr = (*p == '\'') ? p + 1 : p;
889 /* Look up entire name */
890 sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
891 s = (struct symtab *) 0;
892 /* Prepare to jump: restore the " if (condition)" so outer layers see it */
893 /* Symbol was found --> jump to normal symbol processing.
894 Code following "symbol_found" expects "copy" to have the
895 symbol name, "sym" to have the symbol pointer, "s" to be
896 a specified file's symtab, and sym_symtab to be the symbol's
897 symtab. */
898 /* By jumping there we avoid falling through the FILE:LINE and
899 FILE:FUNC processing stuff below */
900 if (sym)
901 goto symbol_found;
902
903 /* Couldn't find any interpretation as classes/namespaces, so give up */
904 error_begin ();
905 /* The quotes are important if copy is empty. */
906 printf_filtered
907 ("Can't find member of namespace, class, struct, or union named \"%s\"\n", copy);
908 cplusplus_hint (saved_arg);
909 return_to_top_level (RETURN_ERROR);
910 }
911 /* end of C++ */
912
913
914 /* Extract the file name. */
915 p1 = p;
916 while (p != *argptr && p[-1] == ' ')
917 --p;
918 if ((*p == '"') && is_quote_enclosed)
919 --p;
920 copy = (char *) alloca (p - *argptr + 1);
921 if ((**argptr == '"') && is_quote_enclosed)
922 {
923 memcpy (copy, *argptr + 1, p - *argptr - 1);
924 /* It may have the ending quote right after the file name */
925 if (copy[p - *argptr - 2] == '"')
926 copy[p - *argptr - 2] = 0;
927 else
928 copy[p - *argptr - 1] = 0;
929 }
930 else
931 {
932 memcpy (copy, *argptr, p - *argptr);
933 copy[p - *argptr] = 0;
934 }
935
936 /* Find that file's data. */
937 s = lookup_symtab (copy);
938 if (s == 0)
939 {
940 if (!have_full_symbols () && !have_partial_symbols ())
941 error ("No symbol table is loaded. Use the \"file\" command.");
942 error ("No source file named %s.", copy);
943 }
944
945 /* Discard the file name from the arg. */
946 p = p1 + 1;
947 while (*p == ' ' || *p == '\t')
948 p++;
949 *argptr = p;
950 }
951 #if 0
952 /* No one really seems to know why this was added. It certainly
953 breaks the command line, though, whenever the passed
954 name is of the form ClassName::Method. This bit of code
955 singles out the class name, and if funfirstline is set (for
956 example, you are setting a breakpoint at this function),
957 you get an error. This did not occur with earlier
958 verions, so I am ifdef'ing this out. 3/29/99 */
959 else
960 {
961 /* Check if what we have till now is a symbol name */
962
963 /* We may be looking at a template instantiation such
964 as "foo<int>". Check here whether we know about it,
965 instead of falling through to the code below which
966 handles ordinary function names, because that code
967 doesn't like seeing '<' and '>' in a name -- the
968 skip_quoted call doesn't go past them. So see if we
969 can figure it out right now. */
970
971 copy = (char *) alloca (p - *argptr + 1);
972 memcpy (copy, *argptr, p - *argptr);
973 copy[p - *argptr] = '\000';
974 sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
975 if (sym)
976 {
977 /* Yes, we have a symbol; jump to symbol processing */
978 /* Code after symbol_found expects S, SYM_SYMTAB, SYM,
979 and COPY to be set correctly */
980 *argptr = (*p == '\'') ? p + 1 : p;
981 s = (struct symtab *) 0;
982 goto symbol_found;
983 }
984 /* Otherwise fall out from here and go to file/line spec
985 processing, etc. */
986 }
987 #endif
988
989 /* S is specified file's symtab, or 0 if no file specified.
990 arg no longer contains the file name. */
991
992 /* Check whether arg is all digits (and sign) */
993
994 q = *argptr;
995 if (*q == '-' || *q == '+')
996 q++;
997 while (*q >= '0' && *q <= '9')
998 q++;
999
1000 if (q != *argptr && (*q == 0 || *q == ' ' || *q == '\t' || *q == ','))
1001 {
1002 /* We found a token consisting of all digits -- at least one digit. */
1003 enum sign
1004 {
1005 none, plus, minus
1006 }
1007 sign = none;
1008
1009 /* We might need a canonical line spec if no file was specified. */
1010 int need_canonical = (s == 0) ? 1 : 0;
1011
1012 /* This is where we need to make sure that we have good defaults.
1013 We must guarantee that this section of code is never executed
1014 when we are called with just a function name, since
1015 select_source_symtab calls us with such an argument */
1016
1017 if (s == 0 && default_symtab == 0)
1018 {
1019 select_source_symtab (0);
1020 default_symtab = current_source_symtab;
1021 default_line = current_source_line;
1022 }
1023
1024 if (**argptr == '+')
1025 sign = plus, (*argptr)++;
1026 else if (**argptr == '-')
1027 sign = minus, (*argptr)++;
1028 val.line = atoi (*argptr);
1029 switch (sign)
1030 {
1031 case plus:
1032 if (q == *argptr)
1033 val.line = 5;
1034 if (s == 0)
1035 val.line = default_line + val.line;
1036 break;
1037 case minus:
1038 if (q == *argptr)
1039 val.line = 15;
1040 if (s == 0)
1041 val.line = default_line - val.line;
1042 else
1043 val.line = 1;
1044 break;
1045 case none:
1046 break; /* No need to adjust val.line. */
1047 }
1048
1049 while (*q == ' ' || *q == '\t')
1050 q++;
1051 *argptr = q;
1052 if (s == 0)
1053 s = default_symtab;
1054
1055 /* It is possible that this source file has more than one symtab,
1056 and that the new line number specification has moved us from the
1057 default (in s) to a new one. */
1058 val.symtab = find_line_symtab (s, val.line, NULL, NULL);
1059 if (val.symtab == 0)
1060 val.symtab = s;
1061
1062 val.pc = 0;
1063 values.sals = (struct symtab_and_line *)
1064 xmalloc (sizeof (struct symtab_and_line));
1065 values.sals[0] = val;
1066 values.nelts = 1;
1067 if (need_canonical)
1068 build_canonical_line_spec (values.sals, NULL, canonical);
1069 return values;
1070 }
1071
1072 /* Arg token is not digits => try it as a variable name
1073 Find the next token (everything up to end or next whitespace). */
1074
1075 if (**argptr == '$') /* May be a convenience variable */
1076 p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1)); /* One or two $ chars possible */
1077 else if (is_quoted)
1078 {
1079 p = skip_quoted (*argptr);
1080 if (p[-1] != '\'')
1081 error ("Unmatched single quote.");
1082 }
1083 else if (has_parens)
1084 {
1085 p = pp + 1;
1086 }
1087 else
1088 {
1089 p = skip_quoted (*argptr);
1090 }
1091
1092 copy = (char *) alloca (p - *argptr + 1);
1093 memcpy (copy, *argptr, p - *argptr);
1094 copy[p - *argptr] = '\0';
1095 if (p != *argptr
1096 && copy[0]
1097 && copy[0] == copy[p - *argptr - 1]
1098 && strchr (get_gdb_completer_quote_characters (), copy[0]) != NULL)
1099 {
1100 copy[p - *argptr - 1] = '\0';
1101 copy++;
1102 }
1103 while (*p == ' ' || *p == '\t')
1104 p++;
1105 *argptr = p;
1106
1107 /* If it starts with $: may be a legitimate variable or routine name
1108 (e.g. HP-UX millicode routines such as $$dyncall), or it may
1109 be history value, or it may be a convenience variable */
1110
1111 if (*copy == '$')
1112 {
1113 value_ptr valx;
1114 int index = 0;
1115 int need_canonical = 0;
1116
1117 p = (copy[1] == '$') ? copy + 2 : copy + 1;
1118 while (*p >= '0' && *p <= '9')
1119 p++;
1120 if (!*p) /* reached end of token without hitting non-digit */
1121 {
1122 /* We have a value history reference */
1123 sscanf ((copy[1] == '$') ? copy + 2 : copy + 1, "%d", &index);
1124 valx = access_value_history ((copy[1] == '$') ? -index : index);
1125 if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
1126 error ("History values used in line specs must have integer values.");
1127 }
1128 else
1129 {
1130 /* Not all digits -- may be user variable/function or a
1131 convenience variable */
1132
1133 /* Look up entire name as a symbol first */
1134 sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
1135 s = (struct symtab *) 0;
1136 need_canonical = 1;
1137 /* Symbol was found --> jump to normal symbol processing.
1138 Code following "symbol_found" expects "copy" to have the
1139 symbol name, "sym" to have the symbol pointer, "s" to be
1140 a specified file's symtab, and sym_symtab to be the symbol's
1141 symtab. */
1142 if (sym)
1143 goto symbol_found;
1144
1145 /* If symbol was not found, look in minimal symbol tables */
1146 msymbol = lookup_minimal_symbol (copy, 0, 0);
1147 /* Min symbol was found --> jump to minsym processing. */
1148 if (msymbol)
1149 goto minimal_symbol_found;
1150
1151 /* Not a user variable or function -- must be convenience variable */
1152 need_canonical = (s == 0) ? 1 : 0;
1153 valx = value_of_internalvar (lookup_internalvar (copy + 1));
1154 if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
1155 error ("Convenience variables used in line specs must have integer values.");
1156 }
1157
1158 /* Either history value or convenience value from above, in valx */
1159 val.symtab = s ? s : default_symtab;
1160 val.line = value_as_long (valx);
1161 val.pc = 0;
1162
1163 values.sals = (struct symtab_and_line *) xmalloc (sizeof val);
1164 values.sals[0] = val;
1165 values.nelts = 1;
1166
1167 if (need_canonical)
1168 build_canonical_line_spec (values.sals, NULL, canonical);
1169
1170 return values;
1171 }
1172
1173
1174 /* Look up that token as a variable.
1175 If file specified, use that file's per-file block to start with. */
1176
1177 sym = lookup_symbol (copy,
1178 (s ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK)
1179 : get_selected_block ()),
1180 VAR_NAMESPACE, 0, &sym_symtab);
1181
1182 symbol_found: /* We also jump here from inside the C++ class/namespace
1183 code on finding a symbol of the form "A::B::C" */
1184
1185 if (sym != NULL)
1186 {
1187 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
1188 {
1189 /* Arg is the name of a function */
1190 values.sals = (struct symtab_and_line *)
1191 xmalloc (sizeof (struct symtab_and_line));
1192 values.sals[0] = find_function_start_sal (sym, funfirstline);
1193 values.nelts = 1;
1194
1195 /* Don't use the SYMBOL_LINE; if used at all it points to
1196 the line containing the parameters or thereabouts, not
1197 the first line of code. */
1198
1199 /* We might need a canonical line spec if it is a static
1200 function. */
1201 if (s == 0)
1202 {
1203 struct blockvector *bv = BLOCKVECTOR (sym_symtab);
1204 struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1205 if (lookup_block_symbol (b, copy, VAR_NAMESPACE) != NULL)
1206 build_canonical_line_spec (values.sals, copy, canonical);
1207 }
1208 return values;
1209 }
1210 else
1211 {
1212 if (funfirstline)
1213 error ("\"%s\" is not a function", copy);
1214 else if (SYMBOL_LINE (sym) != 0)
1215 {
1216 /* We know its line number. */
1217 values.sals = (struct symtab_and_line *)
1218 xmalloc (sizeof (struct symtab_and_line));
1219 values.nelts = 1;
1220 memset (&values.sals[0], 0, sizeof (values.sals[0]));
1221 values.sals[0].symtab = sym_symtab;
1222 values.sals[0].line = SYMBOL_LINE (sym);
1223 return values;
1224 }
1225 else
1226 /* This can happen if it is compiled with a compiler which doesn't
1227 put out line numbers for variables. */
1228 /* FIXME: Shouldn't we just set .line and .symtab to zero
1229 and return? For example, "info line foo" could print
1230 the address. */
1231 error ("Line number not known for symbol \"%s\"", copy);
1232 }
1233 }
1234
1235 msymbol = lookup_minimal_symbol (copy, NULL, NULL);
1236
1237 minimal_symbol_found: /* We also jump here from the case for variables
1238 that begin with '$' */
1239
1240 if (msymbol != NULL)
1241 {
1242 values.sals = (struct symtab_and_line *)
1243 xmalloc (sizeof (struct symtab_and_line));
1244 values.sals[0] = find_pc_sect_line (SYMBOL_VALUE_ADDRESS (msymbol),
1245 (struct sec *) 0, 0);
1246 values.sals[0].section = SYMBOL_BFD_SECTION (msymbol);
1247 if (funfirstline)
1248 {
1249 values.sals[0].pc += FUNCTION_START_OFFSET;
1250 values.sals[0].pc = SKIP_PROLOGUE (values.sals[0].pc);
1251 }
1252 values.nelts = 1;
1253 return values;
1254 }
1255
1256 if (!have_full_symbols () &&
1257 !have_partial_symbols () && !have_minimal_symbols ())
1258 error ("No symbol table is loaded. Use the \"file\" command.");
1259
1260 error ("Function \"%s\" not defined.", copy);
1261 return values; /* for lint */
1262 }