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.
6 This file is part of GDB.
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.
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.
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. */
31 #include "completer.h"
34 /* Prototype for one function in parser-defs.h,
35 instead of including that entire file. */
37 extern char *find_template_name_end (char *);
39 /* We share this one with symtab.c, but it is not exported widely. */
41 extern char *operator_chars (char *, char **);
43 /* Prototypes for local functions */
45 static void cplusplus_error (const char *name, const char *fmt, ...) ATTR_FORMAT (printf, 2, 3);
47 static int total_number_of_methods (struct type *type);
49 static int find_methods (struct type *, char *, struct symbol **);
51 static void build_canonical_line_spec (struct symtab_and_line *,
54 static char *find_toplevel_char (char *s, char c);
56 static struct symtabs_and_lines decode_line_2 (struct symbol *[],
59 /* Helper functions. */
61 /* Issue a helpful hint on using the command completion feature on
62 single quoted demangled C++ symbols as part of the completion
66 cplusplus_error (const char *name, const char *fmt, ...)
68 struct ui_file *tmp_stream;
69 tmp_stream = mem_fileopen ();
70 make_cleanup_ui_file_delete (tmp_stream);
75 vfprintf_unfiltered (tmp_stream, fmt, args);
81 fprintf_unfiltered (tmp_stream,
82 ("Hint: try '%s<TAB> or '%s<ESC-?>\n"
83 "(Note leading single quote.)"),
85 error_stream (tmp_stream);
88 /* Return the number of methods described for TYPE, including the
89 methods from types it derives from. This can't be done in the symbol
90 reader because the type of the baseclass might still be stubbed
91 when the definition of the derived class is parsed. */
94 total_number_of_methods (struct type *type)
100 if (TYPE_CPLUS_SPECIFIC (type) == NULL)
102 count = TYPE_NFN_FIELDS_TOTAL (type);
104 for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
105 count += total_number_of_methods (TYPE_BASECLASS (type, n));
110 /* Recursive helper function for decode_line_1.
111 Look for methods named NAME in type T.
112 Return number of matches.
113 Put matches in SYM_ARR, which should have been allocated with
114 a size of total_number_of_methods (T) * sizeof (struct symbol *).
115 Note that this function is g++ specific. */
118 find_methods (struct type *t, char *name, struct symbol **sym_arr)
122 char *class_name = type_name_no_tag (t);
124 /* Ignore this class if it doesn't have a name. This is ugly, but
125 unless we figure out how to get the physname without the name of
126 the class, then the loop can't do any good. */
128 && (lookup_symbol (class_name, (struct block *) NULL,
129 STRUCT_NAMESPACE, (int *) NULL,
130 (struct symtab **) NULL)))
133 int name_len = strlen (name);
137 /* Loop over each method name. At this level, all overloads of a name
138 are counted as a single name. There is an inner loop which loops over
141 for (method_counter = TYPE_NFN_FIELDS (t) - 1;
146 char *method_name = TYPE_FN_FIELDLIST_NAME (t, method_counter);
149 if (strncmp (method_name, "__", 2) == 0 ||
150 strncmp (method_name, "op", 2) == 0 ||
151 strncmp (method_name, "type", 4) == 0)
153 if (cplus_demangle_opname (method_name, dem_opname, DMGL_ANSI))
154 method_name = dem_opname;
155 else if (cplus_demangle_opname (method_name, dem_opname, 0))
156 method_name = dem_opname;
159 if (strcmp_iw (name, method_name) == 0)
160 /* Find all the overloaded methods with that name. */
161 for (field_counter = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
168 f = TYPE_FN_FIELDLIST1 (t, method_counter);
170 if (TYPE_FN_FIELD_STUB (f, field_counter))
174 tmp_name = gdb_mangle_name (t,
177 phys_name = alloca (strlen (tmp_name) + 1);
178 strcpy (phys_name, tmp_name);
182 phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
184 /* Destructor is handled by caller, dont add it to the list */
185 if (is_destructor_name (phys_name) != 0)
188 sym_arr[i1] = lookup_symbol (phys_name,
191 (struct symtab **) NULL);
196 /* This error message gets printed, but the method
197 still seems to be found
198 fputs_filtered("(Cannot find method ", gdb_stdout);
199 fprintf_symbol_filtered (gdb_stdout, phys_name,
201 DMGL_PARAMS | DMGL_ANSI);
202 fputs_filtered(" - possibly inlined.)\n", gdb_stdout);
206 else if (strncmp (class_name, name, name_len) == 0
207 && (class_name[name_len] == '\0'
208 || class_name[name_len] == '<'))
210 /* For GCC 3.x and stabs, constructors and destructors have names
211 like __base_ctor and __complete_dtor. Check the physname for now
212 if we're looking for a constructor. */
214 = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
221 f = TYPE_FN_FIELDLIST1 (t, method_counter);
223 /* GCC 3.x will never produce stabs stub methods, so we don't need
224 to handle this case. */
225 if (TYPE_FN_FIELD_STUB (f, field_counter))
227 phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
228 if (! is_constructor_name (phys_name))
231 /* If this method is actually defined, include it in the
233 sym_arr[i1] = lookup_symbol (phys_name,
236 (struct symtab **) NULL);
244 /* Only search baseclasses if there is no match yet, since names in
245 derived classes override those in baseclasses.
247 FIXME: The above is not true; it is only true of member functions
248 if they have the same number of arguments (??? - section 13.1 of the
249 ARM says the function members are not in the same scope but doesn't
250 really spell out the rules in a way I understand. In any case, if
251 the number of arguments differ this is a case in which we can overload
252 rather than hiding without any problem, and gcc 2.4.5 does overload
253 rather than hiding in this case). */
256 for (ibase = 0; ibase < TYPE_N_BASECLASSES (t); ibase++)
257 i1 += find_methods (TYPE_BASECLASS (t, ibase), name, sym_arr + i1);
262 /* Helper function for decode_line_1.
263 Build a canonical line spec in CANONICAL if it is non-NULL and if
264 the SAL has a symtab.
265 If SYMNAME is non-NULL the canonical line spec is `filename:symname'.
266 If SYMNAME is NULL the line number from SAL is used and the canonical
267 line spec is `filename:linenum'. */
270 build_canonical_line_spec (struct symtab_and_line *sal, char *symname,
273 char **canonical_arr;
274 char *canonical_name;
276 struct symtab *s = sal->symtab;
278 if (s == (struct symtab *) NULL
279 || s->filename == (char *) NULL
280 || canonical == (char ***) NULL)
283 canonical_arr = (char **) xmalloc (sizeof (char *));
284 *canonical = canonical_arr;
286 filename = s->filename;
289 canonical_name = xmalloc (strlen (filename) + strlen (symname) + 2);
290 sprintf (canonical_name, "%s:%s", filename, symname);
294 canonical_name = xmalloc (strlen (filename) + 30);
295 sprintf (canonical_name, "%s:%d", filename, sal->line);
297 canonical_arr[0] = canonical_name;
302 /* Find an instance of the character C in the string S that is outside
303 of all parenthesis pairs, single-quoted strings, and double-quoted
304 strings. Also, ignore the char within a template name, like a ','
305 within foo<int, int>. */
308 find_toplevel_char (char *s, char c)
310 int quoted = 0; /* zero if we're not in quotes;
311 '"' if we're in a double-quoted string;
312 '\'' if we're in a single-quoted string. */
313 int depth = 0; /* number of unclosed parens we've seen */
316 for (scan = s; *scan; scan++)
322 else if (*scan == '\\' && *(scan + 1))
325 else if (*scan == c && ! quoted && depth == 0)
327 else if (*scan == '"' || *scan == '\'')
329 else if (*scan == '(' || *scan == '<')
331 else if ((*scan == ')' || *scan == '>') && depth > 0)
338 /* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
339 operate on (ask user if necessary).
340 If CANONICAL is non-NULL return a corresponding array of mangled names
341 as canonical line specs there. */
343 static struct symtabs_and_lines
344 decode_line_2 (struct symbol *sym_arr[], int nelts, int funfirstline,
347 struct symtabs_and_lines values, return_values;
352 struct cleanup *old_chain;
353 char **canonical_arr = (char **) NULL;
355 values.sals = (struct symtab_and_line *)
356 alloca (nelts * sizeof (struct symtab_and_line));
357 return_values.sals = (struct symtab_and_line *)
358 xmalloc (nelts * sizeof (struct symtab_and_line));
359 old_chain = make_cleanup (xfree, return_values.sals);
363 canonical_arr = (char **) xmalloc (nelts * sizeof (char *));
364 make_cleanup (xfree, canonical_arr);
365 memset (canonical_arr, 0, nelts * sizeof (char *));
366 *canonical = canonical_arr;
370 printf_unfiltered ("[0] cancel\n[1] all\n");
373 INIT_SAL (&return_values.sals[i]); /* initialize to zeroes */
374 INIT_SAL (&values.sals[i]);
375 if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
377 values.sals[i] = find_function_start_sal (sym_arr[i], funfirstline);
378 printf_unfiltered ("[%d] %s at %s:%d\n",
380 SYMBOL_SOURCE_NAME (sym_arr[i]),
381 values.sals[i].symtab->filename,
382 values.sals[i].line);
385 printf_unfiltered ("?HERE\n");
389 if ((prompt = getenv ("PS2")) == NULL)
393 args = command_line_input (prompt, 0, "overload-choice");
395 if (args == 0 || *args == 0)
396 error_no_arg ("one or more choice numbers");
404 while (*arg1 >= '0' && *arg1 <= '9')
406 if (*arg1 && *arg1 != ' ' && *arg1 != '\t')
407 error ("Arguments must be choice numbers.");
417 for (i = 0; i < nelts; i++)
419 if (canonical_arr[i] == NULL)
421 symname = SYMBOL_NAME (sym_arr[i]);
422 canonical_arr[i] = savestring (symname, strlen (symname));
426 memcpy (return_values.sals, values.sals,
427 (nelts * sizeof (struct symtab_and_line)));
428 return_values.nelts = nelts;
429 discard_cleanups (old_chain);
430 return return_values;
433 if (num >= nelts + 2)
435 printf_unfiltered ("No choice number %d.\n", num);
440 if (values.sals[num].pc)
444 symname = SYMBOL_NAME (sym_arr[num]);
445 make_cleanup (xfree, symname);
446 canonical_arr[i] = savestring (symname, strlen (symname));
448 return_values.sals[i++] = values.sals[num];
449 values.sals[num].pc = 0;
453 printf_unfiltered ("duplicate request for %d ignored.\n", num);
458 while (*args == ' ' || *args == '\t')
461 return_values.nelts = i;
462 discard_cleanups (old_chain);
463 return return_values;
466 /* The parser of linespec itself. */
468 /* Parse a string that specifies a line number.
469 Pass the address of a char * variable; that variable will be
470 advanced over the characters actually parsed.
474 LINENUM -- that line number in current file. PC returned is 0.
475 FILE:LINENUM -- that line in that file. PC returned is 0.
476 FUNCTION -- line number of openbrace of that function.
477 PC returned is the start of the function.
478 VARIABLE -- line number of definition of that variable.
480 FILE:FUNCTION -- likewise, but prefer functions in that file.
481 *EXPR -- line in which address EXPR appears.
483 This may all be followed by an "if EXPR", which we ignore.
485 FUNCTION may be an undebuggable function found in minimal symbol table.
487 If the argument FUNFIRSTLINE is nonzero, we want the first line
488 of real code inside a function when a function is specified, and it is
489 not OK to specify a variable or type to get its line number.
491 DEFAULT_SYMTAB specifies the file to use if none is specified.
492 It defaults to current_source_symtab.
493 DEFAULT_LINE specifies the line number to use for relative
494 line numbers (that start with signs). Defaults to current_source_line.
495 If CANONICAL is non-NULL, store an array of strings containing the canonical
496 line specs there if necessary. Currently overloaded member functions and
497 line numbers or static functions without a filename yield a canonical
498 line spec. The array and the line spec strings are allocated on the heap,
499 it is the callers responsibility to free them.
501 Note that it is possible to return zero for the symtab
502 if no file is validly specified. Callers must check that.
503 Also, the line number returned may be invalid. */
505 /* We allow single quotes in various places. This is a hideous
506 kludge, which exists because the completer can't yet deal with the
507 lack of single quotes. FIXME: write a linespec_completer which we
508 can use as appropriate instead of make_symbol_completion_list. */
510 struct symtabs_and_lines
511 decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
512 int default_line, char ***canonical)
514 struct symtabs_and_lines values;
515 struct symtab_and_line val;
516 register char *p, *p1;
517 char *q, *pp, *ii, *p2;
521 register struct symtab *s;
523 register struct symbol *sym;
524 /* The symtab that SYM was found in. */
525 struct symtab *sym_symtab;
527 register CORE_ADDR pc;
528 register struct minimal_symbol *msymbol;
530 struct symbol *sym_class;
533 int is_quote_enclosed;
537 struct symbol **sym_arr;
539 char *saved_arg = *argptr;
540 extern char *gdb_completer_quote_characters;
542 INIT_SAL (&val); /* initialize to zeroes */
544 /* Defaults have defaults. */
546 if (default_symtab == 0)
548 default_symtab = current_source_symtab;
549 default_line = current_source_line;
552 /* See if arg is *PC */
557 pc = parse_and_eval_address_1 (argptr);
559 values.sals = (struct symtab_and_line *)
560 xmalloc (sizeof (struct symtab_and_line));
563 values.sals[0] = find_pc_line (pc, 0);
564 values.sals[0].pc = pc;
565 values.sals[0].section = find_pc_overlay (pc);
570 /* 'has_if' is for the syntax:
571 * (gdb) break foo if (a==b)
573 if ((ii = strstr (*argptr, " if ")) != NULL ||
574 (ii = strstr (*argptr, "\tif ")) != NULL ||
575 (ii = strstr (*argptr, " if\t")) != NULL ||
576 (ii = strstr (*argptr, "\tif\t")) != NULL ||
577 (ii = strstr (*argptr, " if(")) != NULL ||
578 (ii = strstr (*argptr, "\tif( ")) != NULL)
580 /* Temporarily zap out "if (condition)" to not
581 * confuse the parenthesis-checking code below.
582 * This is undone below. Do not change ii!!
589 /* Set various flags.
590 * 'has_parens' is important for overload checking, where
591 * we allow things like:
592 * (gdb) break c::f(int)
595 /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
597 is_quoted = (**argptr
598 && strchr (get_gdb_completer_quote_characters (),
601 has_parens = ((pp = strchr (*argptr, '(')) != NULL
602 && (pp = strrchr (pp, ')')) != NULL);
604 /* Now that we're safely past the has_parens check,
605 * put back " if (condition)" so outer layers can see it
610 /* Maybe we were called with a line range FILENAME:LINENUM,FILENAME:LINENUM
611 and we must isolate the first half. Outer layers will call again later
614 Don't count commas that appear in argument lists of overloaded
615 functions, or in quoted strings. It's stupid to go to this much
616 trouble when the rest of the function is such an obvious roach hotel. */
617 ii = find_toplevel_char (*argptr, ',');
618 has_comma = (ii != 0);
620 /* Temporarily zap out second half to not
621 * confuse the code below.
622 * This is undone below. Do not change ii!!
629 /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
630 /* May also be CLASS::MEMBER, or NAMESPACE::NAME */
631 /* Look for ':', but ignore inside of <> */
637 is_quote_enclosed = 1;
642 is_quote_enclosed = 0;
647 char *temp_end = find_template_name_end (p);
649 error ("malformed template specification in command");
652 /* Check for the end of the first half of the linespec. End of line,
653 a tab, a double colon or the last single colon, or a space. But
654 if enclosed in double quotes we do not break on enclosed spaces */
658 && ((p[1] == ':') || (strchr (p + 1, ':') == NULL)))
659 || ((p[0] == ' ') && !is_quote_enclosed))
661 if (p[0] == '.' && strchr (p, ':') == NULL) /* Java qualified method. */
663 /* Find the *last* '.', since the others are package qualifiers. */
664 for (p1 = p; *p1; p1++)
672 while (p[0] == ' ' || p[0] == '\t')
675 /* if the closing double quote was left at the end, remove it */
676 if (is_quote_enclosed)
678 char *closing_quote = strchr (p - 1, '"');
679 if (closing_quote && closing_quote[1] == '\0')
680 *closing_quote = '\0';
683 /* Now that we've safely parsed the first half,
684 * put back ',' so outer layers can see it
689 if ((p[0] == ':' || p[0] == '.') && !has_parens)
694 *argptr = *argptr + 1;
695 if (p[0] == '.' || p[1] == ':')
697 char *saved_arg2 = *argptr;
699 /* First check for "global" namespace specification,
700 of the form "::foo". If found, skip over the colons
701 and jump to normal symbol processing */
703 && ((*argptr == p) || (p[-1] == ' ') || (p[-1] == '\t')))
706 /* We have what looks like a class or namespace
707 scope specification (A::B), possibly with many
708 levels of namespaces or classes (A::B::C::D).
710 Some versions of the HP ANSI C++ compiler (as also possibly
711 other compilers) generate class/function/member names with
712 embedded double-colons if they are inside namespaces. To
713 handle this, we loop a few times, considering larger and
714 larger prefixes of the string as though they were single
715 symbols. So, if the initially supplied string is
716 A::B::C::D::foo, we have to look up "A", then "A::B",
717 then "A::B::C", then "A::B::C::D", and finally
718 "A::B::C::D::foo" as single, monolithic symbols, because
719 A, B, C or D may be namespaces.
721 Note that namespaces can nest only inside other
722 namespaces, and not inside classes. So we need only
723 consider *prefixes* of the string; there is no need to look up
724 "B::C" separately as a symbol in the previous example. */
726 p2 = p; /* save for restart */
729 /* Extract the class name. */
731 while (p != *argptr && p[-1] == ' ')
733 copy = (char *) alloca (p - *argptr + 1);
734 memcpy (copy, *argptr, p - *argptr);
735 copy[p - *argptr] = 0;
737 /* Discard the class name from the arg. */
738 p = p1 + (p1[0] == ':' ? 2 : 1);
739 while (*p == ' ' || *p == '\t')
743 sym_class = lookup_symbol (copy, 0, STRUCT_NAMESPACE, 0,
744 (struct symtab **) NULL);
747 (t = check_typedef (SYMBOL_TYPE (sym_class)),
748 (TYPE_CODE (t) == TYPE_CODE_STRUCT
749 || TYPE_CODE (t) == TYPE_CODE_UNION)))
751 /* Arg token is not digits => try it as a function name
752 Find the next token(everything up to end or next blank). */
754 && strchr (get_gdb_completer_quote_characters (),
757 p = skip_quoted (*argptr);
758 *argptr = *argptr + 1;
763 while (*p && *p != ' ' && *p != '\t' && *p != ',' && *p != ':')
767 q = operator_chars (*argptr, &q1);
771 char *tmp = alloca (q1 - q + 1);
772 memcpy (tmp, q, q1 - q);
774 opname = cplus_mangle_opname (tmp, DMGL_ANSI);
777 cplusplus_error (saved_arg, "no mangling for \"%s\"\n", tmp);
779 copy = (char*) alloca (3 + strlen(opname));
780 sprintf (copy, "__%s", opname);
786 copy = (char *) alloca (p - *argptr + 1);
787 memcpy (copy, *argptr, p - *argptr);
788 copy[p - *argptr] = '\0';
790 && copy[p - *argptr - 1]
791 && strchr (get_gdb_completer_quote_characters (),
792 copy[p - *argptr - 1]) != NULL)
793 copy[p - *argptr - 1] = '\0';
796 /* no line number may be specified */
797 while (*p == ' ' || *p == '\t')
802 i1 = 0; /* counter for the symbol array */
803 sym_arr = (struct symbol **) alloca (total_number_of_methods (t)
804 * sizeof (struct symbol *));
806 if (destructor_name_p (copy, t))
808 /* Destructors are a special case. */
809 int m_index, f_index;
811 if (get_destructor_fn_field (t, &m_index, &f_index))
813 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, m_index);
816 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, f_index),
817 NULL, VAR_NAMESPACE, (int *) NULL,
818 (struct symtab **) NULL);
824 i1 = find_methods (t, copy, sym_arr);
827 /* There is exactly one field with that name. */
830 if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
832 values.sals = (struct symtab_and_line *)
833 xmalloc (sizeof (struct symtab_and_line));
835 values.sals[0] = find_function_start_sal (sym,
846 /* There is more than one field with that name
847 (overloaded). Ask the user which one to use. */
848 return decode_line_2 (sym_arr, i1, funfirstline, canonical);
854 if (is_operator_name (copy))
856 tmp = (char *) alloca (strlen (copy + 3) + 9);
857 strcpy (tmp, "operator ");
858 strcat (tmp, copy + 3);
863 cplusplus_error (saved_arg,
864 "the class `%s' does not have destructor defined\n",
865 SYMBOL_SOURCE_NAME (sym_class));
867 cplusplus_error (saved_arg,
868 "the class %s does not have any method named %s\n",
869 SYMBOL_SOURCE_NAME (sym_class), tmp);
873 /* Move pointer up to next possible class/namespace token */
874 p = p2 + 1; /* restart with old value +1 */
875 /* Move pointer ahead to next double-colon */
876 while (*p && (p[0] != ' ') && (p[0] != '\t') && (p[0] != '\''))
880 temp_end = find_template_name_end (p);
882 error ("malformed template specification in command");
885 else if ((p[0] == ':') && (p[1] == ':'))
886 break; /* found double-colon */
892 break; /* out of the while (1) */
894 p2 = p; /* save restart for next time around */
895 *argptr = saved_arg2; /* restore argptr */
898 /* Last chance attempt -- check entire name as a symbol */
899 /* Use "copy" in preparation for jumping out of this block,
900 to be consistent with usage following the jump target */
901 copy = (char *) alloca (p - saved_arg2 + 1);
902 memcpy (copy, saved_arg2, p - saved_arg2);
903 /* Note: if is_quoted should be true, we snuff out quote here anyway */
904 copy[p - saved_arg2] = '\000';
905 /* Set argptr to skip over the name */
906 *argptr = (*p == '\'') ? p + 1 : p;
907 /* Look up entire name */
908 sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
909 s = (struct symtab *) 0;
910 /* Prepare to jump: restore the " if (condition)" so outer layers see it */
911 /* Symbol was found --> jump to normal symbol processing.
912 Code following "symbol_found" expects "copy" to have the
913 symbol name, "sym" to have the symbol pointer, "s" to be
914 a specified file's symtab, and sym_symtab to be the symbol's
916 /* By jumping there we avoid falling through the FILE:LINE and
917 FILE:FUNC processing stuff below */
921 /* Couldn't find any interpretation as classes/namespaces, so give up */
922 /* The quotes are important if copy is empty. */
923 cplusplus_error (saved_arg,
924 "Can't find member of namespace, class, struct, or union named \"%s\"\n",
930 /* Extract the file name. */
932 while (p != *argptr && p[-1] == ' ')
934 if ((*p == '"') && is_quote_enclosed)
936 copy = (char *) alloca (p - *argptr + 1);
937 memcpy (copy, *argptr, p - *argptr);
938 /* It may have the ending quote right after the file name */
939 if (is_quote_enclosed && copy[p - *argptr - 1] == '"')
940 copy[p - *argptr - 1] = 0;
942 copy[p - *argptr] = 0;
944 /* Find that file's data. */
945 s = lookup_symtab (copy);
948 if (!have_full_symbols () && !have_partial_symbols ())
949 error ("No symbol table is loaded. Use the \"file\" command.");
950 error ("No source file named %s.", copy);
953 /* Discard the file name from the arg. */
955 while (*p == ' ' || *p == '\t')
960 /* No one really seems to know why this was added. It certainly
961 breaks the command line, though, whenever the passed
962 name is of the form ClassName::Method. This bit of code
963 singles out the class name, and if funfirstline is set (for
964 example, you are setting a breakpoint at this function),
965 you get an error. This did not occur with earlier
966 verions, so I am ifdef'ing this out. 3/29/99 */
969 /* Check if what we have till now is a symbol name */
971 /* We may be looking at a template instantiation such
972 as "foo<int>". Check here whether we know about it,
973 instead of falling through to the code below which
974 handles ordinary function names, because that code
975 doesn't like seeing '<' and '>' in a name -- the
976 skip_quoted call doesn't go past them. So see if we
977 can figure it out right now. */
979 copy = (char *) alloca (p - *argptr + 1);
980 memcpy (copy, *argptr, p - *argptr);
981 copy[p - *argptr] = '\000';
982 sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
985 /* Yes, we have a symbol; jump to symbol processing */
986 /* Code after symbol_found expects S, SYM_SYMTAB, SYM,
987 and COPY to be set correctly */
988 *argptr = (*p == '\'') ? p + 1 : p;
989 s = (struct symtab *) 0;
992 /* Otherwise fall out from here and go to file/line spec
997 /* S is specified file's symtab, or 0 if no file specified.
998 arg no longer contains the file name. */
1000 /* Check whether arg is all digits (and sign) */
1003 if (*q == '-' || *q == '+')
1005 while (*q >= '0' && *q <= '9')
1008 if (q != *argptr && (*q == 0 || *q == ' ' || *q == '\t' || *q == ','))
1010 /* We found a token consisting of all digits -- at least one digit. */
1017 /* We might need a canonical line spec if no file was specified. */
1018 int need_canonical = (s == 0) ? 1 : 0;
1020 /* This is where we need to make sure that we have good defaults.
1021 We must guarantee that this section of code is never executed
1022 when we are called with just a function name, since
1023 select_source_symtab calls us with such an argument */
1025 if (s == 0 && default_symtab == 0)
1027 select_source_symtab (0);
1028 default_symtab = current_source_symtab;
1029 default_line = current_source_line;
1032 if (**argptr == '+')
1033 sign = plus, (*argptr)++;
1034 else if (**argptr == '-')
1035 sign = minus, (*argptr)++;
1036 val.line = atoi (*argptr);
1043 val.line = default_line + val.line;
1049 val.line = default_line - val.line;
1054 break; /* No need to adjust val.line. */
1057 while (*q == ' ' || *q == '\t')
1063 /* It is possible that this source file has more than one symtab,
1064 and that the new line number specification has moved us from the
1065 default (in s) to a new one. */
1066 val.symtab = find_line_symtab (s, val.line, NULL, NULL);
1067 if (val.symtab == 0)
1071 values.sals = (struct symtab_and_line *)
1072 xmalloc (sizeof (struct symtab_and_line));
1073 values.sals[0] = val;
1076 build_canonical_line_spec (values.sals, NULL, canonical);
1080 /* Arg token is not digits => try it as a variable name
1081 Find the next token (everything up to end or next whitespace). */
1083 if (**argptr == '$') /* May be a convenience variable */
1084 p = skip_quoted (*argptr + (((*argptr)[1] == '$') ? 2 : 1)); /* One or two $ chars possible */
1087 p = skip_quoted (*argptr);
1089 error ("Unmatched single quote.");
1091 else if (has_parens)
1097 p = skip_quoted (*argptr);
1100 copy = (char *) alloca (p - *argptr + 1);
1101 memcpy (copy, *argptr, p - *argptr);
1102 copy[p - *argptr] = '\0';
1105 && copy[0] == copy[p - *argptr - 1]
1106 && strchr (get_gdb_completer_quote_characters (), copy[0]) != NULL)
1108 copy[p - *argptr - 1] = '\0';
1111 while (*p == ' ' || *p == '\t')
1115 /* If it starts with $: may be a legitimate variable or routine name
1116 (e.g. HP-UX millicode routines such as $$dyncall), or it may
1117 be history value, or it may be a convenience variable */
1123 int need_canonical = 0;
1125 p = (copy[1] == '$') ? copy + 2 : copy + 1;
1126 while (*p >= '0' && *p <= '9')
1128 if (!*p) /* reached end of token without hitting non-digit */
1130 /* We have a value history reference */
1131 sscanf ((copy[1] == '$') ? copy + 2 : copy + 1, "%d", &index);
1132 valx = access_value_history ((copy[1] == '$') ? -index : index);
1133 if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
1134 error ("History values used in line specs must have integer values.");
1138 /* Not all digits -- may be user variable/function or a
1139 convenience variable */
1141 /* Look up entire name as a symbol first */
1142 sym = lookup_symbol (copy, 0, VAR_NAMESPACE, 0, &sym_symtab);
1143 s = (struct symtab *) 0;
1145 /* Symbol was found --> jump to normal symbol processing.
1146 Code following "symbol_found" expects "copy" to have the
1147 symbol name, "sym" to have the symbol pointer, "s" to be
1148 a specified file's symtab, and sym_symtab to be the symbol's
1153 /* If symbol was not found, look in minimal symbol tables */
1154 msymbol = lookup_minimal_symbol (copy, NULL, NULL);
1155 /* Min symbol was found --> jump to minsym processing. */
1157 goto minimal_symbol_found;
1159 /* Not a user variable or function -- must be convenience variable */
1160 need_canonical = (s == 0) ? 1 : 0;
1161 valx = value_of_internalvar (lookup_internalvar (copy + 1));
1162 if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
1163 error ("Convenience variables used in line specs must have integer values.");
1166 /* Either history value or convenience value from above, in valx */
1167 val.symtab = s ? s : default_symtab;
1168 val.line = value_as_long (valx);
1171 values.sals = (struct symtab_and_line *) xmalloc (sizeof val);
1172 values.sals[0] = val;
1176 build_canonical_line_spec (values.sals, NULL, canonical);
1182 /* Look up that token as a variable.
1183 If file specified, use that file's per-file block to start with. */
1185 sym = lookup_symbol (copy,
1186 (s ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK)
1187 : get_selected_block (0)),
1188 VAR_NAMESPACE, 0, &sym_symtab);
1190 symbol_found: /* We also jump here from inside the C++ class/namespace
1191 code on finding a symbol of the form "A::B::C" */
1195 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
1197 /* Arg is the name of a function */
1198 values.sals = (struct symtab_and_line *)
1199 xmalloc (sizeof (struct symtab_and_line));
1200 values.sals[0] = find_function_start_sal (sym, funfirstline);
1203 /* Don't use the SYMBOL_LINE; if used at all it points to
1204 the line containing the parameters or thereabouts, not
1205 the first line of code. */
1207 /* We might need a canonical line spec if it is a static
1211 struct blockvector *bv = BLOCKVECTOR (sym_symtab);
1212 struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
1213 if (lookup_block_symbol (b, copy, NULL, VAR_NAMESPACE) != NULL)
1214 build_canonical_line_spec (values.sals, copy, canonical);
1221 error ("\"%s\" is not a function", copy);
1222 else if (SYMBOL_LINE (sym) != 0)
1224 /* We know its line number. */
1225 values.sals = (struct symtab_and_line *)
1226 xmalloc (sizeof (struct symtab_and_line));
1228 memset (&values.sals[0], 0, sizeof (values.sals[0]));
1229 values.sals[0].symtab = sym_symtab;
1230 values.sals[0].line = SYMBOL_LINE (sym);
1234 /* This can happen if it is compiled with a compiler which doesn't
1235 put out line numbers for variables. */
1236 /* FIXME: Shouldn't we just set .line and .symtab to zero
1237 and return? For example, "info line foo" could print
1239 error ("Line number not known for symbol \"%s\"", copy);
1243 msymbol = lookup_minimal_symbol (copy, NULL, NULL);
1245 minimal_symbol_found: /* We also jump here from the case for variables
1246 that begin with '$' */
1248 if (msymbol != NULL)
1250 values.sals = (struct symtab_and_line *)
1251 xmalloc (sizeof (struct symtab_and_line));
1252 values.sals[0] = find_pc_sect_line (SYMBOL_VALUE_ADDRESS (msymbol),
1253 (struct sec *) 0, 0);
1254 values.sals[0].section = SYMBOL_BFD_SECTION (msymbol);
1257 values.sals[0].pc += FUNCTION_START_OFFSET;
1258 values.sals[0].pc = SKIP_PROLOGUE (values.sals[0].pc);
1264 if (!have_full_symbols () &&
1265 !have_partial_symbols () && !have_minimal_symbols ())
1266 error ("No symbol table is loaded. Use the \"file\" command.");
1268 error ("Function \"%s\" not defined.", copy);
1269 return values; /* for lint */