1 /* Symbol table lookup for the GNU debugger, GDB.
2 Copyright 1986, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 1997
3 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
31 #include "call-cmds.h"
32 #include "gnu-regex.h"
33 #include "expression.h"
40 #include <sys/types.h>
42 #include "gdb_string.h"
46 /* Prototypes for local functions */
49 find_methods PARAMS ((struct type *, char *, struct symbol **));
52 completion_list_add_name PARAMS ((char *, char *, int, char *, char *));
55 build_canonical_line_spec PARAMS ((struct symtab_and_line *, char *, char ***));
57 static struct symtabs_and_lines
58 decode_line_2 PARAMS ((struct symbol *[], int, int, char ***));
61 rbreak_command PARAMS ((char *, int));
64 types_info PARAMS ((char *, int));
67 functions_info PARAMS ((char *, int));
70 variables_info PARAMS ((char *, int));
73 sources_info PARAMS ((char *, int));
76 list_symbols PARAMS ((char *, int, int, int));
79 output_source_filename PARAMS ((char *, int *));
82 operator_chars PARAMS ((char *, char **));
84 static int find_line_common PARAMS ((struct linetable *, int, int *));
86 static struct partial_symbol *
87 lookup_partial_symbol PARAMS ((struct partial_symtab *, const char *,
88 int, namespace_enum));
90 static struct partial_symbol *
91 fixup_psymbol_section PARAMS ((struct partial_symbol *, struct objfile *));
93 static struct symtab *
94 lookup_symtab_1 PARAMS ((char *));
97 cplusplus_hint PARAMS ((char *));
99 static struct symbol *
100 find_active_alias PARAMS ((struct symbol *sym, CORE_ADDR addr));
104 /* The single non-language-specific builtin type */
105 struct type *builtin_type_error;
107 /* Block in which the most recently searched-for symbol was found.
108 Might be better to make this a parameter to lookup_symbol and
111 const struct block *block_found;
113 char no_symtab_msg[] = "No symbol table is loaded. Use the \"file\" command.";
115 /* While the C++ support is still in flux, issue a possibly helpful hint on
116 using the new command completion feature on single quoted demangled C++
117 symbols. Remove when loose ends are cleaned up. FIXME -fnf */
120 cplusplus_hint (name)
123 while (*name == '\'')
125 printf_filtered ("Hint: try '%s<TAB> or '%s<ESC-?>\n", name, name);
126 printf_filtered ("(Note leading single quote.)\n");
129 /* Check for a symtab of a specific name; first in symtabs, then in
130 psymtabs. *If* there is no '/' in the name, a match after a '/'
131 in the symtab filename will also work. */
133 static struct symtab *
134 lookup_symtab_1 (name)
137 register struct symtab *s;
138 register struct partial_symtab *ps;
139 register char *slash;
140 register struct objfile *objfile;
144 /* First, search for an exact match */
146 ALL_SYMTABS (objfile, s)
147 if (STREQ (name, s->filename))
150 slash = strchr (name, '/');
152 /* Now, search for a matching tail (only if name doesn't have any dirs) */
155 ALL_SYMTABS (objfile, s)
157 char *p = s -> filename;
158 char *tail = strrchr (p, '/');
167 /* Same search rules as above apply here, but now we look thru the
170 ps = lookup_partial_symtab (name);
175 error ("Internal: readin %s pst for `%s' found when no symtab found.",
176 ps -> filename, name);
178 s = PSYMTAB_TO_SYMTAB (ps);
183 /* At this point, we have located the psymtab for this file, but
184 the conversion to a symtab has failed. This usually happens
185 when we are looking up an include file. In this case,
186 PSYMTAB_TO_SYMTAB doesn't return a symtab, even though one has
187 been created. So, we need to run through the symtabs again in
188 order to find the file.
189 XXX - This is a crock, and should be fixed inside of the the
190 symbol parsing routines. */
194 /* Lookup the symbol table of a source file named NAME. Try a couple
195 of variations if the first lookup doesn't work. */
201 register struct symtab *s;
206 s = lookup_symtab_1 (name);
210 /* This screws c-exp.y:yylex if there is both a type "tree" and a symtab
213 /* If name not found as specified, see if adding ".c" helps. */
214 /* Why is this? Is it just a user convenience? (If so, it's pretty
215 questionable in the presence of C++, FORTRAN, etc.). It's not in
218 copy = (char *) alloca (strlen (name) + 3);
221 s = lookup_symtab_1 (copy);
225 /* We didn't find anything; die. */
229 /* Lookup the partial symbol table of a source file named NAME.
230 *If* there is no '/' in the name, a match after a '/'
231 in the psymtab filename will also work. */
233 struct partial_symtab *
234 lookup_partial_symtab (name)
237 register struct partial_symtab *pst;
238 register struct objfile *objfile;
240 ALL_PSYMTABS (objfile, pst)
242 if (STREQ (name, pst -> filename))
248 /* Now, search for a matching tail (only if name doesn't have any dirs) */
250 if (!strchr (name, '/'))
251 ALL_PSYMTABS (objfile, pst)
253 char *p = pst -> filename;
254 char *tail = strrchr (p, '/');
266 /* Demangle a GDB method stub type.
267 Note that this function is g++ specific. */
270 gdb_mangle_name (type, i, j)
274 int mangled_name_len;
276 struct fn_field *f = TYPE_FN_FIELDLIST1 (type, i);
277 struct fn_field *method = &f[j];
278 char *field_name = TYPE_FN_FIELDLIST_NAME (type, i);
279 char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
280 char *newname = type_name_no_tag (type);
282 /* Does the form of physname indicate that it is the full mangled name
283 of a constructor (not just the args)? */
284 int is_full_physname_constructor;
287 int is_destructor = DESTRUCTOR_PREFIX_P (physname);
288 /* Need a new type prefix. */
289 char *const_prefix = method->is_const ? "C" : "";
290 char *volatile_prefix = method->is_volatile ? "V" : "";
292 int len = (newname == NULL ? 0 : strlen (newname));
294 is_full_physname_constructor =
295 ((physname[0]=='_' && physname[1]=='_' &&
296 (isdigit(physname[2]) || physname[2]=='Q' || physname[2]=='t'))
297 || (strncmp(physname, "__ct", 4) == 0));
300 is_full_physname_constructor || (newname && STREQ(field_name, newname));
303 is_destructor = (strncmp(physname, "__dt", 4) == 0);
305 if (is_destructor || is_full_physname_constructor)
307 mangled_name = (char*) xmalloc(strlen(physname)+1);
308 strcpy(mangled_name, physname);
314 sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
316 else if (physname[0] == 't' || physname[0] == 'Q')
318 /* The physname for template and qualified methods already includes
320 sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
326 sprintf (buf, "__%s%s%d", const_prefix, volatile_prefix, len);
328 mangled_name_len = ((is_constructor ? 0 : strlen (field_name))
333 /* Only needed for GNU-mangled names. ANSI-mangled names
334 work with the normal mechanisms. */
335 if (OPNAME_PREFIX_P (field_name))
337 const char *opname = cplus_mangle_opname (field_name + 3, 0);
339 error ("No mangling for \"%s\"", field_name);
340 mangled_name_len += strlen (opname);
341 mangled_name = (char *)xmalloc (mangled_name_len);
343 strncpy (mangled_name, field_name, 3);
344 mangled_name[3] = '\0';
345 strcat (mangled_name, opname);
349 mangled_name = (char *)xmalloc (mangled_name_len);
351 mangled_name[0] = '\0';
353 strcpy (mangled_name, field_name);
355 strcat (mangled_name, buf);
356 /* If the class doesn't have a name, i.e. newname NULL, then we just
357 mangle it using 0 for the length of the class. Thus it gets mangled
358 as something starting with `::' rather than `classname::'. */
360 strcat (mangled_name, newname);
362 strcat (mangled_name, physname);
363 return (mangled_name);
368 /* Find which partial symtab on contains PC and SECTION. Return 0 if none. */
370 struct partial_symtab *
371 find_pc_sect_psymtab (pc, section)
375 register struct partial_symtab *pst;
376 register struct objfile *objfile;
378 ALL_PSYMTABS (objfile, pst)
380 if (pc >= pst->textlow && pc < pst->texthigh)
382 struct minimal_symbol *msymbol;
383 struct partial_symtab *tpst;
385 /* An objfile that has its functions reordered might have
386 many partial symbol tables containing the PC, but
387 we want the partial symbol table that contains the
388 function containing the PC. */
389 if (!(objfile->flags & OBJF_REORDERED) &&
390 section == 0) /* can't validate section this way */
393 msymbol = lookup_minimal_symbol_by_pc_section (pc, section);
397 for (tpst = pst; tpst != NULL; tpst = tpst->next)
399 if (pc >= tpst->textlow && pc < tpst->texthigh)
401 struct partial_symbol *p;
403 p = find_pc_sect_psymbol (tpst, pc, section);
405 && SYMBOL_VALUE_ADDRESS(p)
406 == SYMBOL_VALUE_ADDRESS (msymbol))
416 /* Find which partial symtab contains PC. Return 0 if none.
417 Backward compatibility, no section */
419 struct partial_symtab *
423 return find_pc_sect_psymtab (pc, find_pc_mapped_section (pc));
426 /* Find which partial symbol within a psymtab matches PC and SECTION.
427 Return 0 if none. Check all psymtabs if PSYMTAB is 0. */
429 struct partial_symbol *
430 find_pc_sect_psymbol (psymtab, pc, section)
431 struct partial_symtab *psymtab;
435 struct partial_symbol *best = NULL, *p, **pp;
439 psymtab = find_pc_sect_psymtab (pc, section);
443 best_pc = psymtab->textlow - 1;
445 /* Search the global symbols as well as the static symbols, so that
446 find_pc_partial_function doesn't use a minimal symbol and thus
447 cache a bad endaddr. */
448 for (pp = psymtab->objfile->global_psymbols.list + psymtab->globals_offset;
449 (pp - (psymtab->objfile->global_psymbols.list + psymtab->globals_offset)
450 < psymtab->n_global_syms);
454 if (SYMBOL_NAMESPACE (p) == VAR_NAMESPACE
455 && SYMBOL_CLASS (p) == LOC_BLOCK
456 && pc >= SYMBOL_VALUE_ADDRESS (p)
457 && SYMBOL_VALUE_ADDRESS (p) > best_pc)
459 if (section) /* match on a specific section */
461 fixup_psymbol_section (p, psymtab->objfile);
462 if (SYMBOL_BFD_SECTION (p) != section)
465 best_pc = SYMBOL_VALUE_ADDRESS (p);
469 for (pp = psymtab->objfile->static_psymbols.list + psymtab->statics_offset;
470 (pp - (psymtab->objfile->static_psymbols.list + psymtab->statics_offset)
471 < psymtab->n_static_syms);
475 if (SYMBOL_NAMESPACE (p) == VAR_NAMESPACE
476 && SYMBOL_CLASS (p) == LOC_BLOCK
477 && pc >= SYMBOL_VALUE_ADDRESS (p)
478 && SYMBOL_VALUE_ADDRESS (p) > best_pc)
480 if (section) /* match on a specific section */
482 fixup_psymbol_section (p, psymtab->objfile);
483 if (SYMBOL_BFD_SECTION (p) != section)
486 best_pc = SYMBOL_VALUE_ADDRESS (p);
490 if (best_pc == psymtab->textlow - 1)
495 /* Find which partial symbol within a psymtab matches PC. Return 0 if none.
496 Check all psymtabs if PSYMTAB is 0. Backwards compatibility, no section. */
498 struct partial_symbol *
499 find_pc_psymbol (psymtab, pc)
500 struct partial_symtab *psymtab;
503 return find_pc_sect_psymbol (psymtab, pc, find_pc_mapped_section (pc));
506 /* Debug symbols usually don't have section information. We need to dig that
507 out of the minimal symbols and stash that in the debug symbol. */
510 fixup_section (ginfo, objfile)
511 struct general_symbol_info *ginfo;
512 struct objfile *objfile;
514 struct minimal_symbol *msym;
515 msym = lookup_minimal_symbol (ginfo->name, NULL, objfile);
518 ginfo->bfd_section = SYMBOL_BFD_SECTION (msym);
522 fixup_symbol_section (sym, objfile)
524 struct objfile *objfile;
529 if (SYMBOL_BFD_SECTION (sym))
532 fixup_section (&sym->ginfo, objfile);
537 static struct partial_symbol *
538 fixup_psymbol_section (psym, objfile)
539 struct partial_symbol *psym;
540 struct objfile *objfile;
545 if (SYMBOL_BFD_SECTION (psym))
548 fixup_section (&psym->ginfo, objfile);
553 /* Find the definition for a specified symbol name NAME
554 in namespace NAMESPACE, visible from lexical block BLOCK.
555 Returns the struct symbol pointer, or zero if no symbol is found.
556 If SYMTAB is non-NULL, store the symbol table in which the
557 symbol was found there, or NULL if not found.
558 C++: if IS_A_FIELD_OF_THIS is nonzero on entry, check to see if
559 NAME is a field of the current implied argument `this'. If so set
560 *IS_A_FIELD_OF_THIS to 1, otherwise set it to zero.
561 BLOCK_FOUND is set to the block in which NAME is found (in the case of
562 a field of `this', value_of_this sets BLOCK_FOUND to the proper value.) */
564 /* This function has a bunch of loops in it and it would seem to be
565 attractive to put in some QUIT's (though I'm not really sure
566 whether it can run long enough to be really important). But there
567 are a few calls for which it would appear to be bad news to quit
568 out of here: find_proc_desc in alpha-tdep.c and mips-tdep.c, and
569 nindy_frame_chain_valid in nindy-tdep.c. (Note that there is C++
570 code below which can error(), but that probably doesn't affect
571 these calls since they are looking for a known variable and thus
572 can probably assume it will never hit the C++ code). */
575 lookup_symbol (name, block, namespace, is_a_field_of_this, symtab)
577 register const struct block *block;
578 const namespace_enum namespace;
579 int *is_a_field_of_this;
580 struct symtab **symtab;
582 register struct symbol *sym;
583 register struct symtab *s = NULL;
584 register struct partial_symtab *ps;
585 struct blockvector *bv;
586 register struct objfile *objfile = NULL;
587 register struct block *b;
588 register struct minimal_symbol *msymbol;
590 /* Search specified block and its superiors. */
594 sym = lookup_block_symbol (block, name, namespace);
600 /* Search the list of symtabs for one which contains the
601 address of the start of this block. */
602 ALL_SYMTABS (objfile, s)
604 bv = BLOCKVECTOR (s);
605 b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
606 if (BLOCK_START (b) <= BLOCK_START (block)
607 && BLOCK_END (b) > BLOCK_START (block))
614 return fixup_symbol_section (sym, objfile);
616 block = BLOCK_SUPERBLOCK (block);
619 /* FIXME: this code is never executed--block is always NULL at this
620 point. What is it trying to do, anyway? We already should have
621 checked the STATIC_BLOCK above (it is the superblock of top-level
622 blocks). Why is VAR_NAMESPACE special-cased? */
623 /* Don't need to mess with the psymtabs; if we have a block,
624 that file is read in. If we don't, then we deal later with
625 all the psymtab stuff that needs checking. */
626 if (namespace == VAR_NAMESPACE && block != NULL)
629 /* Find the right symtab. */
630 ALL_SYMTABS (objfile, s)
632 bv = BLOCKVECTOR (s);
633 b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
634 if (BLOCK_START (b) <= BLOCK_START (block)
635 && BLOCK_END (b) > BLOCK_START (block))
637 sym = lookup_block_symbol (b, name, VAR_NAMESPACE);
643 return fixup_symbol_section (sym, objfile);
650 /* C++: If requested to do so by the caller,
651 check to see if NAME is a field of `this'. */
652 if (is_a_field_of_this)
654 struct value *v = value_of_this (0);
656 *is_a_field_of_this = 0;
657 if (v && check_field (v, name))
659 *is_a_field_of_this = 1;
666 /* Now search all global blocks. Do the symtab's first, then
667 check the psymtab's */
669 ALL_SYMTABS (objfile, s)
671 bv = BLOCKVECTOR (s);
672 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
673 sym = lookup_block_symbol (block, name, namespace);
679 return fixup_symbol_section (sym, objfile);
683 /* Check for the possibility of the symbol being a function or
684 a mangled variable that is stored in one of the minimal symbol tables.
685 Eventually, all global symbols might be resolved in this way. */
687 if (namespace == VAR_NAMESPACE)
689 msymbol = lookup_minimal_symbol (name, NULL, NULL);
692 s = find_pc_sect_symtab (SYMBOL_VALUE_ADDRESS (msymbol),
693 SYMBOL_BFD_SECTION (msymbol));
696 /* This is a function which has a symtab for its address. */
697 bv = BLOCKVECTOR (s);
698 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
699 sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
701 /* We kept static functions in minimal symbol table as well as
702 in static scope. We want to find them in the symbol table. */
704 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
705 sym = lookup_block_symbol (block, SYMBOL_NAME (msymbol),
709 /* sym == 0 if symbol was found in the minimal symbol table
710 but not in the symtab.
711 Return 0 to use the msymbol definition of "foo_".
713 This happens for Fortran "foo_" symbols,
714 which are "foo" in the symtab.
716 This can also happen if "asm" is used to make a
717 regular symbol but not a debugging symbol, e.g.
724 return fixup_symbol_section (sym, objfile);
726 else if (MSYMBOL_TYPE (msymbol) != mst_text
727 && MSYMBOL_TYPE (msymbol) != mst_file_text
728 && !STREQ (name, SYMBOL_NAME (msymbol)))
730 /* This is a mangled variable, look it up by its
732 return lookup_symbol (SYMBOL_NAME (msymbol), block,
733 namespace, is_a_field_of_this, symtab);
735 /* There are no debug symbols for this file, or we are looking
736 for an unmangled variable.
737 Try to find a matching static symbol below. */
741 ALL_PSYMTABS (objfile, ps)
743 if (!ps->readin && lookup_partial_symbol (ps, name, 1, namespace))
745 s = PSYMTAB_TO_SYMTAB(ps);
746 bv = BLOCKVECTOR (s);
747 block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
748 sym = lookup_block_symbol (block, name, namespace);
750 error ("Internal: global symbol `%s' found in %s psymtab but not in symtab", name, ps->filename);
753 return fixup_symbol_section (sym, objfile);
757 /* Now search all per-file blocks.
758 Not strictly correct, but more useful than an error.
759 Do the symtabs first, then check the psymtabs */
761 ALL_SYMTABS (objfile, s)
763 bv = BLOCKVECTOR (s);
764 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
765 sym = lookup_block_symbol (block, name, namespace);
771 return fixup_symbol_section (sym, objfile);
775 ALL_PSYMTABS (objfile, ps)
777 if (!ps->readin && lookup_partial_symbol (ps, name, 0, namespace))
779 s = PSYMTAB_TO_SYMTAB(ps);
780 bv = BLOCKVECTOR (s);
781 block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
782 sym = lookup_block_symbol (block, name, namespace);
784 error ("Internal: static symbol `%s' found in %s psymtab but not in symtab", name, ps->filename);
787 return fixup_symbol_section (sym, objfile);
796 /* Look, in partial_symtab PST, for symbol NAME. Check the global
797 symbols if GLOBAL, the static symbols if not */
799 static struct partial_symbol *
800 lookup_partial_symbol (pst, name, global, namespace)
801 struct partial_symtab *pst;
804 namespace_enum namespace;
806 struct partial_symbol **start, **psym;
807 struct partial_symbol **top, **bottom, **center;
808 int length = (global ? pst->n_global_syms : pst->n_static_syms);
809 int do_linear_search = 1;
817 pst->objfile->global_psymbols.list + pst->globals_offset :
818 pst->objfile->static_psymbols.list + pst->statics_offset );
820 if (global) /* This means we can use a binary search. */
822 do_linear_search = 0;
824 /* Binary search. This search is guaranteed to end with center
825 pointing at the earliest partial symbol with the correct
826 name. At that point *all* partial symbols with that name
827 will be checked against the correct namespace. */
830 top = start + length - 1;
833 center = bottom + (top - bottom) / 2;
836 if (!do_linear_search && SYMBOL_LANGUAGE (*center) == language_cplus)
838 do_linear_search = 1;
840 if (STRCMP (SYMBOL_NAME (*center), name) >= 0)
849 if (!(top == bottom))
851 while (STREQ (SYMBOL_NAME (*top), name))
853 if (SYMBOL_NAMESPACE (*top) == namespace)
861 /* Can't use a binary search or else we found during the binary search that
862 we should also do a linear search. */
864 if (do_linear_search)
866 for (psym = start; psym < start + length; psym++)
868 if (namespace == SYMBOL_NAMESPACE (*psym))
870 if (SYMBOL_MATCHES_NAME (*psym, name))
881 /* Find the psymtab containing main(). */
882 /* FIXME: What about languages without main() or specially linked
883 executables that have no main() ? */
885 struct partial_symtab *
888 register struct partial_symtab *pst;
889 register struct objfile *objfile;
891 ALL_PSYMTABS (objfile, pst)
893 if (lookup_partial_symbol (pst, "main", 1, VAR_NAMESPACE))
901 /* Search BLOCK for symbol NAME in NAMESPACE.
903 Note that if NAME is the demangled form of a C++ symbol, we will fail
904 to find a match during the binary search of the non-encoded names, but
905 for now we don't worry about the slight inefficiency of looking for
906 a match we'll never find, since it will go pretty quick. Once the
907 binary search terminates, we drop through and do a straight linear
908 search on the symbols. Each symbol which is marked as being a C++
909 symbol (language_cplus set) has both the encoded and non-encoded names
910 tested for a match. */
913 lookup_block_symbol (block, name, namespace)
914 register const struct block *block;
916 const namespace_enum namespace;
918 register int bot, top, inc;
919 register struct symbol *sym;
920 register struct symbol *sym_found = NULL;
921 register int do_linear_search = 1;
923 /* If the blocks's symbols were sorted, start with a binary search. */
925 if (BLOCK_SHOULD_SORT (block))
927 /* Reset the linear search flag so if the binary search fails, we
928 won't do the linear search once unless we find some reason to
929 do so, such as finding a C++ symbol during the binary search.
930 Note that for C++ modules, ALL the symbols in a block should
931 end up marked as C++ symbols. */
933 do_linear_search = 0;
934 top = BLOCK_NSYMS (block);
937 /* Advance BOT to not far before the first symbol whose name is NAME. */
941 inc = (top - bot + 1);
942 /* No need to keep binary searching for the last few bits worth. */
947 inc = (inc >> 1) + bot;
948 sym = BLOCK_SYM (block, inc);
949 if (!do_linear_search && SYMBOL_LANGUAGE (sym) == language_cplus)
951 do_linear_search = 1;
953 if (SYMBOL_NAME (sym)[0] < name[0])
957 else if (SYMBOL_NAME (sym)[0] > name[0])
961 else if (STRCMP (SYMBOL_NAME (sym), name) < 0)
971 /* Now scan forward until we run out of symbols, find one whose
972 name is greater than NAME, or find one we want. If there is
973 more than one symbol with the right name and namespace, we
974 return the first one; I believe it is now impossible for us
975 to encounter two symbols with the same name and namespace
976 here, because blocks containing argument symbols are no
979 top = BLOCK_NSYMS (block);
982 sym = BLOCK_SYM (block, bot);
983 inc = SYMBOL_NAME (sym)[0] - name[0];
986 inc = STRCMP (SYMBOL_NAME (sym), name);
988 if (inc == 0 && SYMBOL_NAMESPACE (sym) == namespace)
1000 /* Here if block isn't sorted, or we fail to find a match during the
1001 binary search above. If during the binary search above, we find a
1002 symbol which is a C++ symbol, then we have re-enabled the linear
1003 search flag which was reset when starting the binary search.
1005 This loop is equivalent to the loop above, but hacked greatly for speed.
1007 Note that parameter symbols do not always show up last in the
1008 list; this loop makes sure to take anything else other than
1009 parameter symbols first; it only uses parameter symbols as a
1010 last resort. Note that this only takes up extra computation
1013 if (do_linear_search)
1015 top = BLOCK_NSYMS (block);
1019 sym = BLOCK_SYM (block, bot);
1020 if (SYMBOL_NAMESPACE (sym) == namespace &&
1021 SYMBOL_MATCHES_NAME (sym, name))
1023 /* If SYM has aliases, then use any alias that is active
1024 at the current PC. If no alias is active at the current
1025 PC, then use the main symbol.
1027 ?!? Is checking the current pc correct? Is this routine
1028 ever called to look up a symbol from another context? */
1029 if (SYMBOL_ALIASES (sym))
1030 sym = find_active_alias (sym, read_pc ());
1033 if (SYMBOL_CLASS (sym) != LOC_ARG &&
1034 SYMBOL_CLASS (sym) != LOC_LOCAL_ARG &&
1035 SYMBOL_CLASS (sym) != LOC_REF_ARG &&
1036 SYMBOL_CLASS (sym) != LOC_REGPARM &&
1037 SYMBOL_CLASS (sym) != LOC_REGPARM_ADDR &&
1038 SYMBOL_CLASS (sym) != LOC_BASEREG_ARG)
1046 return (sym_found); /* Will be NULL if not found. */
1049 /* Given a main symbol SYM and ADDR, search through the alias
1050 list to determine if an alias is active at ADDR and return
1053 If no alias is active, then return SYM. */
1055 static struct symbol *
1056 find_active_alias (sym, addr)
1060 struct range_list *r;
1061 struct alias_list *aliases;
1063 /* If we have aliases, check them first. */
1064 aliases = SYMBOL_ALIASES (sym);
1068 if (!SYMBOL_RANGES (aliases->sym))
1069 return aliases->sym;
1070 for (r = SYMBOL_RANGES (aliases->sym); r; r = r->next)
1072 if (r->start <= addr && r->end > addr)
1073 return aliases->sym;
1075 aliases = aliases->next;
1078 /* Nothing found, return the main symbol. */
1083 /* Return the symbol for the function which contains a specified
1084 lexical block, described by a struct block BL. */
1090 while (BLOCK_FUNCTION (bl) == 0 && BLOCK_SUPERBLOCK (bl) != 0)
1091 bl = BLOCK_SUPERBLOCK (bl);
1093 return BLOCK_FUNCTION (bl);
1096 /* Find the symtab associated with PC and SECTION. Look through the
1097 psymtabs and read in another symtab if necessary. */
1100 find_pc_sect_symtab (pc, section)
1104 register struct block *b;
1105 struct blockvector *bv;
1106 register struct symtab *s = NULL;
1107 register struct symtab *best_s = NULL;
1108 register struct partial_symtab *ps;
1109 register struct objfile *objfile;
1110 CORE_ADDR distance = 0;
1112 /* Search all symtabs for the one whose file contains our address, and which
1113 is the smallest of all the ones containing the address. This is designed
1114 to deal with a case like symtab a is at 0x1000-0x2000 and 0x3000-0x4000
1115 and symtab b is at 0x2000-0x3000. So the GLOBAL_BLOCK for a is from
1116 0x1000-0x4000, but for address 0x2345 we want to return symtab b.
1118 This happens for native ecoff format, where code from included files
1119 gets its own symtab. The symtab for the included file should have
1120 been read in already via the dependency mechanism.
1121 It might be swifter to create several symtabs with the same name
1122 like xcoff does (I'm not sure).
1124 It also happens for objfiles that have their functions reordered.
1125 For these, the symtab we are looking for is not necessarily read in. */
1127 ALL_SYMTABS (objfile, s)
1129 bv = BLOCKVECTOR (s);
1130 b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
1131 if (BLOCK_START (b) <= pc
1132 && BLOCK_END (b) > pc
1134 || BLOCK_END (b) - BLOCK_START (b) < distance))
1136 /* For an objfile that has its functions reordered,
1137 find_pc_psymtab will find the proper partial symbol table
1138 and we simply return its corresponding symtab. */
1139 /* In order to better support objfiles that contain both
1140 stabs and coff debugging info, we continue on if a psymtab
1142 if ((objfile->flags & OBJF_REORDERED) && objfile->psymtabs)
1144 ps = find_pc_sect_psymtab (pc, section);
1146 return PSYMTAB_TO_SYMTAB (ps);
1152 for (i = 0; i < b->nsyms; i++)
1154 fixup_symbol_section (b->sym[i], objfile);
1155 if (section == SYMBOL_BFD_SECTION (b->sym[i]))
1159 continue; /* no symbol in this symtab matches section */
1161 distance = BLOCK_END (b) - BLOCK_START (b);
1170 ps = find_pc_sect_psymtab (pc, section);
1174 /* Might want to error() here (in case symtab is corrupt and
1175 will cause a core dump), but maybe we can successfully
1176 continue, so let's not. */
1177 /* FIXME-32x64: assumes pc fits in a long */
1179 (Internal error: pc 0x%lx in read in psymtab, but not in symtab.)\n",
1180 (unsigned long) pc);
1181 s = PSYMTAB_TO_SYMTAB (ps);
1186 /* Find the symtab associated with PC. Look through the psymtabs and
1187 read in another symtab if necessary. Backward compatibility, no section */
1193 return find_pc_sect_symtab (pc, find_pc_mapped_section (pc));
1199 /* Find the closest symbol value (of any sort -- function or variable)
1200 for a given address value. Slow but complete. (currently unused,
1201 mainly because it is too slow. We could fix it if each symtab and
1202 psymtab had contained in it the addresses ranges of each of its
1203 sections, which also would be required to make things like "info
1204 line *0x2345" cause psymtabs to be converted to symtabs). */
1207 find_addr_symbol (addr, symtabp, symaddrp)
1209 struct symtab **symtabp;
1210 CORE_ADDR *symaddrp;
1212 struct symtab *symtab, *best_symtab;
1213 struct objfile *objfile;
1214 register int bot, top;
1215 register struct symbol *sym;
1216 register CORE_ADDR sym_addr;
1217 struct block *block;
1220 /* Info on best symbol seen so far */
1222 register CORE_ADDR best_sym_addr = 0;
1223 struct symbol *best_sym = 0;
1225 /* FIXME -- we should pull in all the psymtabs, too! */
1226 ALL_SYMTABS (objfile, symtab)
1228 /* Search the global and static blocks in this symtab for
1229 the closest symbol-address to the desired address. */
1231 for (blocknum = GLOBAL_BLOCK; blocknum <= STATIC_BLOCK; blocknum++)
1234 block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), blocknum);
1235 top = BLOCK_NSYMS (block);
1236 for (bot = 0; bot < top; bot++)
1238 sym = BLOCK_SYM (block, bot);
1239 switch (SYMBOL_CLASS (sym))
1243 sym_addr = SYMBOL_VALUE_ADDRESS (sym);
1247 sym_addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1254 if (sym_addr <= addr)
1255 if (sym_addr > best_sym_addr)
1257 /* Quit if we found an exact match. */
1259 best_sym_addr = sym_addr;
1260 best_symtab = symtab;
1261 if (sym_addr == addr)
1270 *symtabp = best_symtab;
1272 *symaddrp = best_sym_addr;
1277 /* Find the source file and line number for a given PC value and section.
1278 Return a structure containing a symtab pointer, a line number,
1279 and a pc range for the entire source line.
1280 The value's .pc field is NOT the specified pc.
1281 NOTCURRENT nonzero means, if specified pc is on a line boundary,
1282 use the line that ends there. Otherwise, in that case, the line
1283 that begins there is used. */
1285 /* The big complication here is that a line may start in one file, and end just
1286 before the start of another file. This usually occurs when you #include
1287 code in the middle of a subroutine. To properly find the end of a line's PC
1288 range, we must search all symtabs associated with this compilation unit, and
1289 find the one whose first PC is closer than that of the next line in this
1292 /* If it's worth the effort, we could be using a binary search. */
1294 struct symtab_and_line
1295 find_pc_sect_line (pc, section, notcurrent)
1297 struct sec *section;
1301 register struct linetable *l;
1304 register struct linetable_entry *item;
1305 struct symtab_and_line val;
1306 struct blockvector *bv;
1308 /* Info on best line seen so far, and where it starts, and its file. */
1310 struct linetable_entry *best = NULL;
1311 CORE_ADDR best_end = 0;
1312 struct symtab *best_symtab = 0;
1314 /* Store here the first line number
1315 of a file which contains the line at the smallest pc after PC.
1316 If we don't find a line whose range contains PC,
1317 we will use a line one less than this,
1318 with a range from the start of that file to the first line's pc. */
1319 struct linetable_entry *alt = NULL;
1320 struct symtab *alt_symtab = 0;
1322 /* Info on best line seen in this file. */
1324 struct linetable_entry *prev;
1326 /* If this pc is not from the current frame,
1327 it is the address of the end of a call instruction.
1328 Quite likely that is the start of the following statement.
1329 But what we want is the statement containing the instruction.
1330 Fudge the pc to make sure we get that. */
1332 INIT_SAL (&val); /* initialize to zeroes */
1337 s = find_pc_sect_symtab (pc, section);
1340 /* if no symbol information, return previous pc */
1347 bv = BLOCKVECTOR (s);
1349 /* Look at all the symtabs that share this blockvector.
1350 They all have the same apriori range, that we found was right;
1351 but they have different line tables. */
1353 for (; s && BLOCKVECTOR (s) == bv; s = s->next)
1355 /* Find the best line in this symtab. */
1362 /* I think len can be zero if the symtab lacks line numbers
1363 (e.g. gcc -g1). (Either that or the LINETABLE is NULL;
1364 I'm not sure which, and maybe it depends on the symbol
1370 item = l->item; /* Get first line info */
1372 /* Is this file's first line closer than the first lines of other files?
1373 If so, record this file, and its first line, as best alternate. */
1374 if (item->pc > pc && (!alt || item->pc < alt->pc))
1380 for (i = 0; i < len; i++, item++)
1382 /* Leave prev pointing to the linetable entry for the last line
1383 that started at or before PC. */
1390 /* At this point, prev points at the line whose start addr is <= pc, and
1391 item points at the next line. If we ran off the end of the linetable
1392 (pc >= start of the last line), then prev == item. If pc < start of
1393 the first line, prev will not be set. */
1395 /* Is this file's best line closer than the best in the other files?
1396 If so, record this file, and its best line, as best so far. */
1398 if (prev && (!best || prev->pc > best->pc))
1402 /* If another line is in the linetable, and its PC is closer
1403 than the best_end we currently have, take it as best_end. */
1404 if (i < len && (best_end == 0 || best_end > item->pc))
1405 best_end = item->pc;
1412 { /* If we didn't find any line # info, just
1418 val.symtab = alt_symtab;
1419 val.line = alt->line - 1;
1421 /* Don't return line 0, that means that we didn't find the line. */
1422 if (val.line == 0) ++val.line;
1424 val.pc = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
1430 val.symtab = best_symtab;
1431 val.line = best->line;
1433 if (best_end && (!alt || best_end < alt->pc))
1438 val.end = BLOCK_END (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK));
1440 val.section = section;
1444 /* Backward compatibility (no section) */
1446 struct symtab_and_line
1447 find_pc_line (pc, notcurrent)
1453 section = find_pc_overlay (pc);
1454 if (pc_in_unmapped_range (pc, section))
1455 pc = overlay_mapped_address (pc, section);
1456 return find_pc_sect_line (pc, section, notcurrent);
1460 static int find_line_symtab PARAMS ((struct symtab *, int, struct linetable **,
1463 /* Find line number LINE in any symtab whose name is the same as
1466 If found, return 1, set *LINETABLE to the linetable in which it was
1467 found, set *INDEX to the index in the linetable of the best entry
1468 found, and set *EXACT_MATCH nonzero if the value returned is an
1471 If not found, return 0. */
1474 find_line_symtab (symtab, line, linetable, index, exact_match)
1475 struct symtab *symtab;
1477 struct linetable **linetable;
1483 /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
1487 struct linetable *best_linetable;
1489 /* First try looking it up in the given symtab. */
1490 best_linetable = LINETABLE (symtab);
1491 best_index = find_line_common (best_linetable, line, &exact);
1492 if (best_index < 0 || !exact)
1494 /* Didn't find an exact match. So we better keep looking for
1495 another symtab with the same name. In the case of xcoff,
1496 multiple csects for one source file (produced by IBM's FORTRAN
1497 compiler) produce multiple symtabs (this is unavoidable
1498 assuming csects can be at arbitrary places in memory and that
1499 the GLOBAL_BLOCK of a symtab has a begin and end address). */
1501 /* BEST is the smallest linenumber > LINE so far seen,
1502 or 0 if none has been seen so far.
1503 BEST_INDEX and BEST_LINETABLE identify the item for it. */
1506 struct objfile *objfile;
1509 if (best_index >= 0)
1510 best = best_linetable->item[best_index].line;
1514 ALL_SYMTABS (objfile, s)
1516 struct linetable *l;
1519 if (!STREQ (symtab->filename, s->filename))
1522 ind = find_line_common (l, line, &exact);
1531 if (best == 0 || l->item[ind].line < best)
1533 best = l->item[ind].line;
1545 *index = best_index;
1547 *linetable = best_linetable;
1549 *exact_match = exact;
1553 /* Find the PC value for a given source file and line number.
1554 Returns zero for invalid line number.
1555 The source file is specified with a struct symtab. */
1558 find_line_pc (symtab, line)
1559 struct symtab *symtab;
1562 struct linetable *l;
1567 if (find_line_symtab (symtab, line, &l, &ind, NULL))
1568 return l->item[ind].pc;
1573 /* Find the range of pc values in a line.
1574 Store the starting pc of the line into *STARTPTR
1575 and the ending pc (start of next line) into *ENDPTR.
1576 Returns 1 to indicate success.
1577 Returns 0 if could not find the specified line. */
1580 find_line_pc_range (sal, startptr, endptr)
1581 struct symtab_and_line sal;
1582 CORE_ADDR *startptr, *endptr;
1584 CORE_ADDR startaddr;
1585 struct symtab_and_line found_sal;
1590 startaddr = find_line_pc (sal.symtab, sal.line);
1595 /* This whole function is based on address. For example, if line 10 has
1596 two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
1597 "info line *0x123" should say the line goes from 0x100 to 0x200
1598 and "info line *0x355" should say the line goes from 0x300 to 0x400.
1599 This also insures that we never give a range like "starts at 0x134
1600 and ends at 0x12c". */
1602 found_sal = find_pc_sect_line (startaddr, sal.section, 0);
1603 if (found_sal.line != sal.line)
1605 /* The specified line (sal) has zero bytes. */
1606 *startptr = found_sal.pc;
1607 *endptr = found_sal.pc;
1611 *startptr = found_sal.pc;
1612 *endptr = found_sal.end;
1617 /* Given a line table and a line number, return the index into the line
1618 table for the pc of the nearest line whose number is >= the specified one.
1619 Return -1 if none is found. The value is >= 0 if it is an index.
1621 Set *EXACT_MATCH nonzero if the value returned is an exact match. */
1624 find_line_common (l, lineno, exact_match)
1625 register struct linetable *l;
1626 register int lineno;
1632 /* BEST is the smallest linenumber > LINENO so far seen,
1633 or 0 if none has been seen so far.
1634 BEST_INDEX identifies the item for it. */
1636 int best_index = -1;
1645 for (i = 0; i < len; i++)
1647 register struct linetable_entry *item = &(l->item[i]);
1649 if (item->line == lineno)
1651 /* Return the first (lowest address) entry which matches. */
1656 if (item->line > lineno && (best == 0 || item->line < best))
1663 /* If we got here, we didn't get an exact match. */
1670 find_pc_line_pc_range (pc, startptr, endptr)
1672 CORE_ADDR *startptr, *endptr;
1674 struct symtab_and_line sal;
1675 sal = find_pc_line (pc, 0);
1678 return sal.symtab != 0;
1681 /* Given a function symbol SYM, find the symtab and line for the start
1683 If the argument FUNFIRSTLINE is nonzero, we want the first line
1684 of real code inside the function. */
1686 static struct symtab_and_line
1687 find_function_start_sal PARAMS ((struct symbol *sym, int));
1689 static struct symtab_and_line
1690 find_function_start_sal (sym, funfirstline)
1695 struct symtab_and_line sal;
1697 pc = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
1698 fixup_symbol_section (sym, NULL);
1700 { /* skip "first line" of function (which is actually its prologue) */
1701 asection *section = SYMBOL_BFD_SECTION (sym);
1702 /* If function is in an unmapped overlay, use its unmapped LMA
1703 address, so that SKIP_PROLOGUE has something unique to work on */
1704 if (section_is_overlay (section) &&
1705 !section_is_mapped (section))
1706 pc = overlay_unmapped_address (pc, section);
1708 pc += FUNCTION_START_OFFSET;
1711 /* For overlays, map pc back into its mapped VMA range */
1712 pc = overlay_mapped_address (pc, section);
1714 sal = find_pc_sect_line (pc, SYMBOL_BFD_SECTION (sym), 0);
1716 #ifdef PROLOGUE_FIRSTLINE_OVERLAP
1717 /* Convex: no need to suppress code on first line, if any */
1720 /* Check if SKIP_PROLOGUE left us in mid-line, and the next
1721 line is still part of the same function. */
1723 && BLOCK_START (SYMBOL_BLOCK_VALUE (sym)) <= sal.end
1724 && sal.end < BLOCK_END (SYMBOL_BLOCK_VALUE (sym)))
1726 /* First pc of next line */
1728 /* Recalculate the line number (might not be N+1). */
1729 sal = find_pc_sect_line (pc, SYMBOL_BFD_SECTION (sym), 0);
1737 /* If P is of the form "operator[ \t]+..." where `...' is
1738 some legitimate operator text, return a pointer to the
1739 beginning of the substring of the operator text.
1740 Otherwise, return "". */
1742 operator_chars (p, end)
1747 if (strncmp (p, "operator", 8))
1751 /* Don't get faked out by `operator' being part of a longer
1753 if (isalpha(*p) || *p == '_' || *p == '$' || *p == '\0')
1756 /* Allow some whitespace between `operator' and the operator symbol. */
1757 while (*p == ' ' || *p == '\t')
1760 /* Recognize 'operator TYPENAME'. */
1762 if (isalpha(*p) || *p == '_' || *p == '$')
1764 register char *q = p+1;
1765 while (isalnum(*q) || *q == '_' || *q == '$')
1790 if (p[1] == '=' || p[1] == p[0])
1801 error ("`operator ()' must be specified without whitespace in `()'");
1806 error ("`operator ?:' must be specified without whitespace in `?:'");
1811 error ("`operator []' must be specified without whitespace in `[]'");
1815 error ("`operator %s' not supported", p);
1822 /* Return the number of methods described for TYPE, including the
1823 methods from types it derives from. This can't be done in the symbol
1824 reader because the type of the baseclass might still be stubbed
1825 when the definition of the derived class is parsed. */
1827 static int total_number_of_methods PARAMS ((struct type *type));
1830 total_number_of_methods (type)
1836 CHECK_TYPEDEF (type);
1837 if (TYPE_CPLUS_SPECIFIC (type) == NULL)
1839 count = TYPE_NFN_FIELDS_TOTAL (type);
1841 for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
1842 count += total_number_of_methods (TYPE_BASECLASS (type, n));
1847 /* Recursive helper function for decode_line_1.
1848 Look for methods named NAME in type T.
1849 Return number of matches.
1850 Put matches in SYM_ARR, which should have been allocated with
1851 a size of total_number_of_methods (T) * sizeof (struct symbol *).
1852 Note that this function is g++ specific. */
1855 find_methods (t, name, sym_arr)
1858 struct symbol **sym_arr;
1862 struct symbol *sym_class;
1863 char *class_name = type_name_no_tag (t);
1864 /* Ignore this class if it doesn't have a name. This is ugly, but
1865 unless we figure out how to get the physname without the name of
1866 the class, then the loop can't do any good. */
1868 && (sym_class = lookup_symbol (class_name,
1869 (struct block *)NULL,
1872 (struct symtab **)NULL)))
1875 /* FIXME: Shouldn't this just be CHECK_TYPEDEF (t)? */
1876 t = SYMBOL_TYPE (sym_class);
1877 for (method_counter = TYPE_NFN_FIELDS (t) - 1;
1878 method_counter >= 0;
1882 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, method_counter);
1883 char *method_name = TYPE_FN_FIELDLIST_NAME (t, method_counter);
1884 char dem_opname[64];
1886 if (strncmp(method_name, "__", 2)==0 ||
1887 strncmp(method_name, "op", 2)==0 ||
1888 strncmp(method_name, "type", 4)==0 )
1890 if (cplus_demangle_opname(method_name, dem_opname, DMGL_ANSI))
1891 method_name = dem_opname;
1892 else if (cplus_demangle_opname(method_name, dem_opname, 0))
1893 method_name = dem_opname;
1895 if (STREQ (name, method_name))
1896 /* Find all the fields with that name. */
1897 for (field_counter = TYPE_FN_FIELDLIST_LENGTH (t, method_counter) - 1;
1902 if (TYPE_FN_FIELD_STUB (f, field_counter))
1903 check_stub_method (t, method_counter, field_counter);
1904 phys_name = TYPE_FN_FIELD_PHYSNAME (f, field_counter);
1905 /* Destructor is handled by caller, dont add it to the list */
1906 if (DESTRUCTOR_PREFIX_P (phys_name))
1909 sym_arr[i1] = lookup_symbol (phys_name,
1910 NULL, VAR_NAMESPACE,
1912 (struct symtab **) NULL);
1917 fputs_filtered("(Cannot find method ", gdb_stdout);
1918 fprintf_symbol_filtered (gdb_stdout, phys_name,
1920 DMGL_PARAMS | DMGL_ANSI);
1921 fputs_filtered(" - possibly inlined.)\n", gdb_stdout);
1927 /* Only search baseclasses if there is no match yet, since names in
1928 derived classes override those in baseclasses.
1930 FIXME: The above is not true; it is only true of member functions
1931 if they have the same number of arguments (??? - section 13.1 of the
1932 ARM says the function members are not in the same scope but doesn't
1933 really spell out the rules in a way I understand. In any case, if
1934 the number of arguments differ this is a case in which we can overload
1935 rather than hiding without any problem, and gcc 2.4.5 does overload
1936 rather than hiding in this case). */
1940 for (ibase = 0; ibase < TYPE_N_BASECLASSES (t); ibase++)
1941 i1 += find_methods(TYPE_BASECLASS(t, ibase), name,
1946 /* Helper function for decode_line_1.
1947 Build a canonical line spec in CANONICAL if it is non-NULL and if
1948 the SAL has a symtab.
1949 If SYMNAME is non-NULL the canonical line spec is `filename:symname'.
1950 If SYMNAME is NULL the line number from SAL is used and the canonical
1951 line spec is `filename:linenum'. */
1954 build_canonical_line_spec (sal, symname, canonical)
1955 struct symtab_and_line *sal;
1959 char **canonical_arr;
1960 char *canonical_name;
1962 struct symtab *s = sal->symtab;
1964 if (s == (struct symtab *)NULL
1965 || s->filename == (char *)NULL
1966 || canonical == (char ***)NULL)
1969 canonical_arr = (char **) xmalloc (sizeof (char *));
1970 *canonical = canonical_arr;
1972 filename = s->filename;
1973 if (symname != NULL)
1975 canonical_name = xmalloc (strlen (filename) + strlen (symname) + 2);
1976 sprintf (canonical_name, "%s:%s", filename, symname);
1980 canonical_name = xmalloc (strlen (filename) + 30);
1981 sprintf (canonical_name, "%s:%d", filename, sal->line);
1983 canonical_arr[0] = canonical_name;
1986 /* Parse a string that specifies a line number.
1987 Pass the address of a char * variable; that variable will be
1988 advanced over the characters actually parsed.
1992 LINENUM -- that line number in current file. PC returned is 0.
1993 FILE:LINENUM -- that line in that file. PC returned is 0.
1994 FUNCTION -- line number of openbrace of that function.
1995 PC returned is the start of the function.
1996 VARIABLE -- line number of definition of that variable.
1998 FILE:FUNCTION -- likewise, but prefer functions in that file.
1999 *EXPR -- line in which address EXPR appears.
2001 FUNCTION may be an undebuggable function found in minimal symbol table.
2003 If the argument FUNFIRSTLINE is nonzero, we want the first line
2004 of real code inside a function when a function is specified, and it is
2005 not OK to specify a variable or type to get its line number.
2007 DEFAULT_SYMTAB specifies the file to use if none is specified.
2008 It defaults to current_source_symtab.
2009 DEFAULT_LINE specifies the line number to use for relative
2010 line numbers (that start with signs). Defaults to current_source_line.
2011 If CANONICAL is non-NULL, store an array of strings containing the canonical
2012 line specs there if necessary. Currently overloaded member functions and
2013 line numbers or static functions without a filename yield a canonical
2014 line spec. The array and the line spec strings are allocated on the heap,
2015 it is the callers responsibility to free them.
2017 Note that it is possible to return zero for the symtab
2018 if no file is validly specified. Callers must check that.
2019 Also, the line number returned may be invalid. */
2021 /* We allow single quotes in various places. This is a hideous
2022 kludge, which exists because the completer can't yet deal with the
2023 lack of single quotes. FIXME: write a linespec_completer which we
2024 can use as appropriate instead of make_symbol_completion_list. */
2026 struct symtabs_and_lines
2027 decode_line_1 (argptr, funfirstline, default_symtab, default_line, canonical)
2030 struct symtab *default_symtab;
2034 struct symtabs_and_lines values;
2035 #ifdef HPPA_COMPILER_BUG
2036 /* FIXME: The native HP 9000/700 compiler has a bug which appears
2037 when optimizing this file with target i960-vxworks. I haven't
2038 been able to construct a simple test case. The problem is that
2039 in the second call to SKIP_PROLOGUE below, the compiler somehow
2040 does not realize that the statement val = find_pc_line (...) will
2041 change the values of the fields of val. It extracts the elements
2042 into registers at the top of the block, and does not update the
2043 registers after the call to find_pc_line. You can check this by
2044 inserting a printf at the end of find_pc_line to show what values
2045 it is returning for val.pc and val.end and another printf after
2046 the call to see what values the function actually got (remember,
2047 this is compiling with cc -O, with this patch removed). You can
2048 also examine the assembly listing: search for the second call to
2049 skip_prologue; the LDO statement before the next call to
2050 find_pc_line loads the address of the structure which
2051 find_pc_line will return; if there is a LDW just before the LDO,
2052 which fetches an element of the structure, then the compiler
2055 Setting val to volatile avoids the problem. We must undef
2056 volatile, because the HPPA native compiler does not define
2057 __STDC__, although it does understand volatile, and so volatile
2058 will have been defined away in defs.h. */
2060 volatile struct symtab_and_line val;
2061 #define volatile /*nothing*/
2063 struct symtab_and_line val;
2065 register char *p, *p1;
2070 register struct symtab *s;
2072 register struct symbol *sym;
2073 /* The symtab that SYM was found in. */
2074 struct symtab *sym_symtab;
2076 register CORE_ADDR pc;
2077 register struct minimal_symbol *msymbol;
2079 struct symbol *sym_class;
2081 int is_quoted, has_parens;
2082 struct symbol **sym_arr;
2084 char *saved_arg = *argptr;
2085 extern char *gdb_completer_quote_characters;
2087 INIT_SAL (&val); /* initialize to zeroes */
2089 /* Defaults have defaults. */
2091 if (default_symtab == 0)
2093 default_symtab = current_source_symtab;
2094 default_line = current_source_line;
2097 /* See if arg is *PC */
2099 if (**argptr == '*')
2102 pc = parse_and_eval_address_1 (argptr);
2103 values.sals = (struct symtab_and_line *)
2104 xmalloc (sizeof (struct symtab_and_line));
2106 values.sals[0] = find_pc_line (pc, 0);
2110 /* Maybe arg is FILE : LINENUM or FILE : FUNCTION */
2113 is_quoted = (**argptr
2114 && strchr (gdb_completer_quote_characters, **argptr) != NULL);
2115 has_parens = ((pp = strchr (*argptr, '(')) != NULL
2116 && (pp = strchr (pp, ')')) != NULL);
2118 for (p = *argptr; *p; p++)
2122 while(++p && *p != '>');
2125 error ("non-matching '<' and '>' in command");
2128 if (p[0] == ':' || p[0] == ' ' || p[0] == '\t')
2130 if (p[0] == '.' && strchr (p, ':') == NULL) /* Java qualified method. */
2132 /* Find the *last* '.', since the others are package qualifiers. */
2133 for (p1 = p; *p1; p1++)
2141 while (p[0] == ' ' || p[0] == '\t') p++;
2143 if ((p[0] == ':' || p[0] == '.') && !has_parens)
2147 if (is_quoted) *argptr = *argptr+1;
2148 if (p[0] == '.' || p[1] ==':')
2150 /* Extract the class name. */
2152 while (p != *argptr && p[-1] == ' ') --p;
2153 copy = (char *) alloca (p - *argptr + 1);
2154 memcpy (copy, *argptr, p - *argptr);
2155 copy[p - *argptr] = 0;
2157 /* Discard the class name from the arg. */
2158 p = p1 + (p1[0] == ':' ? 2 : 1);
2159 while (*p == ' ' || *p == '\t') p++;
2162 sym_class = lookup_symbol (copy, 0, STRUCT_NAMESPACE, 0,
2163 (struct symtab **)NULL);
2166 (t = check_typedef (SYMBOL_TYPE (sym_class)),
2167 (TYPE_CODE (t) == TYPE_CODE_STRUCT
2168 || TYPE_CODE (t) == TYPE_CODE_UNION)))
2170 /* Arg token is not digits => try it as a function name
2171 Find the next token(everything up to end or next blank). */
2173 && strchr (gdb_completer_quote_characters, **argptr) != NULL)
2175 p = skip_quoted(*argptr);
2176 *argptr = *argptr + 1;
2181 while (*p && *p!=' ' && *p!='\t' && *p!=',' && *p!=':') p++;
2184 q = operator_chars (*argptr, &q1);
2188 char *tmp = alloca (q1 - q + 1);
2189 memcpy (tmp, q, q1 - q);
2191 opname = cplus_mangle_opname (tmp, DMGL_ANSI);
2195 printf_filtered ("no mangling for \"%s\"\n", tmp);
2196 cplusplus_hint (saved_arg);
2197 return_to_top_level (RETURN_ERROR);
2199 copy = (char*) alloca (3 + strlen(opname));
2200 sprintf (copy, "__%s", opname);
2206 copy = (char *) alloca (p - *argptr + 1 );
2207 memcpy (copy, *argptr, p - *argptr);
2208 copy[p - *argptr] = '\0';
2210 && copy[p - *argptr - 1]
2211 && strchr (gdb_completer_quote_characters,
2212 copy[p - *argptr - 1]) != NULL)
2213 copy[p - *argptr - 1] = '\0';
2216 /* no line number may be specified */
2217 while (*p == ' ' || *p == '\t') p++;
2221 i1 = 0; /* counter for the symbol array */
2222 sym_arr = (struct symbol **) alloca(total_number_of_methods (t)
2223 * sizeof(struct symbol *));
2225 if (destructor_name_p (copy, t))
2227 /* Destructors are a special case. */
2228 int m_index, f_index;
2230 if (get_destructor_fn_field (t, &m_index, &f_index))
2232 struct fn_field *f = TYPE_FN_FIELDLIST1 (t, m_index);
2235 lookup_symbol (TYPE_FN_FIELD_PHYSNAME (f, f_index),
2236 NULL, VAR_NAMESPACE, (int *) NULL,
2237 (struct symtab **)NULL);
2243 i1 = find_methods (t, copy, sym_arr);
2246 /* There is exactly one field with that name. */
2249 if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
2251 values.sals = (struct symtab_and_line *)
2252 xmalloc (sizeof (struct symtab_and_line));
2254 values.sals[0] = find_function_start_sal (sym,
2265 /* There is more than one field with that name
2266 (overloaded). Ask the user which one to use. */
2267 return decode_line_2 (sym_arr, i1, funfirstline, canonical);
2273 if (OPNAME_PREFIX_P (copy))
2275 tmp = (char *)alloca (strlen (copy+3) + 9);
2276 strcpy (tmp, "operator ");
2277 strcat (tmp, copy+3);
2284 ("the class `%s' does not have destructor defined\n",
2285 SYMBOL_SOURCE_NAME(sym_class));
2288 ("the class %s does not have any method named %s\n",
2289 SYMBOL_SOURCE_NAME(sym_class), tmp);
2290 cplusplus_hint (saved_arg);
2291 return_to_top_level (RETURN_ERROR);
2297 /* The quotes are important if copy is empty. */
2299 ("can't find class, struct, or union named \"%s\"\n", copy);
2300 cplusplus_hint (saved_arg);
2301 return_to_top_level (RETURN_ERROR);
2307 /* Extract the file name. */
2309 while (p != *argptr && p[-1] == ' ') --p;
2310 copy = (char *) alloca (p - *argptr + 1);
2311 memcpy (copy, *argptr, p - *argptr);
2312 copy[p - *argptr] = 0;
2314 /* Find that file's data. */
2315 s = lookup_symtab (copy);
2318 if (!have_full_symbols () && !have_partial_symbols ())
2319 error (no_symtab_msg);
2320 error ("No source file named %s.", copy);
2323 /* Discard the file name from the arg. */
2325 while (*p == ' ' || *p == '\t') p++;
2329 /* S is specified file's symtab, or 0 if no file specified.
2330 arg no longer contains the file name. */
2332 /* Check whether arg is all digits (and sign) */
2335 if (*q == '-' || *q == '+') q++;
2336 while (*q >= '0' && *q <= '9')
2339 if (q != *argptr && (*q == 0 || *q == ' ' || *q == '\t' || *q == ','))
2341 /* We found a token consisting of all digits -- at least one digit. */
2342 enum sign {none, plus, minus} sign = none;
2344 /* We might need a canonical line spec if no file was specified. */
2345 int need_canonical = (s == 0) ? 1 : 0;
2347 /* This is where we need to make sure that we have good defaults.
2348 We must guarantee that this section of code is never executed
2349 when we are called with just a function name, since
2350 select_source_symtab calls us with such an argument */
2352 if (s == 0 && default_symtab == 0)
2354 select_source_symtab (0);
2355 default_symtab = current_source_symtab;
2356 default_line = current_source_line;
2359 if (**argptr == '+')
2360 sign = plus, (*argptr)++;
2361 else if (**argptr == '-')
2362 sign = minus, (*argptr)++;
2363 val.line = atoi (*argptr);
2370 val.line = default_line + val.line;
2376 val.line = default_line - val.line;
2381 break; /* No need to adjust val.line. */
2384 while (*q == ' ' || *q == '\t') q++;
2390 values.sals = (struct symtab_and_line *)
2391 xmalloc (sizeof (struct symtab_and_line));
2392 values.sals[0] = val;
2395 build_canonical_line_spec (values.sals, NULL, canonical);
2399 /* Arg token is not digits => try it as a variable name
2400 Find the next token (everything up to end or next whitespace). */
2402 if (**argptr == '$') /* Convenience variable */
2403 p = skip_quoted (*argptr + 1);
2406 p = skip_quoted (*argptr);
2408 error ("Unmatched single quote.");
2410 else if (has_parens)
2416 p = skip_quoted(*argptr);
2419 copy = (char *) alloca (p - *argptr + 1);
2420 memcpy (copy, *argptr, p - *argptr);
2421 copy[p - *argptr] = '\0';
2424 && copy[0] == copy [p - *argptr - 1]
2425 && strchr (gdb_completer_quote_characters, copy[0]) != NULL)
2427 copy [p - *argptr - 1] = '\0';
2430 while (*p == ' ' || *p == '\t') p++;
2433 /* See if it's a convenience variable */
2438 int need_canonical = (s == 0) ? 1 : 0;
2440 valx = value_of_internalvar (lookup_internalvar (copy + 1));
2441 if (TYPE_CODE (VALUE_TYPE (valx)) != TYPE_CODE_INT)
2442 error ("Convenience variables used in line specs must have integer values.");
2444 val.symtab = s ? s : default_symtab;
2445 val.line = value_as_long (valx);
2448 values.sals = (struct symtab_and_line *)xmalloc (sizeof val);
2449 values.sals[0] = val;
2453 build_canonical_line_spec (values.sals, NULL, canonical);
2459 /* Look up that token as a variable.
2460 If file specified, use that file's per-file block to start with. */
2462 sym = lookup_symbol (copy,
2463 (s ? BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK)
2464 : get_selected_block ()),
2465 VAR_NAMESPACE, 0, &sym_symtab);
2469 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
2471 /* Arg is the name of a function */
2472 values.sals = (struct symtab_and_line *)
2473 xmalloc (sizeof (struct symtab_and_line));
2474 values.sals[0] = find_function_start_sal (sym, funfirstline);
2477 /* Don't use the SYMBOL_LINE; if used at all it points to
2478 the line containing the parameters or thereabouts, not
2479 the first line of code. */
2481 /* We might need a canonical line spec if it is a static
2485 struct blockvector *bv = BLOCKVECTOR (sym_symtab);
2486 struct block *b = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
2487 if (lookup_block_symbol (b, copy, VAR_NAMESPACE) != NULL)
2488 build_canonical_line_spec (values.sals, copy, canonical);
2495 error ("\"%s\" is not a function", copy);
2496 else if (SYMBOL_LINE (sym) != 0)
2498 /* We know its line number. */
2499 values.sals = (struct symtab_and_line *)
2500 xmalloc (sizeof (struct symtab_and_line));
2502 memset (&values.sals[0], 0, sizeof (values.sals[0]));
2503 values.sals[0].symtab = sym_symtab;
2504 values.sals[0].line = SYMBOL_LINE (sym);
2508 /* This can happen if it is compiled with a compiler which doesn't
2509 put out line numbers for variables. */
2510 /* FIXME: Shouldn't we just set .line and .symtab to zero
2511 and return? For example, "info line foo" could print
2513 error ("Line number not known for symbol \"%s\"", copy);
2517 msymbol = lookup_minimal_symbol (copy, NULL, NULL);
2518 if (msymbol != NULL)
2520 val.pc = SYMBOL_VALUE_ADDRESS (msymbol);
2521 val.section = SYMBOL_BFD_SECTION (msymbol);
2524 val.pc += FUNCTION_START_OFFSET;
2525 SKIP_PROLOGUE (val.pc);
2527 values.sals = (struct symtab_and_line *)
2528 xmalloc (sizeof (struct symtab_and_line));
2529 values.sals[0] = val;
2534 if (!have_full_symbols () &&
2535 !have_partial_symbols () && !have_minimal_symbols ())
2536 error (no_symtab_msg);
2538 error ("Function \"%s\" not defined.", copy);
2539 return values; /* for lint */
2542 struct symtabs_and_lines
2543 decode_line_spec (string, funfirstline)
2547 struct symtabs_and_lines sals;
2549 error ("Empty line specification.");
2550 sals = decode_line_1 (&string, funfirstline,
2551 current_source_symtab, current_source_line,
2554 error ("Junk at end of line specification: %s", string);
2558 /* Given a list of NELTS symbols in SYM_ARR, return a list of lines to
2559 operate on (ask user if necessary).
2560 If CANONICAL is non-NULL return a corresponding array of mangled names
2561 as canonical line specs there. */
2563 static struct symtabs_and_lines
2564 decode_line_2 (sym_arr, nelts, funfirstline, canonical)
2565 struct symbol *sym_arr[];
2570 struct symtabs_and_lines values, return_values;
2575 struct cleanup *old_chain;
2576 char **canonical_arr = (char **)NULL;
2578 values.sals = (struct symtab_and_line *)
2579 alloca (nelts * sizeof(struct symtab_and_line));
2580 return_values.sals = (struct symtab_and_line *)
2581 xmalloc (nelts * sizeof(struct symtab_and_line));
2582 old_chain = make_cleanup (free, return_values.sals);
2586 canonical_arr = (char **) xmalloc (nelts * sizeof (char *));
2587 make_cleanup (free, canonical_arr);
2588 memset (canonical_arr, 0, nelts * sizeof (char *));
2589 *canonical = canonical_arr;
2593 printf_unfiltered("[0] cancel\n[1] all\n");
2596 INIT_SAL (&return_values.sals[i]); /* initialize to zeroes */
2597 INIT_SAL (&values.sals[i]);
2598 if (sym_arr[i] && SYMBOL_CLASS (sym_arr[i]) == LOC_BLOCK)
2600 values.sals[i] = find_function_start_sal (sym_arr[i], funfirstline);
2601 printf_unfiltered ("[%d] %s at %s:%d\n",
2603 SYMBOL_SOURCE_NAME (sym_arr[i]),
2604 values.sals[i].symtab->filename,
2605 values.sals[i].line);
2608 printf_unfiltered ("?HERE\n");
2612 if ((prompt = getenv ("PS2")) == NULL)
2616 printf_unfiltered("%s ",prompt);
2617 gdb_flush(gdb_stdout);
2619 args = command_line_input ((char *) NULL, 0, "overload-choice");
2621 if (args == 0 || *args == 0)
2622 error_no_arg ("one or more choice numbers");
2630 while (*arg1 >= '0' && *arg1 <= '9') arg1++;
2631 if (*arg1 && *arg1 != ' ' && *arg1 != '\t')
2632 error ("Arguments must be choice numbers.");
2637 error ("cancelled");
2642 for (i = 0; i < nelts; i++)
2644 if (canonical_arr[i] == NULL)
2646 symname = SYMBOL_NAME (sym_arr[i]);
2647 canonical_arr[i] = savestring (symname, strlen (symname));
2651 memcpy (return_values.sals, values.sals,
2652 (nelts * sizeof(struct symtab_and_line)));
2653 return_values.nelts = nelts;
2654 discard_cleanups (old_chain);
2655 return return_values;
2658 if (num >= nelts + 2)
2660 printf_unfiltered ("No choice number %d.\n", num);
2665 if (values.sals[num].pc)
2669 symname = SYMBOL_NAME (sym_arr[num]);
2670 make_cleanup (free, symname);
2671 canonical_arr[i] = savestring (symname, strlen (symname));
2673 return_values.sals[i++] = values.sals[num];
2674 values.sals[num].pc = 0;
2678 printf_unfiltered ("duplicate request for %d ignored.\n", num);
2683 while (*args == ' ' || *args == '\t') args++;
2685 return_values.nelts = i;
2686 discard_cleanups (old_chain);
2687 return return_values;
2691 /* Slave routine for sources_info. Force line breaks at ,'s.
2692 NAME is the name to print and *FIRST is nonzero if this is the first
2693 name printed. Set *FIRST to zero. */
2695 output_source_filename (name, first)
2699 /* Table of files printed so far. Since a single source file can
2700 result in several partial symbol tables, we need to avoid printing
2701 it more than once. Note: if some of the psymtabs are read in and
2702 some are not, it gets printed both under "Source files for which
2703 symbols have been read" and "Source files for which symbols will
2704 be read in on demand". I consider this a reasonable way to deal
2705 with the situation. I'm not sure whether this can also happen for
2706 symtabs; it doesn't hurt to check. */
2707 static char **tab = NULL;
2708 /* Allocated size of tab in elements.
2709 Start with one 256-byte block (when using GNU malloc.c).
2710 24 is the malloc overhead when range checking is in effect. */
2711 static int tab_alloc_size = (256 - 24) / sizeof (char *);
2712 /* Current size of tab in elements. */
2713 static int tab_cur_size;
2720 tab = (char **) xmalloc (tab_alloc_size * sizeof (*tab));
2724 /* Is NAME in tab? */
2725 for (p = tab; p < tab + tab_cur_size; p++)
2726 if (STREQ (*p, name))
2727 /* Yes; don't print it again. */
2729 /* No; add it to tab. */
2730 if (tab_cur_size == tab_alloc_size)
2732 tab_alloc_size *= 2;
2733 tab = (char **) xrealloc ((char *) tab, tab_alloc_size * sizeof (*tab));
2735 tab[tab_cur_size++] = name;
2743 printf_filtered (", ");
2747 fputs_filtered (name, gdb_stdout);
2751 sources_info (ignore, from_tty)
2755 register struct symtab *s;
2756 register struct partial_symtab *ps;
2757 register struct objfile *objfile;
2760 if (!have_full_symbols () && !have_partial_symbols ())
2762 error (no_symtab_msg);
2765 printf_filtered ("Source files for which symbols have been read in:\n\n");
2768 ALL_SYMTABS (objfile, s)
2770 output_source_filename (s -> filename, &first);
2772 printf_filtered ("\n\n");
2774 printf_filtered ("Source files for which symbols will be read in on demand:\n\n");
2777 ALL_PSYMTABS (objfile, ps)
2781 output_source_filename (ps -> filename, &first);
2784 printf_filtered ("\n");
2787 /* List all symbols (if REGEXP is NULL) or all symbols matching REGEXP.
2788 If CLASS is zero, list all symbols except functions, type names, and
2790 If CLASS is 1, list only functions.
2791 If CLASS is 2, list only type names.
2792 If CLASS is 3, list only method names.
2794 BPT is non-zero if we should set a breakpoint at the functions
2798 list_symbols (regexp, class, bpt, from_tty)
2804 register struct symtab *s;
2805 register struct partial_symtab *ps;
2806 register struct blockvector *bv;
2807 struct blockvector *prev_bv = 0;
2808 register struct block *b;
2810 register struct symbol *sym;
2811 struct partial_symbol **psym;
2812 struct objfile *objfile;
2813 struct minimal_symbol *msymbol;
2815 static char *classnames[]
2816 = {"variable", "function", "type", "method"};
2817 int found_in_file = 0;
2819 static enum minimal_symbol_type types[]
2820 = {mst_data, mst_text, mst_abs, mst_unknown};
2821 static enum minimal_symbol_type types2[]
2822 = {mst_bss, mst_file_text, mst_abs, mst_unknown};
2823 static enum minimal_symbol_type types3[]
2824 = {mst_file_data, mst_solib_trampoline, mst_abs, mst_unknown};
2825 static enum minimal_symbol_type types4[]
2826 = {mst_file_bss, mst_text, mst_abs, mst_unknown};
2827 enum minimal_symbol_type ourtype = types[class];
2828 enum minimal_symbol_type ourtype2 = types2[class];
2829 enum minimal_symbol_type ourtype3 = types3[class];
2830 enum minimal_symbol_type ourtype4 = types4[class];
2834 /* Make sure spacing is right for C++ operators.
2835 This is just a courtesy to make the matching less sensitive
2836 to how many spaces the user leaves between 'operator'
2837 and <TYPENAME> or <OPERATOR>. */
2839 char *opname = operator_chars (regexp, &opend);
2842 int fix = -1; /* -1 means ok; otherwise number of spaces needed. */
2843 if (isalpha(*opname) || *opname == '_' || *opname == '$')
2845 /* There should 1 space between 'operator' and 'TYPENAME'. */
2846 if (opname[-1] != ' ' || opname[-2] == ' ')
2851 /* There should 0 spaces between 'operator' and 'OPERATOR'. */
2852 if (opname[-1] == ' ')
2855 /* If wrong number of spaces, fix it. */
2858 char *tmp = (char*) alloca(opend-opname+10);
2859 sprintf(tmp, "operator%.*s%s", fix, " ", opname);
2864 if (0 != (val = re_comp (regexp)))
2865 error ("Invalid regexp (%s): %s", val, regexp);
2868 /* Search through the partial symtabs *first* for all symbols
2869 matching the regexp. That way we don't have to reproduce all of
2870 the machinery below. */
2872 ALL_PSYMTABS (objfile, ps)
2874 struct partial_symbol **bound, **gbound, **sbound;
2877 if (ps->readin) continue;
2879 gbound = objfile->global_psymbols.list + ps->globals_offset + ps->n_global_syms;
2880 sbound = objfile->static_psymbols.list + ps->statics_offset + ps->n_static_syms;
2883 /* Go through all of the symbols stored in a partial
2884 symtab in one loop. */
2885 psym = objfile->global_psymbols.list + ps->globals_offset;
2890 if (bound == gbound && ps->n_static_syms != 0)
2892 psym = objfile->static_psymbols.list + ps->statics_offset;
2903 /* If it would match (logic taken from loop below)
2904 load the file and go on to the next one */
2905 if ((regexp == NULL || SYMBOL_MATCHES_REGEXP (*psym))
2906 && ((class == 0 && SYMBOL_CLASS (*psym) != LOC_TYPEDEF
2907 && SYMBOL_CLASS (*psym) != LOC_BLOCK)
2908 || (class == 1 && SYMBOL_CLASS (*psym) == LOC_BLOCK)
2909 || (class == 2 && SYMBOL_CLASS (*psym) == LOC_TYPEDEF)
2910 || (class == 3 && SYMBOL_CLASS (*psym) == LOC_BLOCK)))
2912 PSYMTAB_TO_SYMTAB(ps);
2920 /* Here, we search through the minimal symbol tables for functions
2921 and variables that match, and force their symbols to be read.
2922 This is in particular necessary for demangled variable names,
2923 which are no longer put into the partial symbol tables.
2924 The symbol will then be found during the scan of symtabs below.
2926 For functions, find_pc_symtab should succeed if we have debug info
2927 for the function, for variables we have to call lookup_symbol
2928 to determine if the variable has debug info.
2929 If the lookup fails, set found_misc so that we will rescan to print
2930 any matching symbols without debug info.
2933 if (class == 0 || class == 1)
2935 ALL_MSYMBOLS (objfile, msymbol)
2937 if (MSYMBOL_TYPE (msymbol) == ourtype ||
2938 MSYMBOL_TYPE (msymbol) == ourtype2 ||
2939 MSYMBOL_TYPE (msymbol) == ourtype3 ||
2940 MSYMBOL_TYPE (msymbol) == ourtype4)
2942 if (regexp == NULL || SYMBOL_MATCHES_REGEXP (msymbol))
2944 if (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol)))
2947 || lookup_symbol (SYMBOL_NAME (msymbol),
2948 (struct block *) NULL,
2950 0, (struct symtab **) NULL) == NULL)
2958 /* Printout here so as to get after the "Reading in symbols"
2959 messages which will be generated above. */
2961 printf_filtered (regexp
2962 ? "All %ss matching regular expression \"%s\":\n"
2963 : "All defined %ss:\n",
2967 ALL_SYMTABS (objfile, s)
2970 bv = BLOCKVECTOR (s);
2971 /* Often many files share a blockvector.
2972 Scan each blockvector only once so that
2973 we don't get every symbol many times.
2974 It happens that the first symtab in the list
2975 for any given blockvector is the main file. */
2977 for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
2979 b = BLOCKVECTOR_BLOCK (bv, i);
2980 /* Skip the sort if this block is always sorted. */
2981 if (!BLOCK_SHOULD_SORT (b))
2982 sort_block_syms (b);
2983 for (j = 0; j < BLOCK_NSYMS (b); j++)
2986 sym = BLOCK_SYM (b, j);
2987 if ((regexp == NULL || SYMBOL_MATCHES_REGEXP (sym))
2988 && ((class == 0 && SYMBOL_CLASS (sym) != LOC_TYPEDEF
2989 && SYMBOL_CLASS (sym) != LOC_BLOCK
2990 && SYMBOL_CLASS (sym) != LOC_CONST)
2991 || (class == 1 && SYMBOL_CLASS (sym) == LOC_BLOCK)
2992 || (class == 2 && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
2993 || (class == 3 && SYMBOL_CLASS (sym) == LOC_BLOCK)))
2997 /* Set a breakpoint here, if it's a function */
3000 /* There may be more than one function with the
3001 same name but in different files. In order to
3002 set breakpoints on all of them, we must give
3003 both the file name and the function name to
3005 Quoting the symbol name gets rid of problems
3006 with mangled symbol names that contain
3007 CPLUS_MARKER characters. */
3009 (char *) alloca (strlen (s->filename)
3010 + strlen (SYMBOL_NAME(sym))
3012 strcpy (string, s->filename);
3013 strcat (string, ":'");
3014 strcat (string, SYMBOL_NAME(sym));
3015 strcat (string, "'");
3016 break_command (string, from_tty);
3019 else if (!found_in_file)
3021 fputs_filtered ("\nFile ", gdb_stdout);
3022 fputs_filtered (s->filename, gdb_stdout);
3023 fputs_filtered (":\n", gdb_stdout);
3027 if (class != 2 && i == STATIC_BLOCK)
3028 printf_filtered ("static ");
3030 /* Typedef that is not a C++ class */
3032 && SYMBOL_NAMESPACE (sym) != STRUCT_NAMESPACE)
3033 c_typedef_print (SYMBOL_TYPE(sym), sym, gdb_stdout);
3034 /* variable, func, or typedef-that-is-c++-class */
3035 else if (class < 2 ||
3037 SYMBOL_NAMESPACE(sym) == STRUCT_NAMESPACE))
3039 type_print (SYMBOL_TYPE (sym),
3040 (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3041 ? "" : SYMBOL_SOURCE_NAME (sym)),
3044 printf_filtered (";\n");
3049 /* Tiemann says: "info methods was never implemented." */
3050 char *demangled_name;
3051 c_type_print_base (TYPE_FN_FIELD_TYPE(t, i),
3053 c_type_print_varspec_prefix (TYPE_FN_FIELD_TYPE(t, i),
3055 if (TYPE_FN_FIELD_STUB (t, i))
3056 check_stub_method (TYPE_DOMAIN_TYPE (type), j, i);
3058 cplus_demangle (TYPE_FN_FIELD_PHYSNAME (t, i),
3059 DMGL_ANSI | DMGL_PARAMS);
3060 if (demangled_name == NULL)
3061 fprintf_filtered (stream, "<badly mangled name %s>",
3062 TYPE_FN_FIELD_PHYSNAME (t, i));
3065 fputs_filtered (demangled_name, stream);
3066 free (demangled_name);
3076 /* If there are no eyes, avoid all contact. I mean, if there are
3077 no debug symbols, then print directly from the msymbol_vector. */
3079 if (found_misc || class != 1)
3082 ALL_MSYMBOLS (objfile, msymbol)
3084 if (MSYMBOL_TYPE (msymbol) == ourtype ||
3085 MSYMBOL_TYPE (msymbol) == ourtype2 ||
3086 MSYMBOL_TYPE (msymbol) == ourtype3 ||
3087 MSYMBOL_TYPE (msymbol) == ourtype4)
3089 if (regexp == NULL || SYMBOL_MATCHES_REGEXP (msymbol))
3091 /* Functions: Look up by address. */
3093 (0 == find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol))))
3095 /* Variables/Absolutes: Look up by name */
3096 if (lookup_symbol (SYMBOL_NAME (msymbol),
3097 (struct block *) NULL, VAR_NAMESPACE,
3098 0, (struct symtab **) NULL) == NULL)
3102 break_command (SYMBOL_NAME (msymbol), from_tty);
3103 printf_filtered ("<function, no debug info> %s;\n",
3104 SYMBOL_SOURCE_NAME (msymbol));
3109 printf_filtered ("\nNon-debugging symbols:\n");
3112 printf_filtered (" %08lx %s\n",
3113 (unsigned long) SYMBOL_VALUE_ADDRESS (msymbol),
3114 SYMBOL_SOURCE_NAME (msymbol));
3124 variables_info (regexp, from_tty)
3128 list_symbols (regexp, 0, 0, from_tty);
3132 functions_info (regexp, from_tty)
3136 list_symbols (regexp, 1, 0, from_tty);
3140 types_info (regexp, from_tty)
3144 list_symbols (regexp, 2, 0, from_tty);
3148 /* Tiemann says: "info methods was never implemented." */
3150 methods_info (regexp)
3153 list_symbols (regexp, 3, 0, from_tty);
3157 /* Breakpoint all functions matching regular expression. */
3159 rbreak_command (regexp, from_tty)
3163 list_symbols (regexp, 1, 1, from_tty);
3167 /* Return Nonzero if block a is lexically nested within block b,
3168 or if a and b have the same pc range.
3169 Return zero otherwise. */
3172 struct block *a, *b;
3176 return BLOCK_START (a) >= BLOCK_START (b)
3177 && BLOCK_END (a) <= BLOCK_END (b);
3181 /* Helper routine for make_symbol_completion_list. */
3183 static int return_val_size;
3184 static int return_val_index;
3185 static char **return_val;
3187 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
3189 if (SYMBOL_DEMANGLED_NAME (symbol) != NULL) \
3190 /* Put only the mangled name on the list. */ \
3191 /* Advantage: "b foo<TAB>" completes to "b foo(int, int)" */ \
3192 /* Disadvantage: "b foo__i<TAB>" doesn't complete. */ \
3193 completion_list_add_name \
3194 (SYMBOL_DEMANGLED_NAME (symbol), (sym_text), (len), (text), (word)); \
3196 completion_list_add_name \
3197 (SYMBOL_NAME (symbol), (sym_text), (len), (text), (word)); \
3200 /* Test to see if the symbol specified by SYMNAME (which is already
3201 demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
3202 characters. If so, add it to the current completion list. */
3205 completion_list_add_name (symname, sym_text, sym_text_len, text, word)
3215 /* clip symbols that cannot match */
3217 if (strncmp (symname, sym_text, sym_text_len) != 0)
3222 /* Clip any symbol names that we've already considered. (This is a
3223 time optimization) */
3225 for (i = 0; i < return_val_index; ++i)
3227 if (STREQ (symname, return_val[i]))
3233 /* We have a match for a completion, so add SYMNAME to the current list
3234 of matches. Note that the name is moved to freshly malloc'd space. */
3238 if (word == sym_text)
3240 new = xmalloc (strlen (symname) + 5);
3241 strcpy (new, symname);
3243 else if (word > sym_text)
3245 /* Return some portion of symname. */
3246 new = xmalloc (strlen (symname) + 5);
3247 strcpy (new, symname + (word - sym_text));
3251 /* Return some of SYM_TEXT plus symname. */
3252 new = xmalloc (strlen (symname) + (sym_text - word) + 5);
3253 strncpy (new, word, sym_text - word);
3254 new[sym_text - word] = '\0';
3255 strcat (new, symname);
3258 /* Recheck for duplicates if we intend to add a modified symbol. */
3259 if (word != sym_text)
3261 for (i = 0; i < return_val_index; ++i)
3263 if (STREQ (new, return_val[i]))
3271 if (return_val_index + 3 > return_val_size)
3273 newsize = (return_val_size *= 2) * sizeof (char *);
3274 return_val = (char **) xrealloc ((char *) return_val, newsize);
3276 return_val[return_val_index++] = new;
3277 return_val[return_val_index] = NULL;
3281 /* Return a NULL terminated array of all symbols (regardless of class) which
3282 begin by matching TEXT. If the answer is no symbols, then the return value
3283 is an array which contains only a NULL pointer.
3285 Problem: All of the symbols have to be copied because readline frees them.
3286 I'm not going to worry about this; hopefully there won't be that many. */
3289 make_symbol_completion_list (text, word)
3293 register struct symbol *sym;
3294 register struct symtab *s;
3295 register struct partial_symtab *ps;
3296 register struct minimal_symbol *msymbol;
3297 register struct objfile *objfile;
3298 register struct block *b, *surrounding_static_block = 0;
3300 struct partial_symbol **psym;
3301 /* The symbol we are completing on. Points in same buffer as text. */
3303 /* Length of sym_text. */
3306 /* Now look for the symbol we are supposed to complete on.
3307 FIXME: This should be language-specific. */
3311 char *quote_pos = NULL;
3313 /* First see if this is a quoted string. */
3315 for (p = text; *p != '\0'; ++p)
3317 if (quote_found != '\0')
3319 if (*p == quote_found)
3320 /* Found close quote. */
3322 else if (*p == '\\' && p[1] == quote_found)
3323 /* A backslash followed by the quote character
3324 doesn't end the string. */
3327 else if (*p == '\'' || *p == '"')
3333 if (quote_found == '\'')
3334 /* A string within single quotes can be a symbol, so complete on it. */
3335 sym_text = quote_pos + 1;
3336 else if (quote_found == '"')
3337 /* A double-quoted string is never a symbol, nor does it make sense
3338 to complete it any other way. */
3342 /* It is not a quoted string. Break it based on the characters
3343 which are in symbols. */
3346 if (isalnum (p[-1]) || p[-1] == '_' || p[-1] == '\0')
3355 sym_text_len = strlen (sym_text);
3357 return_val_size = 100;
3358 return_val_index = 0;
3359 return_val = (char **) xmalloc ((return_val_size + 1) * sizeof (char *));
3360 return_val[0] = NULL;
3362 /* Look through the partial symtabs for all symbols which begin
3363 by matching SYM_TEXT. Add each one that you find to the list. */
3365 ALL_PSYMTABS (objfile, ps)
3367 /* If the psymtab's been read in we'll get it when we search
3368 through the blockvector. */
3369 if (ps->readin) continue;
3371 for (psym = objfile->global_psymbols.list + ps->globals_offset;
3372 psym < (objfile->global_psymbols.list + ps->globals_offset
3373 + ps->n_global_syms);
3376 /* If interrupted, then quit. */
3378 COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word);
3381 for (psym = objfile->static_psymbols.list + ps->statics_offset;
3382 psym < (objfile->static_psymbols.list + ps->statics_offset
3383 + ps->n_static_syms);
3387 COMPLETION_LIST_ADD_SYMBOL (*psym, sym_text, sym_text_len, text, word);
3391 /* At this point scan through the misc symbol vectors and add each
3392 symbol you find to the list. Eventually we want to ignore
3393 anything that isn't a text symbol (everything else will be
3394 handled by the psymtab code above). */
3396 ALL_MSYMBOLS (objfile, msymbol)
3399 COMPLETION_LIST_ADD_SYMBOL (msymbol, sym_text, sym_text_len, text, word);
3402 /* Search upwards from currently selected frame (so that we can
3403 complete on local vars. */
3405 for (b = get_selected_block (); b != NULL; b = BLOCK_SUPERBLOCK (b))
3407 if (!BLOCK_SUPERBLOCK (b))
3409 surrounding_static_block = b; /* For elmin of dups */
3412 /* Also catch fields of types defined in this places which match our
3413 text string. Only complete on types visible from current context. */
3415 for (i = 0; i < BLOCK_NSYMS (b); i++)
3417 sym = BLOCK_SYM (b, i);
3418 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3419 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
3421 struct type *t = SYMBOL_TYPE (sym);
3422 enum type_code c = TYPE_CODE (t);
3424 if (c == TYPE_CODE_UNION || c == TYPE_CODE_STRUCT)
3426 for (j = TYPE_N_BASECLASSES (t); j < TYPE_NFIELDS (t); j++)
3428 if (TYPE_FIELD_NAME (t, j))
3430 completion_list_add_name (TYPE_FIELD_NAME (t, j),
3431 sym_text, sym_text_len, text, word);
3439 /* Go through the symtabs and check the externs and statics for
3440 symbols which match. */
3442 ALL_SYMTABS (objfile, s)
3445 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
3446 for (i = 0; i < BLOCK_NSYMS (b); i++)
3448 sym = BLOCK_SYM (b, i);
3449 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3453 ALL_SYMTABS (objfile, s)
3456 b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
3457 /* Don't do this block twice. */
3458 if (b == surrounding_static_block) continue;
3459 for (i = 0; i < BLOCK_NSYMS (b); i++)
3461 sym = BLOCK_SYM (b, i);
3462 COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
3466 return (return_val);
3469 /* Determine if PC is in the prologue of a function. The prologue is the area
3470 between the first instruction of a function, and the first executable line.
3471 Returns 1 if PC *might* be in prologue, 0 if definately *not* in prologue.
3473 If non-zero, func_start is where we think the prologue starts, possibly
3474 by previous examination of symbol table information.
3478 in_prologue (pc, func_start)
3480 CORE_ADDR func_start;
3482 struct symtab_and_line sal;
3483 CORE_ADDR func_addr, func_end;
3485 if (!find_pc_partial_function (pc, NULL, &func_addr, &func_end))
3486 goto nosyms; /* Might be in prologue */
3488 sal = find_pc_line (func_addr, 0);
3493 if (sal.end > func_addr
3494 && sal.end <= func_end) /* Is prologue in function? */
3495 return pc < sal.end; /* Yes, is pc in prologue? */
3497 /* The line after the prologue seems to be outside the function. In this
3498 case, tell the caller to find the prologue the hard way. */
3502 /* Come here when symtabs don't contain line # info. In this case, it is
3503 likely that the user has stepped into a library function w/o symbols, or
3504 is doing a stepi/nexti through code without symbols. */
3508 /* If func_start is zero (meaning unknown) then we don't know whether pc is
3509 in the prologue or not. I.E. it might be. */
3511 if (!func_start) return 1;
3513 /* We need to call the target-specific prologue skipping functions with the
3514 function's start address because PC may be pointing at an instruction that
3515 could be mistakenly considered part of the prologue. */
3517 SKIP_PROLOGUE (func_start);
3519 return pc < func_start;
3524 _initialize_symtab ()
3526 add_info ("variables", variables_info,
3527 "All global and static variable names, or those matching REGEXP.");
3528 add_info ("functions", functions_info,
3529 "All function names, or those matching REGEXP.");
3531 /* FIXME: This command has at least the following problems:
3532 1. It prints builtin types (in a very strange and confusing fashion).
3533 2. It doesn't print right, e.g. with
3534 typedef struct foo *FOO
3535 type_print prints "FOO" when we want to make it (in this situation)
3536 print "struct foo *".
3537 I also think "ptype" or "whatis" is more likely to be useful (but if
3538 there is much disagreement "info types" can be fixed). */
3539 add_info ("types", types_info,
3540 "All type names, or those matching REGEXP.");
3543 add_info ("methods", methods_info,
3544 "All method names, or those matching REGEXP::REGEXP.\n\
3545 If the class qualifier is omitted, it is assumed to be the current scope.\n\
3546 If the first REGEXP is omitted, then all methods matching the second REGEXP\n\
3549 add_info ("sources", sources_info,
3550 "Source files in the program.");
3552 add_com ("rbreak", class_breakpoint, rbreak_command,
3553 "Set a breakpoint for all functions matching REGEXP.");
3555 /* Initialize the one built-in type that isn't language dependent... */
3556 builtin_type_error = init_type (TYPE_CODE_ERROR, 0, 0,
3557 "<unknown type>", (struct objfile *) NULL);