1 /* Symbol table lookup for the GNU debugger, GDB.
3 Copyright (C) 1986-2013 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 3 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, see <http://www.gnu.org/licenses/>. */
30 #include "gdb_regex.h"
31 #include "expression.h"
36 #include "filenames.h" /* for FILENAME_CMP */
37 #include "objc-lang.h"
43 #include "cli/cli-utils.h"
47 #include "gdb_obstack.h"
49 #include "dictionary.h"
51 #include <sys/types.h>
53 #include "gdb_string.h"
57 #include "cp-support.h"
59 #include "gdb_assert.h"
62 #include "macroscope.h"
65 #include "parser-defs.h"
67 /* Prototypes for local functions */
69 static void rbreak_command (char *, int);
71 static void types_info (char *, int);
73 static void functions_info (char *, int);
75 static void variables_info (char *, int);
77 static void sources_info (char *, int);
79 static int find_line_common (struct linetable
*, int, int *, int);
81 static struct symbol
*lookup_symbol_aux (const char *name
,
82 const struct block
*block
,
83 const domain_enum domain
,
84 enum language language
,
85 struct field_of_this_result
*is_a_field_of_this
);
88 struct symbol
*lookup_symbol_aux_local (const char *name
,
89 const struct block
*block
,
90 const domain_enum domain
,
91 enum language language
);
94 struct symbol
*lookup_symbol_aux_symtabs (int block_index
,
96 const domain_enum domain
);
99 struct symbol
*lookup_symbol_aux_quick (struct objfile
*objfile
,
102 const domain_enum domain
);
104 void _initialize_symtab (void);
108 /* When non-zero, print debugging messages related to symtab creation. */
109 unsigned int symtab_create_debug
= 0;
111 /* Non-zero if a file may be known by two different basenames.
112 This is the uncommon case, and significantly slows down gdb.
113 Default set to "off" to not slow down the common case. */
114 int basenames_may_differ
= 0;
116 /* Allow the user to configure the debugger behavior with respect
117 to multiple-choice menus when more than one symbol matches during
120 const char multiple_symbols_ask
[] = "ask";
121 const char multiple_symbols_all
[] = "all";
122 const char multiple_symbols_cancel
[] = "cancel";
123 static const char *const multiple_symbols_modes
[] =
125 multiple_symbols_ask
,
126 multiple_symbols_all
,
127 multiple_symbols_cancel
,
130 static const char *multiple_symbols_mode
= multiple_symbols_all
;
132 /* Read-only accessor to AUTO_SELECT_MODE. */
135 multiple_symbols_select_mode (void)
137 return multiple_symbols_mode
;
140 /* Block in which the most recently searched-for symbol was found.
141 Might be better to make this a parameter to lookup_symbol and
144 const struct block
*block_found
;
146 /* Return the name of a domain_enum. */
149 domain_name (domain_enum e
)
153 case UNDEF_DOMAIN
: return "UNDEF_DOMAIN";
154 case VAR_DOMAIN
: return "VAR_DOMAIN";
155 case STRUCT_DOMAIN
: return "STRUCT_DOMAIN";
156 case LABEL_DOMAIN
: return "LABEL_DOMAIN";
157 case COMMON_BLOCK_DOMAIN
: return "COMMON_BLOCK_DOMAIN";
158 default: gdb_assert_not_reached ("bad domain_enum");
162 /* Return the name of a search_domain . */
165 search_domain_name (enum search_domain e
)
169 case VARIABLES_DOMAIN
: return "VARIABLES_DOMAIN";
170 case FUNCTIONS_DOMAIN
: return "FUNCTIONS_DOMAIN";
171 case TYPES_DOMAIN
: return "TYPES_DOMAIN";
172 case ALL_DOMAIN
: return "ALL_DOMAIN";
173 default: gdb_assert_not_reached ("bad search_domain");
177 /* Set the primary field in SYMTAB. */
180 set_symtab_primary (struct symtab
*symtab
, int primary
)
182 symtab
->primary
= primary
;
184 if (symtab_create_debug
&& primary
)
186 fprintf_unfiltered (gdb_stdlog
,
187 "Created primary symtab %s for %s.\n",
188 host_address_to_string (symtab
),
189 symtab_to_filename_for_display (symtab
));
193 /* See whether FILENAME matches SEARCH_NAME using the rule that we
194 advertise to the user. (The manual's description of linespecs
195 describes what we advertise). Returns true if they match, false
199 compare_filenames_for_search (const char *filename
, const char *search_name
)
201 int len
= strlen (filename
);
202 size_t search_len
= strlen (search_name
);
204 if (len
< search_len
)
207 /* The tail of FILENAME must match. */
208 if (FILENAME_CMP (filename
+ len
- search_len
, search_name
) != 0)
211 /* Either the names must completely match, or the character
212 preceding the trailing SEARCH_NAME segment of FILENAME must be a
215 The check !IS_ABSOLUTE_PATH ensures SEARCH_NAME "/dir/file.c"
216 cannot match FILENAME "/path//dir/file.c" - as user has requested
217 absolute path. The sama applies for "c:\file.c" possibly
218 incorrectly hypothetically matching "d:\dir\c:\file.c".
220 The HAS_DRIVE_SPEC purpose is to make FILENAME "c:file.c"
221 compatible with SEARCH_NAME "file.c". In such case a compiler had
222 to put the "c:file.c" name into debug info. Such compatibility
223 works only on GDB built for DOS host. */
224 return (len
== search_len
225 || (!IS_ABSOLUTE_PATH (search_name
)
226 && IS_DIR_SEPARATOR (filename
[len
- search_len
- 1]))
227 || (HAS_DRIVE_SPEC (filename
)
228 && STRIP_DRIVE_SPEC (filename
) == &filename
[len
- search_len
]));
231 /* Check for a symtab of a specific name by searching some symtabs.
232 This is a helper function for callbacks of iterate_over_symtabs.
234 If NAME is not absolute, then REAL_PATH is NULL
235 If NAME is absolute, then REAL_PATH is the gdb_realpath form of NAME.
237 The return value, NAME, REAL_PATH, CALLBACK, and DATA
238 are identical to the `map_symtabs_matching_filename' method of
239 quick_symbol_functions.
241 FIRST and AFTER_LAST indicate the range of symtabs to search.
242 AFTER_LAST is one past the last symtab to search; NULL means to
243 search until the end of the list. */
246 iterate_over_some_symtabs (const char *name
,
247 const char *real_path
,
248 int (*callback
) (struct symtab
*symtab
,
251 struct symtab
*first
,
252 struct symtab
*after_last
)
254 struct symtab
*s
= NULL
;
255 const char* base_name
= lbasename (name
);
257 for (s
= first
; s
!= NULL
&& s
!= after_last
; s
= s
->next
)
259 if (compare_filenames_for_search (s
->filename
, name
))
261 if (callback (s
, data
))
266 /* Before we invoke realpath, which can get expensive when many
267 files are involved, do a quick comparison of the basenames. */
268 if (! basenames_may_differ
269 && FILENAME_CMP (base_name
, lbasename (s
->filename
)) != 0)
272 if (compare_filenames_for_search (symtab_to_fullname (s
), name
))
274 if (callback (s
, data
))
279 /* If the user gave us an absolute path, try to find the file in
280 this symtab and use its absolute path. */
281 if (real_path
!= NULL
)
283 const char *fullname
= symtab_to_fullname (s
);
285 gdb_assert (IS_ABSOLUTE_PATH (real_path
));
286 gdb_assert (IS_ABSOLUTE_PATH (name
));
287 if (FILENAME_CMP (real_path
, fullname
) == 0)
289 if (callback (s
, data
))
299 /* Check for a symtab of a specific name; first in symtabs, then in
300 psymtabs. *If* there is no '/' in the name, a match after a '/'
301 in the symtab filename will also work.
303 Calls CALLBACK with each symtab that is found and with the supplied
304 DATA. If CALLBACK returns true, the search stops. */
307 iterate_over_symtabs (const char *name
,
308 int (*callback
) (struct symtab
*symtab
,
312 struct objfile
*objfile
;
313 char *real_path
= NULL
;
314 struct cleanup
*cleanups
= make_cleanup (null_cleanup
, NULL
);
316 /* Here we are interested in canonicalizing an absolute path, not
317 absolutizing a relative path. */
318 if (IS_ABSOLUTE_PATH (name
))
320 real_path
= gdb_realpath (name
);
321 make_cleanup (xfree
, real_path
);
322 gdb_assert (IS_ABSOLUTE_PATH (real_path
));
325 ALL_OBJFILES (objfile
)
327 if (iterate_over_some_symtabs (name
, real_path
, callback
, data
,
328 objfile
->symtabs
, NULL
))
330 do_cleanups (cleanups
);
335 /* Same search rules as above apply here, but now we look thru the
338 ALL_OBJFILES (objfile
)
341 && objfile
->sf
->qf
->map_symtabs_matching_filename (objfile
,
347 do_cleanups (cleanups
);
352 do_cleanups (cleanups
);
355 /* The callback function used by lookup_symtab. */
358 lookup_symtab_callback (struct symtab
*symtab
, void *data
)
360 struct symtab
**result_ptr
= data
;
362 *result_ptr
= symtab
;
366 /* A wrapper for iterate_over_symtabs that returns the first matching
370 lookup_symtab (const char *name
)
372 struct symtab
*result
= NULL
;
374 iterate_over_symtabs (name
, lookup_symtab_callback
, &result
);
379 /* Mangle a GDB method stub type. This actually reassembles the pieces of the
380 full method name, which consist of the class name (from T), the unadorned
381 method name from METHOD_ID, and the signature for the specific overload,
382 specified by SIGNATURE_ID. Note that this function is g++ specific. */
385 gdb_mangle_name (struct type
*type
, int method_id
, int signature_id
)
387 int mangled_name_len
;
389 struct fn_field
*f
= TYPE_FN_FIELDLIST1 (type
, method_id
);
390 struct fn_field
*method
= &f
[signature_id
];
391 const char *field_name
= TYPE_FN_FIELDLIST_NAME (type
, method_id
);
392 const char *physname
= TYPE_FN_FIELD_PHYSNAME (f
, signature_id
);
393 const char *newname
= type_name_no_tag (type
);
395 /* Does the form of physname indicate that it is the full mangled name
396 of a constructor (not just the args)? */
397 int is_full_physname_constructor
;
400 int is_destructor
= is_destructor_name (physname
);
401 /* Need a new type prefix. */
402 char *const_prefix
= method
->is_const
? "C" : "";
403 char *volatile_prefix
= method
->is_volatile
? "V" : "";
405 int len
= (newname
== NULL
? 0 : strlen (newname
));
407 /* Nothing to do if physname already contains a fully mangled v3 abi name
408 or an operator name. */
409 if ((physname
[0] == '_' && physname
[1] == 'Z')
410 || is_operator_name (field_name
))
411 return xstrdup (physname
);
413 is_full_physname_constructor
= is_constructor_name (physname
);
415 is_constructor
= is_full_physname_constructor
416 || (newname
&& strcmp (field_name
, newname
) == 0);
419 is_destructor
= (strncmp (physname
, "__dt", 4) == 0);
421 if (is_destructor
|| is_full_physname_constructor
)
423 mangled_name
= (char *) xmalloc (strlen (physname
) + 1);
424 strcpy (mangled_name
, physname
);
430 xsnprintf (buf
, sizeof (buf
), "__%s%s", const_prefix
, volatile_prefix
);
432 else if (physname
[0] == 't' || physname
[0] == 'Q')
434 /* The physname for template and qualified methods already includes
436 xsnprintf (buf
, sizeof (buf
), "__%s%s", const_prefix
, volatile_prefix
);
442 xsnprintf (buf
, sizeof (buf
), "__%s%s%d", const_prefix
,
443 volatile_prefix
, len
);
445 mangled_name_len
= ((is_constructor
? 0 : strlen (field_name
))
446 + strlen (buf
) + len
+ strlen (physname
) + 1);
448 mangled_name
= (char *) xmalloc (mangled_name_len
);
450 mangled_name
[0] = '\0';
452 strcpy (mangled_name
, field_name
);
454 strcat (mangled_name
, buf
);
455 /* If the class doesn't have a name, i.e. newname NULL, then we just
456 mangle it using 0 for the length of the class. Thus it gets mangled
457 as something starting with `::' rather than `classname::'. */
459 strcat (mangled_name
, newname
);
461 strcat (mangled_name
, physname
);
462 return (mangled_name
);
465 /* Initialize the cplus_specific structure. 'cplus_specific' should
466 only be allocated for use with cplus symbols. */
469 symbol_init_cplus_specific (struct general_symbol_info
*gsymbol
,
470 struct obstack
*obstack
)
472 /* A language_specific structure should not have been previously
474 gdb_assert (gsymbol
->language_specific
.cplus_specific
== NULL
);
475 gdb_assert (obstack
!= NULL
);
477 gsymbol
->language_specific
.cplus_specific
=
478 OBSTACK_ZALLOC (obstack
, struct cplus_specific
);
481 /* Set the demangled name of GSYMBOL to NAME. NAME must be already
482 correctly allocated. For C++ symbols a cplus_specific struct is
483 allocated so OBJFILE must not be NULL. If this is a non C++ symbol
484 OBJFILE can be NULL. */
487 symbol_set_demangled_name (struct general_symbol_info
*gsymbol
,
489 struct obstack
*obstack
)
491 if (gsymbol
->language
== language_cplus
)
493 if (gsymbol
->language_specific
.cplus_specific
== NULL
)
494 symbol_init_cplus_specific (gsymbol
, obstack
);
496 gsymbol
->language_specific
.cplus_specific
->demangled_name
= name
;
498 else if (gsymbol
->language
== language_ada
)
502 gsymbol
->ada_mangled
= 0;
503 gsymbol
->language_specific
.obstack
= obstack
;
507 gsymbol
->ada_mangled
= 1;
508 gsymbol
->language_specific
.mangled_lang
.demangled_name
= name
;
512 gsymbol
->language_specific
.mangled_lang
.demangled_name
= name
;
515 /* Return the demangled name of GSYMBOL. */
518 symbol_get_demangled_name (const struct general_symbol_info
*gsymbol
)
520 if (gsymbol
->language
== language_cplus
)
522 if (gsymbol
->language_specific
.cplus_specific
!= NULL
)
523 return gsymbol
->language_specific
.cplus_specific
->demangled_name
;
527 else if (gsymbol
->language
== language_ada
)
529 if (!gsymbol
->ada_mangled
)
534 return gsymbol
->language_specific
.mangled_lang
.demangled_name
;
538 /* Initialize the language dependent portion of a symbol
539 depending upon the language for the symbol. */
542 symbol_set_language (struct general_symbol_info
*gsymbol
,
543 enum language language
,
544 struct obstack
*obstack
)
546 gsymbol
->language
= language
;
547 if (gsymbol
->language
== language_d
548 || gsymbol
->language
== language_go
549 || gsymbol
->language
== language_java
550 || gsymbol
->language
== language_objc
551 || gsymbol
->language
== language_fortran
)
553 symbol_set_demangled_name (gsymbol
, NULL
, obstack
);
555 else if (gsymbol
->language
== language_ada
)
557 gdb_assert (gsymbol
->ada_mangled
== 0);
558 gsymbol
->language_specific
.obstack
= obstack
;
560 else if (gsymbol
->language
== language_cplus
)
561 gsymbol
->language_specific
.cplus_specific
= NULL
;
564 memset (&gsymbol
->language_specific
, 0,
565 sizeof (gsymbol
->language_specific
));
569 /* Functions to initialize a symbol's mangled name. */
571 /* Objects of this type are stored in the demangled name hash table. */
572 struct demangled_name_entry
578 /* Hash function for the demangled name hash. */
581 hash_demangled_name_entry (const void *data
)
583 const struct demangled_name_entry
*e
= data
;
585 return htab_hash_string (e
->mangled
);
588 /* Equality function for the demangled name hash. */
591 eq_demangled_name_entry (const void *a
, const void *b
)
593 const struct demangled_name_entry
*da
= a
;
594 const struct demangled_name_entry
*db
= b
;
596 return strcmp (da
->mangled
, db
->mangled
) == 0;
599 /* Create the hash table used for demangled names. Each hash entry is
600 a pair of strings; one for the mangled name and one for the demangled
601 name. The entry is hashed via just the mangled name. */
604 create_demangled_names_hash (struct objfile
*objfile
)
606 /* Choose 256 as the starting size of the hash table, somewhat arbitrarily.
607 The hash table code will round this up to the next prime number.
608 Choosing a much larger table size wastes memory, and saves only about
609 1% in symbol reading. */
611 objfile
->per_bfd
->demangled_names_hash
= htab_create_alloc
612 (256, hash_demangled_name_entry
, eq_demangled_name_entry
,
613 NULL
, xcalloc
, xfree
);
616 /* Try to determine the demangled name for a symbol, based on the
617 language of that symbol. If the language is set to language_auto,
618 it will attempt to find any demangling algorithm that works and
619 then set the language appropriately. The returned name is allocated
620 by the demangler and should be xfree'd. */
623 symbol_find_demangled_name (struct general_symbol_info
*gsymbol
,
626 char *demangled
= NULL
;
628 if (gsymbol
->language
== language_unknown
)
629 gsymbol
->language
= language_auto
;
631 if (gsymbol
->language
== language_objc
632 || gsymbol
->language
== language_auto
)
635 objc_demangle (mangled
, 0);
636 if (demangled
!= NULL
)
638 gsymbol
->language
= language_objc
;
642 if (gsymbol
->language
== language_cplus
643 || gsymbol
->language
== language_auto
)
646 gdb_demangle (mangled
, DMGL_PARAMS
| DMGL_ANSI
);
647 if (demangled
!= NULL
)
649 gsymbol
->language
= language_cplus
;
653 if (gsymbol
->language
== language_java
)
656 gdb_demangle (mangled
,
657 DMGL_PARAMS
| DMGL_ANSI
| DMGL_JAVA
);
658 if (demangled
!= NULL
)
660 gsymbol
->language
= language_java
;
664 if (gsymbol
->language
== language_d
665 || gsymbol
->language
== language_auto
)
667 demangled
= d_demangle(mangled
, 0);
668 if (demangled
!= NULL
)
670 gsymbol
->language
= language_d
;
674 /* FIXME(dje): Continually adding languages here is clumsy.
675 Better to just call la_demangle if !auto, and if auto then call
676 a utility routine that tries successive languages in turn and reports
677 which one it finds. I realize the la_demangle options may be different
678 for different languages but there's already a FIXME for that. */
679 if (gsymbol
->language
== language_go
680 || gsymbol
->language
== language_auto
)
682 demangled
= go_demangle (mangled
, 0);
683 if (demangled
!= NULL
)
685 gsymbol
->language
= language_go
;
690 /* We could support `gsymbol->language == language_fortran' here to provide
691 module namespaces also for inferiors with only minimal symbol table (ELF
692 symbols). Just the mangling standard is not standardized across compilers
693 and there is no DW_AT_producer available for inferiors with only the ELF
694 symbols to check the mangling kind. */
698 /* Set both the mangled and demangled (if any) names for GSYMBOL based
699 on LINKAGE_NAME and LEN. Ordinarily, NAME is copied onto the
700 objfile's obstack; but if COPY_NAME is 0 and if NAME is
701 NUL-terminated, then this function assumes that NAME is already
702 correctly saved (either permanently or with a lifetime tied to the
703 objfile), and it will not be copied.
705 The hash table corresponding to OBJFILE is used, and the memory
706 comes from the per-BFD storage_obstack. LINKAGE_NAME is copied,
707 so the pointer can be discarded after calling this function. */
709 /* We have to be careful when dealing with Java names: when we run
710 into a Java minimal symbol, we don't know it's a Java symbol, so it
711 gets demangled as a C++ name. This is unfortunate, but there's not
712 much we can do about it: but when demangling partial symbols and
713 regular symbols, we'd better not reuse the wrong demangled name.
714 (See PR gdb/1039.) We solve this by putting a distinctive prefix
715 on Java names when storing them in the hash table. */
717 /* FIXME: carlton/2003-03-13: This is an unfortunate situation. I
718 don't mind the Java prefix so much: different languages have
719 different demangling requirements, so it's only natural that we
720 need to keep language data around in our demangling cache. But
721 it's not good that the minimal symbol has the wrong demangled name.
722 Unfortunately, I can't think of any easy solution to that
725 #define JAVA_PREFIX "##JAVA$$"
726 #define JAVA_PREFIX_LEN 8
729 symbol_set_names (struct general_symbol_info
*gsymbol
,
730 const char *linkage_name
, int len
, int copy_name
,
731 struct objfile
*objfile
)
733 struct demangled_name_entry
**slot
;
734 /* A 0-terminated copy of the linkage name. */
735 const char *linkage_name_copy
;
736 /* A copy of the linkage name that might have a special Java prefix
737 added to it, for use when looking names up in the hash table. */
738 const char *lookup_name
;
739 /* The length of lookup_name. */
741 struct demangled_name_entry entry
;
742 struct objfile_per_bfd_storage
*per_bfd
= objfile
->per_bfd
;
744 if (gsymbol
->language
== language_ada
)
746 /* In Ada, we do the symbol lookups using the mangled name, so
747 we can save some space by not storing the demangled name.
749 As a side note, we have also observed some overlap between
750 the C++ mangling and Ada mangling, similarly to what has
751 been observed with Java. Because we don't store the demangled
752 name with the symbol, we don't need to use the same trick
755 gsymbol
->name
= linkage_name
;
758 char *name
= obstack_alloc (&per_bfd
->storage_obstack
, len
+ 1);
760 memcpy (name
, linkage_name
, len
);
762 gsymbol
->name
= name
;
764 symbol_set_demangled_name (gsymbol
, NULL
, &per_bfd
->storage_obstack
);
769 if (per_bfd
->demangled_names_hash
== NULL
)
770 create_demangled_names_hash (objfile
);
772 /* The stabs reader generally provides names that are not
773 NUL-terminated; most of the other readers don't do this, so we
774 can just use the given copy, unless we're in the Java case. */
775 if (gsymbol
->language
== language_java
)
779 lookup_len
= len
+ JAVA_PREFIX_LEN
;
780 alloc_name
= alloca (lookup_len
+ 1);
781 memcpy (alloc_name
, JAVA_PREFIX
, JAVA_PREFIX_LEN
);
782 memcpy (alloc_name
+ JAVA_PREFIX_LEN
, linkage_name
, len
);
783 alloc_name
[lookup_len
] = '\0';
785 lookup_name
= alloc_name
;
786 linkage_name_copy
= alloc_name
+ JAVA_PREFIX_LEN
;
788 else if (linkage_name
[len
] != '\0')
793 alloc_name
= alloca (lookup_len
+ 1);
794 memcpy (alloc_name
, linkage_name
, len
);
795 alloc_name
[lookup_len
] = '\0';
797 lookup_name
= alloc_name
;
798 linkage_name_copy
= alloc_name
;
803 lookup_name
= linkage_name
;
804 linkage_name_copy
= linkage_name
;
807 entry
.mangled
= lookup_name
;
808 slot
= ((struct demangled_name_entry
**)
809 htab_find_slot (per_bfd
->demangled_names_hash
,
812 /* If this name is not in the hash table, add it. */
814 /* A C version of the symbol may have already snuck into the table.
815 This happens to, e.g., main.init (__go_init_main). Cope. */
816 || (gsymbol
->language
== language_go
817 && (*slot
)->demangled
[0] == '\0'))
819 char *demangled_name
= symbol_find_demangled_name (gsymbol
,
821 int demangled_len
= demangled_name
? strlen (demangled_name
) : 0;
823 /* Suppose we have demangled_name==NULL, copy_name==0, and
824 lookup_name==linkage_name. In this case, we already have the
825 mangled name saved, and we don't have a demangled name. So,
826 you might think we could save a little space by not recording
827 this in the hash table at all.
829 It turns out that it is actually important to still save such
830 an entry in the hash table, because storing this name gives
831 us better bcache hit rates for partial symbols. */
832 if (!copy_name
&& lookup_name
== linkage_name
)
834 *slot
= obstack_alloc (&per_bfd
->storage_obstack
,
835 offsetof (struct demangled_name_entry
,
837 + demangled_len
+ 1);
838 (*slot
)->mangled
= lookup_name
;
844 /* If we must copy the mangled name, put it directly after
845 the demangled name so we can have a single
847 *slot
= obstack_alloc (&per_bfd
->storage_obstack
,
848 offsetof (struct demangled_name_entry
,
850 + lookup_len
+ demangled_len
+ 2);
851 mangled_ptr
= &((*slot
)->demangled
[demangled_len
+ 1]);
852 strcpy (mangled_ptr
, lookup_name
);
853 (*slot
)->mangled
= mangled_ptr
;
856 if (demangled_name
!= NULL
)
858 strcpy ((*slot
)->demangled
, demangled_name
);
859 xfree (demangled_name
);
862 (*slot
)->demangled
[0] = '\0';
865 gsymbol
->name
= (*slot
)->mangled
+ lookup_len
- len
;
866 if ((*slot
)->demangled
[0] != '\0')
867 symbol_set_demangled_name (gsymbol
, (*slot
)->demangled
,
868 &per_bfd
->storage_obstack
);
870 symbol_set_demangled_name (gsymbol
, NULL
, &per_bfd
->storage_obstack
);
873 /* Return the source code name of a symbol. In languages where
874 demangling is necessary, this is the demangled name. */
877 symbol_natural_name (const struct general_symbol_info
*gsymbol
)
879 switch (gsymbol
->language
)
886 case language_fortran
:
887 if (symbol_get_demangled_name (gsymbol
) != NULL
)
888 return symbol_get_demangled_name (gsymbol
);
891 return ada_decode_symbol (gsymbol
);
895 return gsymbol
->name
;
898 /* Return the demangled name for a symbol based on the language for
899 that symbol. If no demangled name exists, return NULL. */
902 symbol_demangled_name (const struct general_symbol_info
*gsymbol
)
904 const char *dem_name
= NULL
;
906 switch (gsymbol
->language
)
913 case language_fortran
:
914 dem_name
= symbol_get_demangled_name (gsymbol
);
917 dem_name
= ada_decode_symbol (gsymbol
);
925 /* Return the search name of a symbol---generally the demangled or
926 linkage name of the symbol, depending on how it will be searched for.
927 If there is no distinct demangled name, then returns the same value
928 (same pointer) as SYMBOL_LINKAGE_NAME. */
931 symbol_search_name (const struct general_symbol_info
*gsymbol
)
933 if (gsymbol
->language
== language_ada
)
934 return gsymbol
->name
;
936 return symbol_natural_name (gsymbol
);
939 /* Initialize the structure fields to zero values. */
942 init_sal (struct symtab_and_line
*sal
)
950 sal
->explicit_pc
= 0;
951 sal
->explicit_line
= 0;
956 /* Return 1 if the two sections are the same, or if they could
957 plausibly be copies of each other, one in an original object
958 file and another in a separated debug file. */
961 matching_obj_sections (struct obj_section
*obj_first
,
962 struct obj_section
*obj_second
)
964 asection
*first
= obj_first
? obj_first
->the_bfd_section
: NULL
;
965 asection
*second
= obj_second
? obj_second
->the_bfd_section
: NULL
;
968 /* If they're the same section, then they match. */
972 /* If either is NULL, give up. */
973 if (first
== NULL
|| second
== NULL
)
976 /* This doesn't apply to absolute symbols. */
977 if (first
->owner
== NULL
|| second
->owner
== NULL
)
980 /* If they're in the same object file, they must be different sections. */
981 if (first
->owner
== second
->owner
)
984 /* Check whether the two sections are potentially corresponding. They must
985 have the same size, address, and name. We can't compare section indexes,
986 which would be more reliable, because some sections may have been
988 if (bfd_get_section_size (first
) != bfd_get_section_size (second
))
991 /* In-memory addresses may start at a different offset, relativize them. */
992 if (bfd_get_section_vma (first
->owner
, first
)
993 - bfd_get_start_address (first
->owner
)
994 != bfd_get_section_vma (second
->owner
, second
)
995 - bfd_get_start_address (second
->owner
))
998 if (bfd_get_section_name (first
->owner
, first
) == NULL
999 || bfd_get_section_name (second
->owner
, second
) == NULL
1000 || strcmp (bfd_get_section_name (first
->owner
, first
),
1001 bfd_get_section_name (second
->owner
, second
)) != 0)
1004 /* Otherwise check that they are in corresponding objfiles. */
1007 if (obj
->obfd
== first
->owner
)
1009 gdb_assert (obj
!= NULL
);
1011 if (obj
->separate_debug_objfile
!= NULL
1012 && obj
->separate_debug_objfile
->obfd
== second
->owner
)
1014 if (obj
->separate_debug_objfile_backlink
!= NULL
1015 && obj
->separate_debug_objfile_backlink
->obfd
== second
->owner
)
1022 find_pc_sect_symtab_via_partial (CORE_ADDR pc
, struct obj_section
*section
)
1024 struct objfile
*objfile
;
1025 struct minimal_symbol
*msymbol
;
1027 /* If we know that this is not a text address, return failure. This is
1028 necessary because we loop based on texthigh and textlow, which do
1029 not include the data ranges. */
1030 msymbol
= lookup_minimal_symbol_by_pc_section (pc
, section
).minsym
;
1032 && (MSYMBOL_TYPE (msymbol
) == mst_data
1033 || MSYMBOL_TYPE (msymbol
) == mst_bss
1034 || MSYMBOL_TYPE (msymbol
) == mst_abs
1035 || MSYMBOL_TYPE (msymbol
) == mst_file_data
1036 || MSYMBOL_TYPE (msymbol
) == mst_file_bss
))
1039 ALL_OBJFILES (objfile
)
1041 struct symtab
*result
= NULL
;
1044 result
= objfile
->sf
->qf
->find_pc_sect_symtab (objfile
, msymbol
,
1053 /* Debug symbols usually don't have section information. We need to dig that
1054 out of the minimal symbols and stash that in the debug symbol. */
1057 fixup_section (struct general_symbol_info
*ginfo
,
1058 CORE_ADDR addr
, struct objfile
*objfile
)
1060 struct minimal_symbol
*msym
;
1062 /* First, check whether a minimal symbol with the same name exists
1063 and points to the same address. The address check is required
1064 e.g. on PowerPC64, where the minimal symbol for a function will
1065 point to the function descriptor, while the debug symbol will
1066 point to the actual function code. */
1067 msym
= lookup_minimal_symbol_by_pc_name (addr
, ginfo
->name
, objfile
);
1069 ginfo
->section
= SYMBOL_SECTION (msym
);
1072 /* Static, function-local variables do appear in the linker
1073 (minimal) symbols, but are frequently given names that won't
1074 be found via lookup_minimal_symbol(). E.g., it has been
1075 observed in frv-uclinux (ELF) executables that a static,
1076 function-local variable named "foo" might appear in the
1077 linker symbols as "foo.6" or "foo.3". Thus, there is no
1078 point in attempting to extend the lookup-by-name mechanism to
1079 handle this case due to the fact that there can be multiple
1082 So, instead, search the section table when lookup by name has
1083 failed. The ``addr'' and ``endaddr'' fields may have already
1084 been relocated. If so, the relocation offset (i.e. the
1085 ANOFFSET value) needs to be subtracted from these values when
1086 performing the comparison. We unconditionally subtract it,
1087 because, when no relocation has been performed, the ANOFFSET
1088 value will simply be zero.
1090 The address of the symbol whose section we're fixing up HAS
1091 NOT BEEN adjusted (relocated) yet. It can't have been since
1092 the section isn't yet known and knowing the section is
1093 necessary in order to add the correct relocation value. In
1094 other words, we wouldn't even be in this function (attempting
1095 to compute the section) if it were already known.
1097 Note that it is possible to search the minimal symbols
1098 (subtracting the relocation value if necessary) to find the
1099 matching minimal symbol, but this is overkill and much less
1100 efficient. It is not necessary to find the matching minimal
1101 symbol, only its section.
1103 Note that this technique (of doing a section table search)
1104 can fail when unrelocated section addresses overlap. For
1105 this reason, we still attempt a lookup by name prior to doing
1106 a search of the section table. */
1108 struct obj_section
*s
;
1111 ALL_OBJFILE_OSECTIONS (objfile
, s
)
1113 int idx
= s
- objfile
->sections
;
1114 CORE_ADDR offset
= ANOFFSET (objfile
->section_offsets
, idx
);
1119 if (obj_section_addr (s
) - offset
<= addr
1120 && addr
< obj_section_endaddr (s
) - offset
)
1122 ginfo
->section
= idx
;
1127 /* If we didn't find the section, assume it is in the first
1128 section. If there is no allocated section, then it hardly
1129 matters what we pick, so just pick zero. */
1133 ginfo
->section
= fallback
;
1138 fixup_symbol_section (struct symbol
*sym
, struct objfile
*objfile
)
1145 /* We either have an OBJFILE, or we can get at it from the sym's
1146 symtab. Anything else is a bug. */
1147 gdb_assert (objfile
|| SYMBOL_SYMTAB (sym
));
1149 if (objfile
== NULL
)
1150 objfile
= SYMBOL_SYMTAB (sym
)->objfile
;
1152 if (SYMBOL_OBJ_SECTION (objfile
, sym
))
1155 /* We should have an objfile by now. */
1156 gdb_assert (objfile
);
1158 switch (SYMBOL_CLASS (sym
))
1162 addr
= SYMBOL_VALUE_ADDRESS (sym
);
1165 addr
= BLOCK_START (SYMBOL_BLOCK_VALUE (sym
));
1169 /* Nothing else will be listed in the minsyms -- no use looking
1174 fixup_section (&sym
->ginfo
, addr
, objfile
);
1179 /* Compute the demangled form of NAME as used by the various symbol
1180 lookup functions. The result is stored in *RESULT_NAME. Returns a
1181 cleanup which can be used to clean up the result.
1183 For Ada, this function just sets *RESULT_NAME to NAME, unmodified.
1184 Normally, Ada symbol lookups are performed using the encoded name
1185 rather than the demangled name, and so it might seem to make sense
1186 for this function to return an encoded version of NAME.
1187 Unfortunately, we cannot do this, because this function is used in
1188 circumstances where it is not appropriate to try to encode NAME.
1189 For instance, when displaying the frame info, we demangle the name
1190 of each parameter, and then perform a symbol lookup inside our
1191 function using that demangled name. In Ada, certain functions
1192 have internally-generated parameters whose name contain uppercase
1193 characters. Encoding those name would result in those uppercase
1194 characters to become lowercase, and thus cause the symbol lookup
1198 demangle_for_lookup (const char *name
, enum language lang
,
1199 const char **result_name
)
1201 char *demangled_name
= NULL
;
1202 const char *modified_name
= NULL
;
1203 struct cleanup
*cleanup
= make_cleanup (null_cleanup
, 0);
1205 modified_name
= name
;
1207 /* If we are using C++, D, Go, or Java, demangle the name before doing a
1208 lookup, so we can always binary search. */
1209 if (lang
== language_cplus
)
1211 demangled_name
= gdb_demangle (name
, DMGL_ANSI
| DMGL_PARAMS
);
1214 modified_name
= demangled_name
;
1215 make_cleanup (xfree
, demangled_name
);
1219 /* If we were given a non-mangled name, canonicalize it
1220 according to the language (so far only for C++). */
1221 demangled_name
= cp_canonicalize_string (name
);
1224 modified_name
= demangled_name
;
1225 make_cleanup (xfree
, demangled_name
);
1229 else if (lang
== language_java
)
1231 demangled_name
= gdb_demangle (name
,
1232 DMGL_ANSI
| DMGL_PARAMS
| DMGL_JAVA
);
1235 modified_name
= demangled_name
;
1236 make_cleanup (xfree
, demangled_name
);
1239 else if (lang
== language_d
)
1241 demangled_name
= d_demangle (name
, 0);
1244 modified_name
= demangled_name
;
1245 make_cleanup (xfree
, demangled_name
);
1248 else if (lang
== language_go
)
1250 demangled_name
= go_demangle (name
, 0);
1253 modified_name
= demangled_name
;
1254 make_cleanup (xfree
, demangled_name
);
1258 *result_name
= modified_name
;
1262 /* Find the definition for a specified symbol name NAME
1263 in domain DOMAIN, visible from lexical block BLOCK.
1264 Returns the struct symbol pointer, or zero if no symbol is found.
1265 C++: if IS_A_FIELD_OF_THIS is nonzero on entry, check to see if
1266 NAME is a field of the current implied argument `this'. If so set
1267 *IS_A_FIELD_OF_THIS to 1, otherwise set it to zero.
1268 BLOCK_FOUND is set to the block in which NAME is found (in the case of
1269 a field of `this', value_of_this sets BLOCK_FOUND to the proper value.) */
1271 /* This function (or rather its subordinates) have a bunch of loops and
1272 it would seem to be attractive to put in some QUIT's (though I'm not really
1273 sure whether it can run long enough to be really important). But there
1274 are a few calls for which it would appear to be bad news to quit
1275 out of here: e.g., find_proc_desc in alpha-mdebug-tdep.c. (Note
1276 that there is C++ code below which can error(), but that probably
1277 doesn't affect these calls since they are looking for a known
1278 variable and thus can probably assume it will never hit the C++
1282 lookup_symbol_in_language (const char *name
, const struct block
*block
,
1283 const domain_enum domain
, enum language lang
,
1284 struct field_of_this_result
*is_a_field_of_this
)
1286 const char *modified_name
;
1287 struct symbol
*returnval
;
1288 struct cleanup
*cleanup
= demangle_for_lookup (name
, lang
, &modified_name
);
1290 returnval
= lookup_symbol_aux (modified_name
, block
, domain
, lang
,
1291 is_a_field_of_this
);
1292 do_cleanups (cleanup
);
1297 /* Behave like lookup_symbol_in_language, but performed with the
1298 current language. */
1301 lookup_symbol (const char *name
, const struct block
*block
,
1303 struct field_of_this_result
*is_a_field_of_this
)
1305 return lookup_symbol_in_language (name
, block
, domain
,
1306 current_language
->la_language
,
1307 is_a_field_of_this
);
1310 /* Look up the `this' symbol for LANG in BLOCK. Return the symbol if
1311 found, or NULL if not found. */
1314 lookup_language_this (const struct language_defn
*lang
,
1315 const struct block
*block
)
1317 if (lang
->la_name_of_this
== NULL
|| block
== NULL
)
1324 sym
= lookup_block_symbol (block
, lang
->la_name_of_this
, VAR_DOMAIN
);
1327 block_found
= block
;
1330 if (BLOCK_FUNCTION (block
))
1332 block
= BLOCK_SUPERBLOCK (block
);
1338 /* Given TYPE, a structure/union,
1339 return 1 if the component named NAME from the ultimate target
1340 structure/union is defined, otherwise, return 0. */
1343 check_field (struct type
*type
, const char *name
,
1344 struct field_of_this_result
*is_a_field_of_this
)
1348 /* The type may be a stub. */
1349 CHECK_TYPEDEF (type
);
1351 for (i
= TYPE_NFIELDS (type
) - 1; i
>= TYPE_N_BASECLASSES (type
); i
--)
1353 const char *t_field_name
= TYPE_FIELD_NAME (type
, i
);
1355 if (t_field_name
&& (strcmp_iw (t_field_name
, name
) == 0))
1357 is_a_field_of_this
->type
= type
;
1358 is_a_field_of_this
->field
= &TYPE_FIELD (type
, i
);
1363 /* C++: If it was not found as a data field, then try to return it
1364 as a pointer to a method. */
1366 for (i
= TYPE_NFN_FIELDS (type
) - 1; i
>= 0; --i
)
1368 if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type
, i
), name
) == 0)
1370 is_a_field_of_this
->type
= type
;
1371 is_a_field_of_this
->fn_field
= &TYPE_FN_FIELDLIST (type
, i
);
1376 for (i
= TYPE_N_BASECLASSES (type
) - 1; i
>= 0; i
--)
1377 if (check_field (TYPE_BASECLASS (type
, i
), name
, is_a_field_of_this
))
1383 /* Behave like lookup_symbol except that NAME is the natural name
1384 (e.g., demangled name) of the symbol that we're looking for. */
1386 static struct symbol
*
1387 lookup_symbol_aux (const char *name
, const struct block
*block
,
1388 const domain_enum domain
, enum language language
,
1389 struct field_of_this_result
*is_a_field_of_this
)
1392 const struct language_defn
*langdef
;
1394 /* Make sure we do something sensible with is_a_field_of_this, since
1395 the callers that set this parameter to some non-null value will
1396 certainly use it later. If we don't set it, the contents of
1397 is_a_field_of_this are undefined. */
1398 if (is_a_field_of_this
!= NULL
)
1399 memset (is_a_field_of_this
, 0, sizeof (*is_a_field_of_this
));
1401 /* Search specified block and its superiors. Don't search
1402 STATIC_BLOCK or GLOBAL_BLOCK. */
1404 sym
= lookup_symbol_aux_local (name
, block
, domain
, language
);
1408 /* If requested to do so by the caller and if appropriate for LANGUAGE,
1409 check to see if NAME is a field of `this'. */
1411 langdef
= language_def (language
);
1413 /* Don't do this check if we are searching for a struct. It will
1414 not be found by check_field, but will be found by other
1416 if (is_a_field_of_this
!= NULL
&& domain
!= STRUCT_DOMAIN
)
1418 struct symbol
*sym
= lookup_language_this (langdef
, block
);
1422 struct type
*t
= sym
->type
;
1424 /* I'm not really sure that type of this can ever
1425 be typedefed; just be safe. */
1427 if (TYPE_CODE (t
) == TYPE_CODE_PTR
1428 || TYPE_CODE (t
) == TYPE_CODE_REF
)
1429 t
= TYPE_TARGET_TYPE (t
);
1431 if (TYPE_CODE (t
) != TYPE_CODE_STRUCT
1432 && TYPE_CODE (t
) != TYPE_CODE_UNION
)
1433 error (_("Internal error: `%s' is not an aggregate"),
1434 langdef
->la_name_of_this
);
1436 if (check_field (t
, name
, is_a_field_of_this
))
1441 /* Now do whatever is appropriate for LANGUAGE to look
1442 up static and global variables. */
1444 sym
= langdef
->la_lookup_symbol_nonlocal (name
, block
, domain
);
1448 /* Now search all static file-level symbols. Not strictly correct,
1449 but more useful than an error. */
1451 return lookup_static_symbol_aux (name
, domain
);
1454 /* Search all static file-level symbols for NAME from DOMAIN. Do the symtabs
1455 first, then check the psymtabs. If a psymtab indicates the existence of the
1456 desired name as a file-level static, then do psymtab-to-symtab conversion on
1457 the fly and return the found symbol. */
1460 lookup_static_symbol_aux (const char *name
, const domain_enum domain
)
1462 struct objfile
*objfile
;
1465 sym
= lookup_symbol_aux_symtabs (STATIC_BLOCK
, name
, domain
);
1469 ALL_OBJFILES (objfile
)
1471 sym
= lookup_symbol_aux_quick (objfile
, STATIC_BLOCK
, name
, domain
);
1479 /* Check to see if the symbol is defined in BLOCK or its superiors.
1480 Don't search STATIC_BLOCK or GLOBAL_BLOCK. */
1482 static struct symbol
*
1483 lookup_symbol_aux_local (const char *name
, const struct block
*block
,
1484 const domain_enum domain
,
1485 enum language language
)
1488 const struct block
*static_block
= block_static_block (block
);
1489 const char *scope
= block_scope (block
);
1491 /* Check if either no block is specified or it's a global block. */
1493 if (static_block
== NULL
)
1496 while (block
!= static_block
)
1498 sym
= lookup_symbol_aux_block (name
, block
, domain
);
1502 if (language
== language_cplus
|| language
== language_fortran
)
1504 sym
= cp_lookup_symbol_imports_or_template (scope
, name
, block
,
1510 if (BLOCK_FUNCTION (block
) != NULL
&& block_inlined_p (block
))
1512 block
= BLOCK_SUPERBLOCK (block
);
1515 /* We've reached the edge of the function without finding a result. */
1520 /* Look up OBJFILE to BLOCK. */
1523 lookup_objfile_from_block (const struct block
*block
)
1525 struct objfile
*obj
;
1531 block
= block_global_block (block
);
1532 /* Go through SYMTABS. */
1533 ALL_SYMTABS (obj
, s
)
1534 if (block
== BLOCKVECTOR_BLOCK (BLOCKVECTOR (s
), GLOBAL_BLOCK
))
1536 if (obj
->separate_debug_objfile_backlink
)
1537 obj
= obj
->separate_debug_objfile_backlink
;
1545 /* Look up a symbol in a block; if found, fixup the symbol, and set
1546 block_found appropriately. */
1549 lookup_symbol_aux_block (const char *name
, const struct block
*block
,
1550 const domain_enum domain
)
1554 sym
= lookup_block_symbol (block
, name
, domain
);
1557 block_found
= block
;
1558 return fixup_symbol_section (sym
, NULL
);
1564 /* Check all global symbols in OBJFILE in symtabs and
1568 lookup_global_symbol_from_objfile (const struct objfile
*main_objfile
,
1570 const domain_enum domain
)
1572 const struct objfile
*objfile
;
1574 struct blockvector
*bv
;
1575 const struct block
*block
;
1578 for (objfile
= main_objfile
;
1580 objfile
= objfile_separate_debug_iterate (main_objfile
, objfile
))
1582 /* Go through symtabs. */
1583 ALL_OBJFILE_PRIMARY_SYMTABS (objfile
, s
)
1585 bv
= BLOCKVECTOR (s
);
1586 block
= BLOCKVECTOR_BLOCK (bv
, GLOBAL_BLOCK
);
1587 sym
= lookup_block_symbol (block
, name
, domain
);
1590 block_found
= block
;
1591 return fixup_symbol_section (sym
, (struct objfile
*)objfile
);
1595 sym
= lookup_symbol_aux_quick ((struct objfile
*) objfile
, GLOBAL_BLOCK
,
1604 /* Check to see if the symbol is defined in one of the OBJFILE's
1605 symtabs. BLOCK_INDEX should be either GLOBAL_BLOCK or STATIC_BLOCK,
1606 depending on whether or not we want to search global symbols or
1609 static struct symbol
*
1610 lookup_symbol_aux_objfile (struct objfile
*objfile
, int block_index
,
1611 const char *name
, const domain_enum domain
)
1613 struct symbol
*sym
= NULL
;
1614 struct blockvector
*bv
;
1615 const struct block
*block
;
1618 ALL_OBJFILE_PRIMARY_SYMTABS (objfile
, s
)
1620 bv
= BLOCKVECTOR (s
);
1621 block
= BLOCKVECTOR_BLOCK (bv
, block_index
);
1622 sym
= lookup_block_symbol (block
, name
, domain
);
1625 block_found
= block
;
1626 return fixup_symbol_section (sym
, objfile
);
1633 /* Same as lookup_symbol_aux_objfile, except that it searches all
1634 objfiles. Return the first match found. */
1636 static struct symbol
*
1637 lookup_symbol_aux_symtabs (int block_index
, const char *name
,
1638 const domain_enum domain
)
1641 struct objfile
*objfile
;
1643 ALL_OBJFILES (objfile
)
1645 sym
= lookup_symbol_aux_objfile (objfile
, block_index
, name
, domain
);
1653 /* Wrapper around lookup_symbol_aux_objfile for search_symbols.
1654 Look up LINKAGE_NAME in DOMAIN in the global and static blocks of OBJFILE
1655 and all related objfiles. */
1657 static struct symbol
*
1658 lookup_symbol_in_objfile_from_linkage_name (struct objfile
*objfile
,
1659 const char *linkage_name
,
1662 enum language lang
= current_language
->la_language
;
1663 const char *modified_name
;
1664 struct cleanup
*cleanup
= demangle_for_lookup (linkage_name
, lang
,
1666 struct objfile
*main_objfile
, *cur_objfile
;
1668 if (objfile
->separate_debug_objfile_backlink
)
1669 main_objfile
= objfile
->separate_debug_objfile_backlink
;
1671 main_objfile
= objfile
;
1673 for (cur_objfile
= main_objfile
;
1675 cur_objfile
= objfile_separate_debug_iterate (main_objfile
, cur_objfile
))
1679 sym
= lookup_symbol_aux_objfile (cur_objfile
, GLOBAL_BLOCK
,
1680 modified_name
, domain
);
1682 sym
= lookup_symbol_aux_objfile (cur_objfile
, STATIC_BLOCK
,
1683 modified_name
, domain
);
1686 do_cleanups (cleanup
);
1691 do_cleanups (cleanup
);
1695 /* A helper function that throws an exception when a symbol was found
1696 in a psymtab but not in a symtab. */
1698 static void ATTRIBUTE_NORETURN
1699 error_in_psymtab_expansion (int kind
, const char *name
, struct symtab
*symtab
)
1702 Internal: %s symbol `%s' found in %s psymtab but not in symtab.\n\
1703 %s may be an inlined function, or may be a template function\n \
1704 (if a template, try specifying an instantiation: %s<type>)."),
1705 kind
== GLOBAL_BLOCK
? "global" : "static",
1706 name
, symtab_to_filename_for_display (symtab
), name
, name
);
1709 /* A helper function for lookup_symbol_aux that interfaces with the
1710 "quick" symbol table functions. */
1712 static struct symbol
*
1713 lookup_symbol_aux_quick (struct objfile
*objfile
, int kind
,
1714 const char *name
, const domain_enum domain
)
1716 struct symtab
*symtab
;
1717 struct blockvector
*bv
;
1718 const struct block
*block
;
1723 symtab
= objfile
->sf
->qf
->lookup_symbol (objfile
, kind
, name
, domain
);
1727 bv
= BLOCKVECTOR (symtab
);
1728 block
= BLOCKVECTOR_BLOCK (bv
, kind
);
1729 sym
= lookup_block_symbol (block
, name
, domain
);
1731 error_in_psymtab_expansion (kind
, name
, symtab
);
1732 return fixup_symbol_section (sym
, objfile
);
1735 /* A default version of lookup_symbol_nonlocal for use by languages
1736 that can't think of anything better to do. This implements the C
1740 basic_lookup_symbol_nonlocal (const char *name
,
1741 const struct block
*block
,
1742 const domain_enum domain
)
1746 /* NOTE: carlton/2003-05-19: The comments below were written when
1747 this (or what turned into this) was part of lookup_symbol_aux;
1748 I'm much less worried about these questions now, since these
1749 decisions have turned out well, but I leave these comments here
1752 /* NOTE: carlton/2002-12-05: There is a question as to whether or
1753 not it would be appropriate to search the current global block
1754 here as well. (That's what this code used to do before the
1755 is_a_field_of_this check was moved up.) On the one hand, it's
1756 redundant with the lookup_symbol_aux_symtabs search that happens
1757 next. On the other hand, if decode_line_1 is passed an argument
1758 like filename:var, then the user presumably wants 'var' to be
1759 searched for in filename. On the third hand, there shouldn't be
1760 multiple global variables all of which are named 'var', and it's
1761 not like decode_line_1 has ever restricted its search to only
1762 global variables in a single filename. All in all, only
1763 searching the static block here seems best: it's correct and it's
1766 /* NOTE: carlton/2002-12-05: There's also a possible performance
1767 issue here: if you usually search for global symbols in the
1768 current file, then it would be slightly better to search the
1769 current global block before searching all the symtabs. But there
1770 are other factors that have a much greater effect on performance
1771 than that one, so I don't think we should worry about that for
1774 sym
= lookup_symbol_static (name
, block
, domain
);
1778 return lookup_symbol_global (name
, block
, domain
);
1781 /* Lookup a symbol in the static block associated to BLOCK, if there
1782 is one; do nothing if BLOCK is NULL or a global block. */
1785 lookup_symbol_static (const char *name
,
1786 const struct block
*block
,
1787 const domain_enum domain
)
1789 const struct block
*static_block
= block_static_block (block
);
1791 if (static_block
!= NULL
)
1792 return lookup_symbol_aux_block (name
, static_block
, domain
);
1797 /* Private data to be used with lookup_symbol_global_iterator_cb. */
1799 struct global_sym_lookup_data
1801 /* The name of the symbol we are searching for. */
1804 /* The domain to use for our search. */
1807 /* The field where the callback should store the symbol if found.
1808 It should be initialized to NULL before the search is started. */
1809 struct symbol
*result
;
1812 /* A callback function for gdbarch_iterate_over_objfiles_in_search_order.
1813 It searches by name for a symbol in the GLOBAL_BLOCK of the given
1814 OBJFILE. The arguments for the search are passed via CB_DATA,
1815 which in reality is a pointer to struct global_sym_lookup_data. */
1818 lookup_symbol_global_iterator_cb (struct objfile
*objfile
,
1821 struct global_sym_lookup_data
*data
=
1822 (struct global_sym_lookup_data
*) cb_data
;
1824 gdb_assert (data
->result
== NULL
);
1826 data
->result
= lookup_symbol_aux_objfile (objfile
, GLOBAL_BLOCK
,
1827 data
->name
, data
->domain
);
1828 if (data
->result
== NULL
)
1829 data
->result
= lookup_symbol_aux_quick (objfile
, GLOBAL_BLOCK
,
1830 data
->name
, data
->domain
);
1832 /* If we found a match, tell the iterator to stop. Otherwise,
1834 return (data
->result
!= NULL
);
1837 /* Lookup a symbol in all files' global blocks (searching psymtabs if
1841 lookup_symbol_global (const char *name
,
1842 const struct block
*block
,
1843 const domain_enum domain
)
1845 struct symbol
*sym
= NULL
;
1846 struct objfile
*objfile
= NULL
;
1847 struct global_sym_lookup_data lookup_data
;
1849 /* Call library-specific lookup procedure. */
1850 objfile
= lookup_objfile_from_block (block
);
1851 if (objfile
!= NULL
)
1852 sym
= solib_global_lookup (objfile
, name
, domain
);
1856 memset (&lookup_data
, 0, sizeof (lookup_data
));
1857 lookup_data
.name
= name
;
1858 lookup_data
.domain
= domain
;
1859 gdbarch_iterate_over_objfiles_in_search_order
1860 (objfile
!= NULL
? get_objfile_arch (objfile
) : target_gdbarch (),
1861 lookup_symbol_global_iterator_cb
, &lookup_data
, objfile
);
1863 return lookup_data
.result
;
1867 symbol_matches_domain (enum language symbol_language
,
1868 domain_enum symbol_domain
,
1871 /* For C++ "struct foo { ... }" also defines a typedef for "foo".
1872 A Java class declaration also defines a typedef for the class.
1873 Similarly, any Ada type declaration implicitly defines a typedef. */
1874 if (symbol_language
== language_cplus
1875 || symbol_language
== language_d
1876 || symbol_language
== language_java
1877 || symbol_language
== language_ada
)
1879 if ((domain
== VAR_DOMAIN
|| domain
== STRUCT_DOMAIN
)
1880 && symbol_domain
== STRUCT_DOMAIN
)
1883 /* For all other languages, strict match is required. */
1884 return (symbol_domain
== domain
);
1887 /* Look up a type named NAME in the struct_domain. The type returned
1888 must not be opaque -- i.e., must have at least one field
1892 lookup_transparent_type (const char *name
)
1894 return current_language
->la_lookup_transparent_type (name
);
1897 /* A helper for basic_lookup_transparent_type that interfaces with the
1898 "quick" symbol table functions. */
1900 static struct type
*
1901 basic_lookup_transparent_type_quick (struct objfile
*objfile
, int kind
,
1904 struct symtab
*symtab
;
1905 struct blockvector
*bv
;
1906 struct block
*block
;
1911 symtab
= objfile
->sf
->qf
->lookup_symbol (objfile
, kind
, name
, STRUCT_DOMAIN
);
1915 bv
= BLOCKVECTOR (symtab
);
1916 block
= BLOCKVECTOR_BLOCK (bv
, kind
);
1917 sym
= lookup_block_symbol (block
, name
, STRUCT_DOMAIN
);
1919 error_in_psymtab_expansion (kind
, name
, symtab
);
1921 if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym
)))
1922 return SYMBOL_TYPE (sym
);
1927 /* The standard implementation of lookup_transparent_type. This code
1928 was modeled on lookup_symbol -- the parts not relevant to looking
1929 up types were just left out. In particular it's assumed here that
1930 types are available in struct_domain and only at file-static or
1934 basic_lookup_transparent_type (const char *name
)
1937 struct symtab
*s
= NULL
;
1938 struct blockvector
*bv
;
1939 struct objfile
*objfile
;
1940 struct block
*block
;
1943 /* Now search all the global symbols. Do the symtab's first, then
1944 check the psymtab's. If a psymtab indicates the existence
1945 of the desired name as a global, then do psymtab-to-symtab
1946 conversion on the fly and return the found symbol. */
1948 ALL_OBJFILES (objfile
)
1950 ALL_OBJFILE_PRIMARY_SYMTABS (objfile
, s
)
1952 bv
= BLOCKVECTOR (s
);
1953 block
= BLOCKVECTOR_BLOCK (bv
, GLOBAL_BLOCK
);
1954 sym
= lookup_block_symbol (block
, name
, STRUCT_DOMAIN
);
1955 if (sym
&& !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym
)))
1957 return SYMBOL_TYPE (sym
);
1962 ALL_OBJFILES (objfile
)
1964 t
= basic_lookup_transparent_type_quick (objfile
, GLOBAL_BLOCK
, name
);
1969 /* Now search the static file-level symbols.
1970 Not strictly correct, but more useful than an error.
1971 Do the symtab's first, then
1972 check the psymtab's. If a psymtab indicates the existence
1973 of the desired name as a file-level static, then do psymtab-to-symtab
1974 conversion on the fly and return the found symbol. */
1976 ALL_OBJFILES (objfile
)
1978 ALL_OBJFILE_PRIMARY_SYMTABS (objfile
, s
)
1980 bv
= BLOCKVECTOR (s
);
1981 block
= BLOCKVECTOR_BLOCK (bv
, STATIC_BLOCK
);
1982 sym
= lookup_block_symbol (block
, name
, STRUCT_DOMAIN
);
1983 if (sym
&& !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym
)))
1985 return SYMBOL_TYPE (sym
);
1990 ALL_OBJFILES (objfile
)
1992 t
= basic_lookup_transparent_type_quick (objfile
, STATIC_BLOCK
, name
);
1997 return (struct type
*) 0;
2000 /* Search BLOCK for symbol NAME in DOMAIN.
2002 Note that if NAME is the demangled form of a C++ symbol, we will fail
2003 to find a match during the binary search of the non-encoded names, but
2004 for now we don't worry about the slight inefficiency of looking for
2005 a match we'll never find, since it will go pretty quick. Once the
2006 binary search terminates, we drop through and do a straight linear
2007 search on the symbols. Each symbol which is marked as being a ObjC/C++
2008 symbol (language_cplus or language_objc set) has both the encoded and
2009 non-encoded names tested for a match. */
2012 lookup_block_symbol (const struct block
*block
, const char *name
,
2013 const domain_enum domain
)
2015 struct block_iterator iter
;
2018 if (!BLOCK_FUNCTION (block
))
2020 for (sym
= block_iter_name_first (block
, name
, &iter
);
2022 sym
= block_iter_name_next (name
, &iter
))
2024 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym
),
2025 SYMBOL_DOMAIN (sym
), domain
))
2032 /* Note that parameter symbols do not always show up last in the
2033 list; this loop makes sure to take anything else other than
2034 parameter symbols first; it only uses parameter symbols as a
2035 last resort. Note that this only takes up extra computation
2038 struct symbol
*sym_found
= NULL
;
2040 for (sym
= block_iter_name_first (block
, name
, &iter
);
2042 sym
= block_iter_name_next (name
, &iter
))
2044 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym
),
2045 SYMBOL_DOMAIN (sym
), domain
))
2048 if (!SYMBOL_IS_ARGUMENT (sym
))
2054 return (sym_found
); /* Will be NULL if not found. */
2058 /* Iterate over the symbols named NAME, matching DOMAIN, in BLOCK.
2060 For each symbol that matches, CALLBACK is called. The symbol and
2061 DATA are passed to the callback.
2063 If CALLBACK returns zero, the iteration ends. Otherwise, the
2064 search continues. */
2067 iterate_over_symbols (const struct block
*block
, const char *name
,
2068 const domain_enum domain
,
2069 symbol_found_callback_ftype
*callback
,
2072 struct block_iterator iter
;
2075 for (sym
= block_iter_name_first (block
, name
, &iter
);
2077 sym
= block_iter_name_next (name
, &iter
))
2079 if (symbol_matches_domain (SYMBOL_LANGUAGE (sym
),
2080 SYMBOL_DOMAIN (sym
), domain
))
2082 if (!callback (sym
, data
))
2088 /* Find the symtab associated with PC and SECTION. Look through the
2089 psymtabs and read in another symtab if necessary. */
2092 find_pc_sect_symtab (CORE_ADDR pc
, struct obj_section
*section
)
2095 struct blockvector
*bv
;
2096 struct symtab
*s
= NULL
;
2097 struct symtab
*best_s
= NULL
;
2098 struct objfile
*objfile
;
2099 CORE_ADDR distance
= 0;
2100 struct minimal_symbol
*msymbol
;
2102 /* If we know that this is not a text address, return failure. This is
2103 necessary because we loop based on the block's high and low code
2104 addresses, which do not include the data ranges, and because
2105 we call find_pc_sect_psymtab which has a similar restriction based
2106 on the partial_symtab's texthigh and textlow. */
2107 msymbol
= lookup_minimal_symbol_by_pc_section (pc
, section
).minsym
;
2109 && (MSYMBOL_TYPE (msymbol
) == mst_data
2110 || MSYMBOL_TYPE (msymbol
) == mst_bss
2111 || MSYMBOL_TYPE (msymbol
) == mst_abs
2112 || MSYMBOL_TYPE (msymbol
) == mst_file_data
2113 || MSYMBOL_TYPE (msymbol
) == mst_file_bss
))
2116 /* Search all symtabs for the one whose file contains our address, and which
2117 is the smallest of all the ones containing the address. This is designed
2118 to deal with a case like symtab a is at 0x1000-0x2000 and 0x3000-0x4000
2119 and symtab b is at 0x2000-0x3000. So the GLOBAL_BLOCK for a is from
2120 0x1000-0x4000, but for address 0x2345 we want to return symtab b.
2122 This happens for native ecoff format, where code from included files
2123 gets its own symtab. The symtab for the included file should have
2124 been read in already via the dependency mechanism.
2125 It might be swifter to create several symtabs with the same name
2126 like xcoff does (I'm not sure).
2128 It also happens for objfiles that have their functions reordered.
2129 For these, the symtab we are looking for is not necessarily read in. */
2131 ALL_PRIMARY_SYMTABS (objfile
, s
)
2133 bv
= BLOCKVECTOR (s
);
2134 b
= BLOCKVECTOR_BLOCK (bv
, GLOBAL_BLOCK
);
2136 if (BLOCK_START (b
) <= pc
2137 && BLOCK_END (b
) > pc
2139 || BLOCK_END (b
) - BLOCK_START (b
) < distance
))
2141 /* For an objfile that has its functions reordered,
2142 find_pc_psymtab will find the proper partial symbol table
2143 and we simply return its corresponding symtab. */
2144 /* In order to better support objfiles that contain both
2145 stabs and coff debugging info, we continue on if a psymtab
2147 if ((objfile
->flags
& OBJF_REORDERED
) && objfile
->sf
)
2149 struct symtab
*result
;
2152 = objfile
->sf
->qf
->find_pc_sect_symtab (objfile
,
2161 struct block_iterator iter
;
2162 struct symbol
*sym
= NULL
;
2164 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
2166 fixup_symbol_section (sym
, objfile
);
2167 if (matching_obj_sections (SYMBOL_OBJ_SECTION (objfile
, sym
),
2172 continue; /* No symbol in this symtab matches
2175 distance
= BLOCK_END (b
) - BLOCK_START (b
);
2183 /* Not found in symtabs, search the "quick" symtabs (e.g. psymtabs). */
2185 ALL_OBJFILES (objfile
)
2187 struct symtab
*result
;
2191 result
= objfile
->sf
->qf
->find_pc_sect_symtab (objfile
,
2202 /* Find the symtab associated with PC. Look through the psymtabs and read
2203 in another symtab if necessary. Backward compatibility, no section. */
2206 find_pc_symtab (CORE_ADDR pc
)
2208 return find_pc_sect_symtab (pc
, find_pc_mapped_section (pc
));
2212 /* Find the source file and line number for a given PC value and SECTION.
2213 Return a structure containing a symtab pointer, a line number,
2214 and a pc range for the entire source line.
2215 The value's .pc field is NOT the specified pc.
2216 NOTCURRENT nonzero means, if specified pc is on a line boundary,
2217 use the line that ends there. Otherwise, in that case, the line
2218 that begins there is used. */
2220 /* The big complication here is that a line may start in one file, and end just
2221 before the start of another file. This usually occurs when you #include
2222 code in the middle of a subroutine. To properly find the end of a line's PC
2223 range, we must search all symtabs associated with this compilation unit, and
2224 find the one whose first PC is closer than that of the next line in this
2227 /* If it's worth the effort, we could be using a binary search. */
2229 struct symtab_and_line
2230 find_pc_sect_line (CORE_ADDR pc
, struct obj_section
*section
, int notcurrent
)
2233 struct linetable
*l
;
2236 struct linetable_entry
*item
;
2237 struct symtab_and_line val
;
2238 struct blockvector
*bv
;
2239 struct bound_minimal_symbol msymbol
;
2240 struct minimal_symbol
*mfunsym
;
2241 struct objfile
*objfile
;
2243 /* Info on best line seen so far, and where it starts, and its file. */
2245 struct linetable_entry
*best
= NULL
;
2246 CORE_ADDR best_end
= 0;
2247 struct symtab
*best_symtab
= 0;
2249 /* Store here the first line number
2250 of a file which contains the line at the smallest pc after PC.
2251 If we don't find a line whose range contains PC,
2252 we will use a line one less than this,
2253 with a range from the start of that file to the first line's pc. */
2254 struct linetable_entry
*alt
= NULL
;
2256 /* Info on best line seen in this file. */
2258 struct linetable_entry
*prev
;
2260 /* If this pc is not from the current frame,
2261 it is the address of the end of a call instruction.
2262 Quite likely that is the start of the following statement.
2263 But what we want is the statement containing the instruction.
2264 Fudge the pc to make sure we get that. */
2266 init_sal (&val
); /* initialize to zeroes */
2268 val
.pspace
= current_program_space
;
2270 /* It's tempting to assume that, if we can't find debugging info for
2271 any function enclosing PC, that we shouldn't search for line
2272 number info, either. However, GAS can emit line number info for
2273 assembly files --- very helpful when debugging hand-written
2274 assembly code. In such a case, we'd have no debug info for the
2275 function, but we would have line info. */
2280 /* elz: added this because this function returned the wrong
2281 information if the pc belongs to a stub (import/export)
2282 to call a shlib function. This stub would be anywhere between
2283 two functions in the target, and the line info was erroneously
2284 taken to be the one of the line before the pc. */
2286 /* RT: Further explanation:
2288 * We have stubs (trampolines) inserted between procedures.
2290 * Example: "shr1" exists in a shared library, and a "shr1" stub also
2291 * exists in the main image.
2293 * In the minimal symbol table, we have a bunch of symbols
2294 * sorted by start address. The stubs are marked as "trampoline",
2295 * the others appear as text. E.g.:
2297 * Minimal symbol table for main image
2298 * main: code for main (text symbol)
2299 * shr1: stub (trampoline symbol)
2300 * foo: code for foo (text symbol)
2302 * Minimal symbol table for "shr1" image:
2304 * shr1: code for shr1 (text symbol)
2307 * So the code below is trying to detect if we are in the stub
2308 * ("shr1" stub), and if so, find the real code ("shr1" trampoline),
2309 * and if found, do the symbolization from the real-code address
2310 * rather than the stub address.
2312 * Assumptions being made about the minimal symbol table:
2313 * 1. lookup_minimal_symbol_by_pc() will return a trampoline only
2314 * if we're really in the trampoline.s If we're beyond it (say
2315 * we're in "foo" in the above example), it'll have a closer
2316 * symbol (the "foo" text symbol for example) and will not
2317 * return the trampoline.
2318 * 2. lookup_minimal_symbol_text() will find a real text symbol
2319 * corresponding to the trampoline, and whose address will
2320 * be different than the trampoline address. I put in a sanity
2321 * check for the address being the same, to avoid an
2322 * infinite recursion.
2324 msymbol
= lookup_minimal_symbol_by_pc (pc
);
2325 if (msymbol
.minsym
!= NULL
)
2326 if (MSYMBOL_TYPE (msymbol
.minsym
) == mst_solib_trampoline
)
2329 = lookup_minimal_symbol_text (SYMBOL_LINKAGE_NAME (msymbol
.minsym
),
2331 if (mfunsym
== NULL
)
2332 /* I eliminated this warning since it is coming out
2333 * in the following situation:
2334 * gdb shmain // test program with shared libraries
2335 * (gdb) break shr1 // function in shared lib
2336 * Warning: In stub for ...
2337 * In the above situation, the shared lib is not loaded yet,
2338 * so of course we can't find the real func/line info,
2339 * but the "break" still works, and the warning is annoying.
2340 * So I commented out the warning. RT */
2341 /* warning ("In stub for %s; unable to find real function/line info",
2342 SYMBOL_LINKAGE_NAME (msymbol)); */
2345 else if (SYMBOL_VALUE_ADDRESS (mfunsym
)
2346 == SYMBOL_VALUE_ADDRESS (msymbol
.minsym
))
2347 /* Avoid infinite recursion */
2348 /* See above comment about why warning is commented out. */
2349 /* warning ("In stub for %s; unable to find real function/line info",
2350 SYMBOL_LINKAGE_NAME (msymbol)); */
2354 return find_pc_line (SYMBOL_VALUE_ADDRESS (mfunsym
), 0);
2358 s
= find_pc_sect_symtab (pc
, section
);
2361 /* If no symbol information, return previous pc. */
2368 bv
= BLOCKVECTOR (s
);
2369 objfile
= s
->objfile
;
2371 /* Look at all the symtabs that share this blockvector.
2372 They all have the same apriori range, that we found was right;
2373 but they have different line tables. */
2375 ALL_OBJFILE_SYMTABS (objfile
, s
)
2377 if (BLOCKVECTOR (s
) != bv
)
2380 /* Find the best line in this symtab. */
2387 /* I think len can be zero if the symtab lacks line numbers
2388 (e.g. gcc -g1). (Either that or the LINETABLE is NULL;
2389 I'm not sure which, and maybe it depends on the symbol
2395 item
= l
->item
; /* Get first line info. */
2397 /* Is this file's first line closer than the first lines of other files?
2398 If so, record this file, and its first line, as best alternate. */
2399 if (item
->pc
> pc
&& (!alt
|| item
->pc
< alt
->pc
))
2402 for (i
= 0; i
< len
; i
++, item
++)
2404 /* Leave prev pointing to the linetable entry for the last line
2405 that started at or before PC. */
2412 /* At this point, prev points at the line whose start addr is <= pc, and
2413 item points at the next line. If we ran off the end of the linetable
2414 (pc >= start of the last line), then prev == item. If pc < start of
2415 the first line, prev will not be set. */
2417 /* Is this file's best line closer than the best in the other files?
2418 If so, record this file, and its best line, as best so far. Don't
2419 save prev if it represents the end of a function (i.e. line number
2420 0) instead of a real line. */
2422 if (prev
&& prev
->line
&& (!best
|| prev
->pc
> best
->pc
))
2427 /* Discard BEST_END if it's before the PC of the current BEST. */
2428 if (best_end
<= best
->pc
)
2432 /* If another line (denoted by ITEM) is in the linetable and its
2433 PC is after BEST's PC, but before the current BEST_END, then
2434 use ITEM's PC as the new best_end. */
2435 if (best
&& i
< len
&& item
->pc
> best
->pc
2436 && (best_end
== 0 || best_end
> item
->pc
))
2437 best_end
= item
->pc
;
2442 /* If we didn't find any line number info, just return zeros.
2443 We used to return alt->line - 1 here, but that could be
2444 anywhere; if we don't have line number info for this PC,
2445 don't make some up. */
2448 else if (best
->line
== 0)
2450 /* If our best fit is in a range of PC's for which no line
2451 number info is available (line number is zero) then we didn't
2452 find any valid line information. */
2457 val
.symtab
= best_symtab
;
2458 val
.line
= best
->line
;
2460 if (best_end
&& (!alt
|| best_end
< alt
->pc
))
2465 val
.end
= BLOCK_END (BLOCKVECTOR_BLOCK (bv
, GLOBAL_BLOCK
));
2467 val
.section
= section
;
2471 /* Backward compatibility (no section). */
2473 struct symtab_and_line
2474 find_pc_line (CORE_ADDR pc
, int notcurrent
)
2476 struct obj_section
*section
;
2478 section
= find_pc_overlay (pc
);
2479 if (pc_in_unmapped_range (pc
, section
))
2480 pc
= overlay_mapped_address (pc
, section
);
2481 return find_pc_sect_line (pc
, section
, notcurrent
);
2484 /* Find line number LINE in any symtab whose name is the same as
2487 If found, return the symtab that contains the linetable in which it was
2488 found, set *INDEX to the index in the linetable of the best entry
2489 found, and set *EXACT_MATCH nonzero if the value returned is an
2492 If not found, return NULL. */
2495 find_line_symtab (struct symtab
*symtab
, int line
,
2496 int *index
, int *exact_match
)
2498 int exact
= 0; /* Initialized here to avoid a compiler warning. */
2500 /* BEST_INDEX and BEST_LINETABLE identify the smallest linenumber > LINE
2504 struct linetable
*best_linetable
;
2505 struct symtab
*best_symtab
;
2507 /* First try looking it up in the given symtab. */
2508 best_linetable
= LINETABLE (symtab
);
2509 best_symtab
= symtab
;
2510 best_index
= find_line_common (best_linetable
, line
, &exact
, 0);
2511 if (best_index
< 0 || !exact
)
2513 /* Didn't find an exact match. So we better keep looking for
2514 another symtab with the same name. In the case of xcoff,
2515 multiple csects for one source file (produced by IBM's FORTRAN
2516 compiler) produce multiple symtabs (this is unavoidable
2517 assuming csects can be at arbitrary places in memory and that
2518 the GLOBAL_BLOCK of a symtab has a begin and end address). */
2520 /* BEST is the smallest linenumber > LINE so far seen,
2521 or 0 if none has been seen so far.
2522 BEST_INDEX and BEST_LINETABLE identify the item for it. */
2525 struct objfile
*objfile
;
2528 if (best_index
>= 0)
2529 best
= best_linetable
->item
[best_index
].line
;
2533 ALL_OBJFILES (objfile
)
2536 objfile
->sf
->qf
->expand_symtabs_with_fullname (objfile
,
2537 symtab_to_fullname (symtab
));
2540 ALL_SYMTABS (objfile
, s
)
2542 struct linetable
*l
;
2545 if (FILENAME_CMP (symtab
->filename
, s
->filename
) != 0)
2547 if (FILENAME_CMP (symtab_to_fullname (symtab
),
2548 symtab_to_fullname (s
)) != 0)
2551 ind
= find_line_common (l
, line
, &exact
, 0);
2561 if (best
== 0 || l
->item
[ind
].line
< best
)
2563 best
= l
->item
[ind
].line
;
2576 *index
= best_index
;
2578 *exact_match
= exact
;
2583 /* Given SYMTAB, returns all the PCs function in the symtab that
2584 exactly match LINE. Returns NULL if there are no exact matches,
2585 but updates BEST_ITEM in this case. */
2588 find_pcs_for_symtab_line (struct symtab
*symtab
, int line
,
2589 struct linetable_entry
**best_item
)
2592 VEC (CORE_ADDR
) *result
= NULL
;
2594 /* First, collect all the PCs that are at this line. */
2600 idx
= find_line_common (LINETABLE (symtab
), line
, &was_exact
, start
);
2606 struct linetable_entry
*item
= &LINETABLE (symtab
)->item
[idx
];
2608 if (*best_item
== NULL
|| item
->line
< (*best_item
)->line
)
2614 VEC_safe_push (CORE_ADDR
, result
, LINETABLE (symtab
)->item
[idx
].pc
);
2622 /* Set the PC value for a given source file and line number and return true.
2623 Returns zero for invalid line number (and sets the PC to 0).
2624 The source file is specified with a struct symtab. */
2627 find_line_pc (struct symtab
*symtab
, int line
, CORE_ADDR
*pc
)
2629 struct linetable
*l
;
2636 symtab
= find_line_symtab (symtab
, line
, &ind
, NULL
);
2639 l
= LINETABLE (symtab
);
2640 *pc
= l
->item
[ind
].pc
;
2647 /* Find the range of pc values in a line.
2648 Store the starting pc of the line into *STARTPTR
2649 and the ending pc (start of next line) into *ENDPTR.
2650 Returns 1 to indicate success.
2651 Returns 0 if could not find the specified line. */
2654 find_line_pc_range (struct symtab_and_line sal
, CORE_ADDR
*startptr
,
2657 CORE_ADDR startaddr
;
2658 struct symtab_and_line found_sal
;
2661 if (startaddr
== 0 && !find_line_pc (sal
.symtab
, sal
.line
, &startaddr
))
2664 /* This whole function is based on address. For example, if line 10 has
2665 two parts, one from 0x100 to 0x200 and one from 0x300 to 0x400, then
2666 "info line *0x123" should say the line goes from 0x100 to 0x200
2667 and "info line *0x355" should say the line goes from 0x300 to 0x400.
2668 This also insures that we never give a range like "starts at 0x134
2669 and ends at 0x12c". */
2671 found_sal
= find_pc_sect_line (startaddr
, sal
.section
, 0);
2672 if (found_sal
.line
!= sal
.line
)
2674 /* The specified line (sal) has zero bytes. */
2675 *startptr
= found_sal
.pc
;
2676 *endptr
= found_sal
.pc
;
2680 *startptr
= found_sal
.pc
;
2681 *endptr
= found_sal
.end
;
2686 /* Given a line table and a line number, return the index into the line
2687 table for the pc of the nearest line whose number is >= the specified one.
2688 Return -1 if none is found. The value is >= 0 if it is an index.
2689 START is the index at which to start searching the line table.
2691 Set *EXACT_MATCH nonzero if the value returned is an exact match. */
2694 find_line_common (struct linetable
*l
, int lineno
,
2695 int *exact_match
, int start
)
2700 /* BEST is the smallest linenumber > LINENO so far seen,
2701 or 0 if none has been seen so far.
2702 BEST_INDEX identifies the item for it. */
2704 int best_index
= -1;
2715 for (i
= start
; i
< len
; i
++)
2717 struct linetable_entry
*item
= &(l
->item
[i
]);
2719 if (item
->line
== lineno
)
2721 /* Return the first (lowest address) entry which matches. */
2726 if (item
->line
> lineno
&& (best
== 0 || item
->line
< best
))
2733 /* If we got here, we didn't get an exact match. */
2738 find_pc_line_pc_range (CORE_ADDR pc
, CORE_ADDR
*startptr
, CORE_ADDR
*endptr
)
2740 struct symtab_and_line sal
;
2742 sal
= find_pc_line (pc
, 0);
2745 return sal
.symtab
!= 0;
2748 /* Given a function start address FUNC_ADDR and SYMTAB, find the first
2749 address for that function that has an entry in SYMTAB's line info
2750 table. If such an entry cannot be found, return FUNC_ADDR
2754 skip_prologue_using_lineinfo (CORE_ADDR func_addr
, struct symtab
*symtab
)
2756 CORE_ADDR func_start
, func_end
;
2757 struct linetable
*l
;
2760 /* Give up if this symbol has no lineinfo table. */
2761 l
= LINETABLE (symtab
);
2765 /* Get the range for the function's PC values, or give up if we
2766 cannot, for some reason. */
2767 if (!find_pc_partial_function (func_addr
, NULL
, &func_start
, &func_end
))
2770 /* Linetable entries are ordered by PC values, see the commentary in
2771 symtab.h where `struct linetable' is defined. Thus, the first
2772 entry whose PC is in the range [FUNC_START..FUNC_END[ is the
2773 address we are looking for. */
2774 for (i
= 0; i
< l
->nitems
; i
++)
2776 struct linetable_entry
*item
= &(l
->item
[i
]);
2778 /* Don't use line numbers of zero, they mark special entries in
2779 the table. See the commentary on symtab.h before the
2780 definition of struct linetable. */
2781 if (item
->line
> 0 && func_start
<= item
->pc
&& item
->pc
< func_end
)
2788 /* Given a function symbol SYM, find the symtab and line for the start
2790 If the argument FUNFIRSTLINE is nonzero, we want the first line
2791 of real code inside the function. */
2793 struct symtab_and_line
2794 find_function_start_sal (struct symbol
*sym
, int funfirstline
)
2796 struct symtab_and_line sal
;
2798 fixup_symbol_section (sym
, NULL
);
2799 sal
= find_pc_sect_line (BLOCK_START (SYMBOL_BLOCK_VALUE (sym
)),
2800 SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (sym
), sym
), 0);
2802 /* We always should have a line for the function start address.
2803 If we don't, something is odd. Create a plain SAL refering
2804 just the PC and hope that skip_prologue_sal (if requested)
2805 can find a line number for after the prologue. */
2806 if (sal
.pc
< BLOCK_START (SYMBOL_BLOCK_VALUE (sym
)))
2809 sal
.pspace
= current_program_space
;
2810 sal
.pc
= BLOCK_START (SYMBOL_BLOCK_VALUE (sym
));
2811 sal
.section
= SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (sym
), sym
);
2815 skip_prologue_sal (&sal
);
2820 /* Adjust SAL to the first instruction past the function prologue.
2821 If the PC was explicitly specified, the SAL is not changed.
2822 If the line number was explicitly specified, at most the SAL's PC
2823 is updated. If SAL is already past the prologue, then do nothing. */
2826 skip_prologue_sal (struct symtab_and_line
*sal
)
2829 struct symtab_and_line start_sal
;
2830 struct cleanup
*old_chain
;
2831 CORE_ADDR pc
, saved_pc
;
2832 struct obj_section
*section
;
2834 struct objfile
*objfile
;
2835 struct gdbarch
*gdbarch
;
2836 struct block
*b
, *function_block
;
2837 int force_skip
, skip
;
2839 /* Do not change the SAL if PC was specified explicitly. */
2840 if (sal
->explicit_pc
)
2843 old_chain
= save_current_space_and_thread ();
2844 switch_to_program_space_and_thread (sal
->pspace
);
2846 sym
= find_pc_sect_function (sal
->pc
, sal
->section
);
2849 fixup_symbol_section (sym
, NULL
);
2851 pc
= BLOCK_START (SYMBOL_BLOCK_VALUE (sym
));
2852 section
= SYMBOL_OBJ_SECTION (SYMBOL_OBJFILE (sym
), sym
);
2853 name
= SYMBOL_LINKAGE_NAME (sym
);
2854 objfile
= SYMBOL_SYMTAB (sym
)->objfile
;
2858 struct bound_minimal_symbol msymbol
2859 = lookup_minimal_symbol_by_pc_section (sal
->pc
, sal
->section
);
2861 if (msymbol
.minsym
== NULL
)
2863 do_cleanups (old_chain
);
2867 objfile
= msymbol
.objfile
;
2868 pc
= SYMBOL_VALUE_ADDRESS (msymbol
.minsym
);
2869 section
= SYMBOL_OBJ_SECTION (objfile
, msymbol
.minsym
);
2870 name
= SYMBOL_LINKAGE_NAME (msymbol
.minsym
);
2873 gdbarch
= get_objfile_arch (objfile
);
2875 /* Process the prologue in two passes. In the first pass try to skip the
2876 prologue (SKIP is true) and verify there is a real need for it (indicated
2877 by FORCE_SKIP). If no such reason was found run a second pass where the
2878 prologue is not skipped (SKIP is false). */
2883 /* Be conservative - allow direct PC (without skipping prologue) only if we
2884 have proven the CU (Compilation Unit) supports it. sal->SYMTAB does not
2885 have to be set by the caller so we use SYM instead. */
2886 if (sym
&& SYMBOL_SYMTAB (sym
)->locations_valid
)
2894 /* If the function is in an unmapped overlay, use its unmapped LMA address,
2895 so that gdbarch_skip_prologue has something unique to work on. */
2896 if (section_is_overlay (section
) && !section_is_mapped (section
))
2897 pc
= overlay_unmapped_address (pc
, section
);
2899 /* Skip "first line" of function (which is actually its prologue). */
2900 pc
+= gdbarch_deprecated_function_start_offset (gdbarch
);
2902 pc
= gdbarch_skip_prologue (gdbarch
, pc
);
2904 /* For overlays, map pc back into its mapped VMA range. */
2905 pc
= overlay_mapped_address (pc
, section
);
2907 /* Calculate line number. */
2908 start_sal
= find_pc_sect_line (pc
, section
, 0);
2910 /* Check if gdbarch_skip_prologue left us in mid-line, and the next
2911 line is still part of the same function. */
2912 if (skip
&& start_sal
.pc
!= pc
2913 && (sym
? (BLOCK_START (SYMBOL_BLOCK_VALUE (sym
)) <= start_sal
.end
2914 && start_sal
.end
< BLOCK_END (SYMBOL_BLOCK_VALUE (sym
)))
2915 : (lookup_minimal_symbol_by_pc_section (start_sal
.end
, section
).minsym
2916 == lookup_minimal_symbol_by_pc_section (pc
, section
).minsym
)))
2918 /* First pc of next line */
2920 /* Recalculate the line number (might not be N+1). */
2921 start_sal
= find_pc_sect_line (pc
, section
, 0);
2924 /* On targets with executable formats that don't have a concept of
2925 constructors (ELF with .init has, PE doesn't), gcc emits a call
2926 to `__main' in `main' between the prologue and before user
2928 if (gdbarch_skip_main_prologue_p (gdbarch
)
2929 && name
&& strcmp_iw (name
, "main") == 0)
2931 pc
= gdbarch_skip_main_prologue (gdbarch
, pc
);
2932 /* Recalculate the line number (might not be N+1). */
2933 start_sal
= find_pc_sect_line (pc
, section
, 0);
2937 while (!force_skip
&& skip
--);
2939 /* If we still don't have a valid source line, try to find the first
2940 PC in the lineinfo table that belongs to the same function. This
2941 happens with COFF debug info, which does not seem to have an
2942 entry in lineinfo table for the code after the prologue which has
2943 no direct relation to source. For example, this was found to be
2944 the case with the DJGPP target using "gcc -gcoff" when the
2945 compiler inserted code after the prologue to make sure the stack
2947 if (!force_skip
&& sym
&& start_sal
.symtab
== NULL
)
2949 pc
= skip_prologue_using_lineinfo (pc
, SYMBOL_SYMTAB (sym
));
2950 /* Recalculate the line number. */
2951 start_sal
= find_pc_sect_line (pc
, section
, 0);
2954 do_cleanups (old_chain
);
2956 /* If we're already past the prologue, leave SAL unchanged. Otherwise
2957 forward SAL to the end of the prologue. */
2962 sal
->section
= section
;
2964 /* Unless the explicit_line flag was set, update the SAL line
2965 and symtab to correspond to the modified PC location. */
2966 if (sal
->explicit_line
)
2969 sal
->symtab
= start_sal
.symtab
;
2970 sal
->line
= start_sal
.line
;
2971 sal
->end
= start_sal
.end
;
2973 /* Check if we are now inside an inlined function. If we can,
2974 use the call site of the function instead. */
2975 b
= block_for_pc_sect (sal
->pc
, sal
->section
);
2976 function_block
= NULL
;
2979 if (BLOCK_FUNCTION (b
) != NULL
&& block_inlined_p (b
))
2981 else if (BLOCK_FUNCTION (b
) != NULL
)
2983 b
= BLOCK_SUPERBLOCK (b
);
2985 if (function_block
!= NULL
2986 && SYMBOL_LINE (BLOCK_FUNCTION (function_block
)) != 0)
2988 sal
->line
= SYMBOL_LINE (BLOCK_FUNCTION (function_block
));
2989 sal
->symtab
= SYMBOL_SYMTAB (BLOCK_FUNCTION (function_block
));
2993 /* If P is of the form "operator[ \t]+..." where `...' is
2994 some legitimate operator text, return a pointer to the
2995 beginning of the substring of the operator text.
2996 Otherwise, return "". */
2999 operator_chars (char *p
, char **end
)
3002 if (strncmp (p
, "operator", 8))
3006 /* Don't get faked out by `operator' being part of a longer
3008 if (isalpha (*p
) || *p
== '_' || *p
== '$' || *p
== '\0')
3011 /* Allow some whitespace between `operator' and the operator symbol. */
3012 while (*p
== ' ' || *p
== '\t')
3015 /* Recognize 'operator TYPENAME'. */
3017 if (isalpha (*p
) || *p
== '_' || *p
== '$')
3021 while (isalnum (*q
) || *q
== '_' || *q
== '$')
3030 case '\\': /* regexp quoting */
3033 if (p
[2] == '=') /* 'operator\*=' */
3035 else /* 'operator\*' */
3039 else if (p
[1] == '[')
3042 error (_("mismatched quoting on brackets, "
3043 "try 'operator\\[\\]'"));
3044 else if (p
[2] == '\\' && p
[3] == ']')
3046 *end
= p
+ 4; /* 'operator\[\]' */
3050 error (_("nothing is allowed between '[' and ']'"));
3054 /* Gratuitous qoute: skip it and move on. */
3076 if (p
[0] == '-' && p
[1] == '>')
3078 /* Struct pointer member operator 'operator->'. */
3081 *end
= p
+ 3; /* 'operator->*' */
3084 else if (p
[2] == '\\')
3086 *end
= p
+ 4; /* Hopefully 'operator->\*' */
3091 *end
= p
+ 2; /* 'operator->' */
3095 if (p
[1] == '=' || p
[1] == p
[0])
3106 error (_("`operator ()' must be specified "
3107 "without whitespace in `()'"));
3112 error (_("`operator ?:' must be specified "
3113 "without whitespace in `?:'"));
3118 error (_("`operator []' must be specified "
3119 "without whitespace in `[]'"));
3123 error (_("`operator %s' not supported"), p
);
3132 /* Cache to watch for file names already seen by filename_seen. */
3134 struct filename_seen_cache
3136 /* Table of files seen so far. */
3138 /* Initial size of the table. It automagically grows from here. */
3139 #define INITIAL_FILENAME_SEEN_CACHE_SIZE 100
3142 /* filename_seen_cache constructor. */
3144 static struct filename_seen_cache
*
3145 create_filename_seen_cache (void)
3147 struct filename_seen_cache
*cache
;
3149 cache
= XNEW (struct filename_seen_cache
);
3150 cache
->tab
= htab_create_alloc (INITIAL_FILENAME_SEEN_CACHE_SIZE
,
3151 filename_hash
, filename_eq
,
3152 NULL
, xcalloc
, xfree
);
3157 /* Empty the cache, but do not delete it. */
3160 clear_filename_seen_cache (struct filename_seen_cache
*cache
)
3162 htab_empty (cache
->tab
);
3165 /* filename_seen_cache destructor.
3166 This takes a void * argument as it is generally used as a cleanup. */
3169 delete_filename_seen_cache (void *ptr
)
3171 struct filename_seen_cache
*cache
= ptr
;
3173 htab_delete (cache
->tab
);
3177 /* If FILE is not already in the table of files in CACHE, return zero;
3178 otherwise return non-zero. Optionally add FILE to the table if ADD
3181 NOTE: We don't manage space for FILE, we assume FILE lives as long
3182 as the caller needs. */
3185 filename_seen (struct filename_seen_cache
*cache
, const char *file
, int add
)
3189 /* Is FILE in tab? */
3190 slot
= htab_find_slot (cache
->tab
, file
, add
? INSERT
: NO_INSERT
);
3194 /* No; maybe add it to tab. */
3196 *slot
= (char *) file
;
3201 /* Data structure to maintain printing state for output_source_filename. */
3203 struct output_source_filename_data
3205 /* Cache of what we've seen so far. */
3206 struct filename_seen_cache
*filename_seen_cache
;
3208 /* Flag of whether we're printing the first one. */
3212 /* Slave routine for sources_info. Force line breaks at ,'s.
3213 NAME is the name to print.
3214 DATA contains the state for printing and watching for duplicates. */
3217 output_source_filename (const char *name
,
3218 struct output_source_filename_data
*data
)
3220 /* Since a single source file can result in several partial symbol
3221 tables, we need to avoid printing it more than once. Note: if
3222 some of the psymtabs are read in and some are not, it gets
3223 printed both under "Source files for which symbols have been
3224 read" and "Source files for which symbols will be read in on
3225 demand". I consider this a reasonable way to deal with the
3226 situation. I'm not sure whether this can also happen for
3227 symtabs; it doesn't hurt to check. */
3229 /* Was NAME already seen? */
3230 if (filename_seen (data
->filename_seen_cache
, name
, 1))
3232 /* Yes; don't print it again. */
3236 /* No; print it and reset *FIRST. */
3238 printf_filtered (", ");
3242 fputs_filtered (name
, gdb_stdout
);
3245 /* A callback for map_partial_symbol_filenames. */
3248 output_partial_symbol_filename (const char *filename
, const char *fullname
,
3251 output_source_filename (fullname
? fullname
: filename
, data
);
3255 sources_info (char *ignore
, int from_tty
)
3258 struct objfile
*objfile
;
3259 struct output_source_filename_data data
;
3260 struct cleanup
*cleanups
;
3262 if (!have_full_symbols () && !have_partial_symbols ())
3264 error (_("No symbol table is loaded. Use the \"file\" command."));
3267 data
.filename_seen_cache
= create_filename_seen_cache ();
3268 cleanups
= make_cleanup (delete_filename_seen_cache
,
3269 data
.filename_seen_cache
);
3271 printf_filtered ("Source files for which symbols have been read in:\n\n");
3274 ALL_SYMTABS (objfile
, s
)
3276 const char *fullname
= symtab_to_fullname (s
);
3278 output_source_filename (fullname
, &data
);
3280 printf_filtered ("\n\n");
3282 printf_filtered ("Source files for which symbols "
3283 "will be read in on demand:\n\n");
3285 clear_filename_seen_cache (data
.filename_seen_cache
);
3287 map_partial_symbol_filenames (output_partial_symbol_filename
, &data
,
3288 1 /*need_fullname*/);
3289 printf_filtered ("\n");
3291 do_cleanups (cleanups
);
3294 /* Compare FILE against all the NFILES entries of FILES. If BASENAMES is
3295 non-zero compare only lbasename of FILES. */
3298 file_matches (const char *file
, char *files
[], int nfiles
, int basenames
)
3302 if (file
!= NULL
&& nfiles
!= 0)
3304 for (i
= 0; i
< nfiles
; i
++)
3306 if (compare_filenames_for_search (file
, (basenames
3307 ? lbasename (files
[i
])
3312 else if (nfiles
== 0)
3317 /* Free any memory associated with a search. */
3320 free_search_symbols (struct symbol_search
*symbols
)
3322 struct symbol_search
*p
;
3323 struct symbol_search
*next
;
3325 for (p
= symbols
; p
!= NULL
; p
= next
)
3333 do_free_search_symbols_cleanup (void *symbolsp
)
3335 struct symbol_search
*symbols
= *(struct symbol_search
**) symbolsp
;
3337 free_search_symbols (symbols
);
3341 make_cleanup_free_search_symbols (struct symbol_search
**symbolsp
)
3343 return make_cleanup (do_free_search_symbols_cleanup
, symbolsp
);
3346 /* Helper function for sort_search_symbols_remove_dups and qsort. Can only
3347 sort symbols, not minimal symbols. */
3350 compare_search_syms (const void *sa
, const void *sb
)
3352 struct symbol_search
*sym_a
= *(struct symbol_search
**) sa
;
3353 struct symbol_search
*sym_b
= *(struct symbol_search
**) sb
;
3356 c
= FILENAME_CMP (sym_a
->symtab
->filename
, sym_b
->symtab
->filename
);
3360 if (sym_a
->block
!= sym_b
->block
)
3361 return sym_a
->block
- sym_b
->block
;
3363 return strcmp (SYMBOL_PRINT_NAME (sym_a
->symbol
),
3364 SYMBOL_PRINT_NAME (sym_b
->symbol
));
3367 /* Sort the NFOUND symbols in list FOUND and remove duplicates.
3368 The duplicates are freed, and the new list is returned in
3369 *NEW_HEAD, *NEW_TAIL. */
3372 sort_search_symbols_remove_dups (struct symbol_search
*found
, int nfound
,
3373 struct symbol_search
**new_head
,
3374 struct symbol_search
**new_tail
)
3376 struct symbol_search
**symbols
, *symp
, *old_next
;
3379 gdb_assert (found
!= NULL
&& nfound
> 0);
3381 /* Build an array out of the list so we can easily sort them. */
3382 symbols
= (struct symbol_search
**) xmalloc (sizeof (struct symbol_search
*)
3385 for (i
= 0; i
< nfound
; i
++)
3387 gdb_assert (symp
!= NULL
);
3388 gdb_assert (symp
->block
>= 0 && symp
->block
<= 1);
3392 gdb_assert (symp
== NULL
);
3394 qsort (symbols
, nfound
, sizeof (struct symbol_search
*),
3395 compare_search_syms
);
3397 /* Collapse out the dups. */
3398 for (i
= 1, j
= 1; i
< nfound
; ++i
)
3400 if (compare_search_syms (&symbols
[j
- 1], &symbols
[i
]) != 0)
3401 symbols
[j
++] = symbols
[i
];
3406 symbols
[j
- 1]->next
= NULL
;
3408 /* Rebuild the linked list. */
3409 for (i
= 0; i
< nunique
- 1; i
++)
3410 symbols
[i
]->next
= symbols
[i
+ 1];
3411 symbols
[nunique
- 1]->next
= NULL
;
3413 *new_head
= symbols
[0];
3414 *new_tail
= symbols
[nunique
- 1];
3418 /* An object of this type is passed as the user_data to the
3419 expand_symtabs_matching method. */
3420 struct search_symbols_data
3425 /* It is true if PREG contains valid data, false otherwise. */
3426 unsigned preg_p
: 1;
3430 /* A callback for expand_symtabs_matching. */
3433 search_symbols_file_matches (const char *filename
, void *user_data
,
3436 struct search_symbols_data
*data
= user_data
;
3438 return file_matches (filename
, data
->files
, data
->nfiles
, basenames
);
3441 /* A callback for expand_symtabs_matching. */
3444 search_symbols_name_matches (const char *symname
, void *user_data
)
3446 struct search_symbols_data
*data
= user_data
;
3448 return !data
->preg_p
|| regexec (&data
->preg
, symname
, 0, NULL
, 0) == 0;
3451 /* Search the symbol table for matches to the regular expression REGEXP,
3452 returning the results in *MATCHES.
3454 Only symbols of KIND are searched:
3455 VARIABLES_DOMAIN - search all symbols, excluding functions, type names,
3456 and constants (enums)
3457 FUNCTIONS_DOMAIN - search all functions
3458 TYPES_DOMAIN - search all type names
3459 ALL_DOMAIN - an internal error for this function
3461 free_search_symbols should be called when *MATCHES is no longer needed.
3463 Within each file the results are sorted locally; each symtab's global and
3464 static blocks are separately alphabetized.
3465 Duplicate entries are removed. */
3468 search_symbols (char *regexp
, enum search_domain kind
,
3469 int nfiles
, char *files
[],
3470 struct symbol_search
**matches
)
3473 struct blockvector
*bv
;
3476 struct block_iterator iter
;
3478 struct objfile
*objfile
;
3479 struct minimal_symbol
*msymbol
;
3481 static const enum minimal_symbol_type types
[]
3482 = {mst_data
, mst_text
, mst_abs
};
3483 static const enum minimal_symbol_type types2
[]
3484 = {mst_bss
, mst_file_text
, mst_abs
};
3485 static const enum minimal_symbol_type types3
[]
3486 = {mst_file_data
, mst_solib_trampoline
, mst_abs
};
3487 static const enum minimal_symbol_type types4
[]
3488 = {mst_file_bss
, mst_text_gnu_ifunc
, mst_abs
};
3489 enum minimal_symbol_type ourtype
;
3490 enum minimal_symbol_type ourtype2
;
3491 enum minimal_symbol_type ourtype3
;
3492 enum minimal_symbol_type ourtype4
;
3493 struct symbol_search
*found
;
3494 struct symbol_search
*tail
;
3495 struct search_symbols_data datum
;
3498 /* OLD_CHAIN .. RETVAL_CHAIN is always freed, RETVAL_CHAIN .. current
3499 CLEANUP_CHAIN is freed only in the case of an error. */
3500 struct cleanup
*old_chain
= make_cleanup (null_cleanup
, NULL
);
3501 struct cleanup
*retval_chain
;
3503 gdb_assert (kind
<= TYPES_DOMAIN
);
3505 ourtype
= types
[kind
];
3506 ourtype2
= types2
[kind
];
3507 ourtype3
= types3
[kind
];
3508 ourtype4
= types4
[kind
];
3515 /* Make sure spacing is right for C++ operators.
3516 This is just a courtesy to make the matching less sensitive
3517 to how many spaces the user leaves between 'operator'
3518 and <TYPENAME> or <OPERATOR>. */
3520 char *opname
= operator_chars (regexp
, &opend
);
3525 int fix
= -1; /* -1 means ok; otherwise number of
3528 if (isalpha (*opname
) || *opname
== '_' || *opname
== '$')
3530 /* There should 1 space between 'operator' and 'TYPENAME'. */
3531 if (opname
[-1] != ' ' || opname
[-2] == ' ')
3536 /* There should 0 spaces between 'operator' and 'OPERATOR'. */
3537 if (opname
[-1] == ' ')
3540 /* If wrong number of spaces, fix it. */
3543 char *tmp
= (char *) alloca (8 + fix
+ strlen (opname
) + 1);
3545 sprintf (tmp
, "operator%.*s%s", fix
, " ", opname
);
3550 errcode
= regcomp (&datum
.preg
, regexp
,
3551 REG_NOSUB
| (case_sensitivity
== case_sensitive_off
3555 char *err
= get_regcomp_error (errcode
, &datum
.preg
);
3557 make_cleanup (xfree
, err
);
3558 error (_("Invalid regexp (%s): %s"), err
, regexp
);
3561 make_regfree_cleanup (&datum
.preg
);
3564 /* Search through the partial symtabs *first* for all symbols
3565 matching the regexp. That way we don't have to reproduce all of
3566 the machinery below. */
3568 datum
.nfiles
= nfiles
;
3569 datum
.files
= files
;
3570 ALL_OBJFILES (objfile
)
3573 objfile
->sf
->qf
->expand_symtabs_matching (objfile
,
3576 : search_symbols_file_matches
),
3577 search_symbols_name_matches
,
3582 /* Here, we search through the minimal symbol tables for functions
3583 and variables that match, and force their symbols to be read.
3584 This is in particular necessary for demangled variable names,
3585 which are no longer put into the partial symbol tables.
3586 The symbol will then be found during the scan of symtabs below.
3588 For functions, find_pc_symtab should succeed if we have debug info
3589 for the function, for variables we have to call
3590 lookup_symbol_in_objfile_from_linkage_name to determine if the variable
3592 If the lookup fails, set found_misc so that we will rescan to print
3593 any matching symbols without debug info.
3594 We only search the objfile the msymbol came from, we no longer search
3595 all objfiles. In large programs (1000s of shared libs) searching all
3596 objfiles is not worth the pain. */
3598 if (nfiles
== 0 && (kind
== VARIABLES_DOMAIN
|| kind
== FUNCTIONS_DOMAIN
))
3600 ALL_MSYMBOLS (objfile
, msymbol
)
3604 if (msymbol
->created_by_gdb
)
3607 if (MSYMBOL_TYPE (msymbol
) == ourtype
3608 || MSYMBOL_TYPE (msymbol
) == ourtype2
3609 || MSYMBOL_TYPE (msymbol
) == ourtype3
3610 || MSYMBOL_TYPE (msymbol
) == ourtype4
)
3613 || regexec (&datum
.preg
, SYMBOL_NATURAL_NAME (msymbol
), 0,
3616 /* Note: An important side-effect of these lookup functions
3617 is to expand the symbol table if msymbol is found, for the
3618 benefit of the next loop on ALL_PRIMARY_SYMTABS. */
3619 if (kind
== FUNCTIONS_DOMAIN
3620 ? find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol
)) == NULL
3621 : (lookup_symbol_in_objfile_from_linkage_name
3622 (objfile
, SYMBOL_LINKAGE_NAME (msymbol
), VAR_DOMAIN
)
3633 retval_chain
= make_cleanup_free_search_symbols (&found
);
3635 ALL_PRIMARY_SYMTABS (objfile
, s
)
3637 bv
= BLOCKVECTOR (s
);
3638 for (i
= GLOBAL_BLOCK
; i
<= STATIC_BLOCK
; i
++)
3640 b
= BLOCKVECTOR_BLOCK (bv
, i
);
3641 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
3643 struct symtab
*real_symtab
= SYMBOL_SYMTAB (sym
);
3647 /* Check first sole REAL_SYMTAB->FILENAME. It does not need to be
3648 a substring of symtab_to_fullname as it may contain "./" etc. */
3649 if ((file_matches (real_symtab
->filename
, files
, nfiles
, 0)
3650 || ((basenames_may_differ
3651 || file_matches (lbasename (real_symtab
->filename
),
3653 && file_matches (symtab_to_fullname (real_symtab
),
3656 || regexec (&datum
.preg
, SYMBOL_NATURAL_NAME (sym
), 0,
3658 && ((kind
== VARIABLES_DOMAIN
3659 && SYMBOL_CLASS (sym
) != LOC_TYPEDEF
3660 && SYMBOL_CLASS (sym
) != LOC_UNRESOLVED
3661 && SYMBOL_CLASS (sym
) != LOC_BLOCK
3662 /* LOC_CONST can be used for more than just enums,
3663 e.g., c++ static const members.
3664 We only want to skip enums here. */
3665 && !(SYMBOL_CLASS (sym
) == LOC_CONST
3666 && TYPE_CODE (SYMBOL_TYPE (sym
))
3668 || (kind
== FUNCTIONS_DOMAIN
3669 && SYMBOL_CLASS (sym
) == LOC_BLOCK
)
3670 || (kind
== TYPES_DOMAIN
3671 && SYMBOL_CLASS (sym
) == LOC_TYPEDEF
))))
3674 struct symbol_search
*psr
= (struct symbol_search
*)
3675 xmalloc (sizeof (struct symbol_search
));
3677 psr
->symtab
= real_symtab
;
3679 memset (&psr
->msymbol
, 0, sizeof (psr
->msymbol
));
3694 sort_search_symbols_remove_dups (found
, nfound
, &found
, &tail
);
3695 /* Note: nfound is no longer useful beyond this point. */
3698 /* If there are no eyes, avoid all contact. I mean, if there are
3699 no debug symbols, then print directly from the msymbol_vector. */
3701 if (found_misc
|| (nfiles
== 0 && kind
!= FUNCTIONS_DOMAIN
))
3703 ALL_MSYMBOLS (objfile
, msymbol
)
3707 if (msymbol
->created_by_gdb
)
3710 if (MSYMBOL_TYPE (msymbol
) == ourtype
3711 || MSYMBOL_TYPE (msymbol
) == ourtype2
3712 || MSYMBOL_TYPE (msymbol
) == ourtype3
3713 || MSYMBOL_TYPE (msymbol
) == ourtype4
)
3716 || regexec (&datum
.preg
, SYMBOL_NATURAL_NAME (msymbol
), 0,
3719 /* For functions we can do a quick check of whether the
3720 symbol might be found via find_pc_symtab. */
3721 if (kind
!= FUNCTIONS_DOMAIN
3722 || find_pc_symtab (SYMBOL_VALUE_ADDRESS (msymbol
)) == NULL
)
3724 if (lookup_symbol_in_objfile_from_linkage_name
3725 (objfile
, SYMBOL_LINKAGE_NAME (msymbol
), VAR_DOMAIN
)
3729 struct symbol_search
*psr
= (struct symbol_search
*)
3730 xmalloc (sizeof (struct symbol_search
));
3732 psr
->msymbol
.minsym
= msymbol
;
3733 psr
->msymbol
.objfile
= objfile
;
3749 discard_cleanups (retval_chain
);
3750 do_cleanups (old_chain
);
3754 /* Helper function for symtab_symbol_info, this function uses
3755 the data returned from search_symbols() to print information
3756 regarding the match to gdb_stdout. */
3759 print_symbol_info (enum search_domain kind
,
3760 struct symtab
*s
, struct symbol
*sym
,
3761 int block
, const char *last
)
3763 const char *s_filename
= symtab_to_filename_for_display (s
);
3765 if (last
== NULL
|| filename_cmp (last
, s_filename
) != 0)
3767 fputs_filtered ("\nFile ", gdb_stdout
);
3768 fputs_filtered (s_filename
, gdb_stdout
);
3769 fputs_filtered (":\n", gdb_stdout
);
3772 if (kind
!= TYPES_DOMAIN
&& block
== STATIC_BLOCK
)
3773 printf_filtered ("static ");
3775 /* Typedef that is not a C++ class. */
3776 if (kind
== TYPES_DOMAIN
3777 && SYMBOL_DOMAIN (sym
) != STRUCT_DOMAIN
)
3778 typedef_print (SYMBOL_TYPE (sym
), sym
, gdb_stdout
);
3779 /* variable, func, or typedef-that-is-c++-class. */
3780 else if (kind
< TYPES_DOMAIN
3781 || (kind
== TYPES_DOMAIN
3782 && SYMBOL_DOMAIN (sym
) == STRUCT_DOMAIN
))
3784 type_print (SYMBOL_TYPE (sym
),
3785 (SYMBOL_CLASS (sym
) == LOC_TYPEDEF
3786 ? "" : SYMBOL_PRINT_NAME (sym
)),
3789 printf_filtered (";\n");
3793 /* This help function for symtab_symbol_info() prints information
3794 for non-debugging symbols to gdb_stdout. */
3797 print_msymbol_info (struct bound_minimal_symbol msymbol
)
3799 struct gdbarch
*gdbarch
= get_objfile_arch (msymbol
.objfile
);
3802 if (gdbarch_addr_bit (gdbarch
) <= 32)
3803 tmp
= hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol
.minsym
)
3804 & (CORE_ADDR
) 0xffffffff,
3807 tmp
= hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol
.minsym
),
3809 printf_filtered ("%s %s\n",
3810 tmp
, SYMBOL_PRINT_NAME (msymbol
.minsym
));
3813 /* This is the guts of the commands "info functions", "info types", and
3814 "info variables". It calls search_symbols to find all matches and then
3815 print_[m]symbol_info to print out some useful information about the
3819 symtab_symbol_info (char *regexp
, enum search_domain kind
, int from_tty
)
3821 static const char * const classnames
[] =
3822 {"variable", "function", "type"};
3823 struct symbol_search
*symbols
;
3824 struct symbol_search
*p
;
3825 struct cleanup
*old_chain
;
3826 const char *last_filename
= NULL
;
3829 gdb_assert (kind
<= TYPES_DOMAIN
);
3831 /* Must make sure that if we're interrupted, symbols gets freed. */
3832 search_symbols (regexp
, kind
, 0, (char **) NULL
, &symbols
);
3833 old_chain
= make_cleanup_free_search_symbols (&symbols
);
3836 printf_filtered (_("All %ss matching regular expression \"%s\":\n"),
3837 classnames
[kind
], regexp
);
3839 printf_filtered (_("All defined %ss:\n"), classnames
[kind
]);
3841 for (p
= symbols
; p
!= NULL
; p
= p
->next
)
3845 if (p
->msymbol
.minsym
!= NULL
)
3849 printf_filtered (_("\nNon-debugging symbols:\n"));
3852 print_msymbol_info (p
->msymbol
);
3856 print_symbol_info (kind
,
3861 last_filename
= symtab_to_filename_for_display (p
->symtab
);
3865 do_cleanups (old_chain
);
3869 variables_info (char *regexp
, int from_tty
)
3871 symtab_symbol_info (regexp
, VARIABLES_DOMAIN
, from_tty
);
3875 functions_info (char *regexp
, int from_tty
)
3877 symtab_symbol_info (regexp
, FUNCTIONS_DOMAIN
, from_tty
);
3882 types_info (char *regexp
, int from_tty
)
3884 symtab_symbol_info (regexp
, TYPES_DOMAIN
, from_tty
);
3887 /* Breakpoint all functions matching regular expression. */
3890 rbreak_command_wrapper (char *regexp
, int from_tty
)
3892 rbreak_command (regexp
, from_tty
);
3895 /* A cleanup function that calls end_rbreak_breakpoints. */
3898 do_end_rbreak_breakpoints (void *ignore
)
3900 end_rbreak_breakpoints ();
3904 rbreak_command (char *regexp
, int from_tty
)
3906 struct symbol_search
*ss
;
3907 struct symbol_search
*p
;
3908 struct cleanup
*old_chain
;
3909 char *string
= NULL
;
3911 char **files
= NULL
, *file_name
;
3916 char *colon
= strchr (regexp
, ':');
3918 if (colon
&& *(colon
+ 1) != ':')
3922 colon_index
= colon
- regexp
;
3923 file_name
= alloca (colon_index
+ 1);
3924 memcpy (file_name
, regexp
, colon_index
);
3925 file_name
[colon_index
--] = 0;
3926 while (isspace (file_name
[colon_index
]))
3927 file_name
[colon_index
--] = 0;
3930 regexp
= skip_spaces (colon
+ 1);
3934 search_symbols (regexp
, FUNCTIONS_DOMAIN
, nfiles
, files
, &ss
);
3935 old_chain
= make_cleanup_free_search_symbols (&ss
);
3936 make_cleanup (free_current_contents
, &string
);
3938 start_rbreak_breakpoints ();
3939 make_cleanup (do_end_rbreak_breakpoints
, NULL
);
3940 for (p
= ss
; p
!= NULL
; p
= p
->next
)
3942 if (p
->msymbol
.minsym
== NULL
)
3944 const char *fullname
= symtab_to_fullname (p
->symtab
);
3946 int newlen
= (strlen (fullname
)
3947 + strlen (SYMBOL_LINKAGE_NAME (p
->symbol
))
3952 string
= xrealloc (string
, newlen
);
3955 strcpy (string
, fullname
);
3956 strcat (string
, ":'");
3957 strcat (string
, SYMBOL_LINKAGE_NAME (p
->symbol
));
3958 strcat (string
, "'");
3959 break_command (string
, from_tty
);
3960 print_symbol_info (FUNCTIONS_DOMAIN
,
3964 symtab_to_filename_for_display (p
->symtab
));
3968 int newlen
= (strlen (SYMBOL_LINKAGE_NAME (p
->msymbol
.minsym
)) + 3);
3972 string
= xrealloc (string
, newlen
);
3975 strcpy (string
, "'");
3976 strcat (string
, SYMBOL_LINKAGE_NAME (p
->msymbol
.minsym
));
3977 strcat (string
, "'");
3979 break_command (string
, from_tty
);
3980 printf_filtered ("<function, no debug info> %s;\n",
3981 SYMBOL_PRINT_NAME (p
->msymbol
.minsym
));
3985 do_cleanups (old_chain
);
3989 /* Evaluate if NAME matches SYM_TEXT and SYM_TEXT_LEN.
3991 Either sym_text[sym_text_len] != '(' and then we search for any
3992 symbol starting with SYM_TEXT text.
3994 Otherwise sym_text[sym_text_len] == '(' and then we require symbol name to
3995 be terminated at that point. Partial symbol tables do not have parameters
3999 compare_symbol_name (const char *name
, const char *sym_text
, int sym_text_len
)
4001 int (*ncmp
) (const char *, const char *, size_t);
4003 ncmp
= (case_sensitivity
== case_sensitive_on
? strncmp
: strncasecmp
);
4005 if (ncmp (name
, sym_text
, sym_text_len
) != 0)
4008 if (sym_text
[sym_text_len
] == '(')
4010 /* User searches for `name(someth...'. Require NAME to be terminated.
4011 Normally psymtabs and gdbindex have no parameter types so '\0' will be
4012 present but accept even parameters presence. In this case this
4013 function is in fact strcmp_iw but whitespace skipping is not supported
4014 for tab completion. */
4016 if (name
[sym_text_len
] != '\0' && name
[sym_text_len
] != '(')
4023 /* Free any memory associated with a completion list. */
4026 free_completion_list (VEC (char_ptr
) **list_ptr
)
4031 for (i
= 0; VEC_iterate (char_ptr
, *list_ptr
, i
, p
); ++i
)
4033 VEC_free (char_ptr
, *list_ptr
);
4036 /* Callback for make_cleanup. */
4039 do_free_completion_list (void *list
)
4041 free_completion_list (list
);
4044 /* Helper routine for make_symbol_completion_list. */
4046 static VEC (char_ptr
) *return_val
;
4048 #define COMPLETION_LIST_ADD_SYMBOL(symbol, sym_text, len, text, word) \
4049 completion_list_add_name \
4050 (SYMBOL_NATURAL_NAME (symbol), (sym_text), (len), (text), (word))
4052 /* Test to see if the symbol specified by SYMNAME (which is already
4053 demangled for C++ symbols) matches SYM_TEXT in the first SYM_TEXT_LEN
4054 characters. If so, add it to the current completion list. */
4057 completion_list_add_name (const char *symname
,
4058 const char *sym_text
, int sym_text_len
,
4059 const char *text
, const char *word
)
4061 /* Clip symbols that cannot match. */
4062 if (!compare_symbol_name (symname
, sym_text
, sym_text_len
))
4065 /* We have a match for a completion, so add SYMNAME to the current list
4066 of matches. Note that the name is moved to freshly malloc'd space. */
4071 if (word
== sym_text
)
4073 new = xmalloc (strlen (symname
) + 5);
4074 strcpy (new, symname
);
4076 else if (word
> sym_text
)
4078 /* Return some portion of symname. */
4079 new = xmalloc (strlen (symname
) + 5);
4080 strcpy (new, symname
+ (word
- sym_text
));
4084 /* Return some of SYM_TEXT plus symname. */
4085 new = xmalloc (strlen (symname
) + (sym_text
- word
) + 5);
4086 strncpy (new, word
, sym_text
- word
);
4087 new[sym_text
- word
] = '\0';
4088 strcat (new, symname
);
4091 VEC_safe_push (char_ptr
, return_val
, new);
4095 /* ObjC: In case we are completing on a selector, look as the msymbol
4096 again and feed all the selectors into the mill. */
4099 completion_list_objc_symbol (struct minimal_symbol
*msymbol
,
4100 const char *sym_text
, int sym_text_len
,
4101 const char *text
, const char *word
)
4103 static char *tmp
= NULL
;
4104 static unsigned int tmplen
= 0;
4106 const char *method
, *category
, *selector
;
4109 method
= SYMBOL_NATURAL_NAME (msymbol
);
4111 /* Is it a method? */
4112 if ((method
[0] != '-') && (method
[0] != '+'))
4115 if (sym_text
[0] == '[')
4116 /* Complete on shortened method method. */
4117 completion_list_add_name (method
+ 1, sym_text
, sym_text_len
, text
, word
);
4119 while ((strlen (method
) + 1) >= tmplen
)
4125 tmp
= xrealloc (tmp
, tmplen
);
4127 selector
= strchr (method
, ' ');
4128 if (selector
!= NULL
)
4131 category
= strchr (method
, '(');
4133 if ((category
!= NULL
) && (selector
!= NULL
))
4135 memcpy (tmp
, method
, (category
- method
));
4136 tmp
[category
- method
] = ' ';
4137 memcpy (tmp
+ (category
- method
) + 1, selector
, strlen (selector
) + 1);
4138 completion_list_add_name (tmp
, sym_text
, sym_text_len
, text
, word
);
4139 if (sym_text
[0] == '[')
4140 completion_list_add_name (tmp
+ 1, sym_text
, sym_text_len
, text
, word
);
4143 if (selector
!= NULL
)
4145 /* Complete on selector only. */
4146 strcpy (tmp
, selector
);
4147 tmp2
= strchr (tmp
, ']');
4151 completion_list_add_name (tmp
, sym_text
, sym_text_len
, text
, word
);
4155 /* Break the non-quoted text based on the characters which are in
4156 symbols. FIXME: This should probably be language-specific. */
4159 language_search_unquoted_string (const char *text
, const char *p
)
4161 for (; p
> text
; --p
)
4163 if (isalnum (p
[-1]) || p
[-1] == '_' || p
[-1] == '\0')
4167 if ((current_language
->la_language
== language_objc
))
4169 if (p
[-1] == ':') /* Might be part of a method name. */
4171 else if (p
[-1] == '[' && (p
[-2] == '-' || p
[-2] == '+'))
4172 p
-= 2; /* Beginning of a method name. */
4173 else if (p
[-1] == ' ' || p
[-1] == '(' || p
[-1] == ')')
4174 { /* Might be part of a method name. */
4177 /* Seeing a ' ' or a '(' is not conclusive evidence
4178 that we are in the middle of a method name. However,
4179 finding "-[" or "+[" should be pretty un-ambiguous.
4180 Unfortunately we have to find it now to decide. */
4183 if (isalnum (t
[-1]) || t
[-1] == '_' ||
4184 t
[-1] == ' ' || t
[-1] == ':' ||
4185 t
[-1] == '(' || t
[-1] == ')')
4190 if (t
[-1] == '[' && (t
[-2] == '-' || t
[-2] == '+'))
4191 p
= t
- 2; /* Method name detected. */
4192 /* Else we leave with p unchanged. */
4202 completion_list_add_fields (struct symbol
*sym
, const char *sym_text
,
4203 int sym_text_len
, const char *text
,
4206 if (SYMBOL_CLASS (sym
) == LOC_TYPEDEF
)
4208 struct type
*t
= SYMBOL_TYPE (sym
);
4209 enum type_code c
= TYPE_CODE (t
);
4212 if (c
== TYPE_CODE_UNION
|| c
== TYPE_CODE_STRUCT
)
4213 for (j
= TYPE_N_BASECLASSES (t
); j
< TYPE_NFIELDS (t
); j
++)
4214 if (TYPE_FIELD_NAME (t
, j
))
4215 completion_list_add_name (TYPE_FIELD_NAME (t
, j
),
4216 sym_text
, sym_text_len
, text
, word
);
4220 /* Type of the user_data argument passed to add_macro_name or
4221 expand_partial_symbol_name. The contents are simply whatever is
4222 needed by completion_list_add_name. */
4223 struct add_name_data
4225 const char *sym_text
;
4231 /* A callback used with macro_for_each and macro_for_each_in_scope.
4232 This adds a macro's name to the current completion list. */
4235 add_macro_name (const char *name
, const struct macro_definition
*ignore
,
4236 struct macro_source_file
*ignore2
, int ignore3
,
4239 struct add_name_data
*datum
= (struct add_name_data
*) user_data
;
4241 completion_list_add_name ((char *) name
,
4242 datum
->sym_text
, datum
->sym_text_len
,
4243 datum
->text
, datum
->word
);
4246 /* A callback for expand_partial_symbol_names. */
4249 expand_partial_symbol_name (const char *name
, void *user_data
)
4251 struct add_name_data
*datum
= (struct add_name_data
*) user_data
;
4253 return compare_symbol_name (name
, datum
->sym_text
, datum
->sym_text_len
);
4257 default_make_symbol_completion_list_break_on (const char *text
,
4259 const char *break_on
,
4260 enum type_code code
)
4262 /* Problem: All of the symbols have to be copied because readline
4263 frees them. I'm not going to worry about this; hopefully there
4264 won't be that many. */
4268 struct minimal_symbol
*msymbol
;
4269 struct objfile
*objfile
;
4271 const struct block
*surrounding_static_block
, *surrounding_global_block
;
4272 struct block_iterator iter
;
4273 /* The symbol we are completing on. Points in same buffer as text. */
4274 const char *sym_text
;
4275 /* Length of sym_text. */
4277 struct add_name_data datum
;
4278 struct cleanup
*back_to
;
4280 /* Now look for the symbol we are supposed to complete on. */
4284 const char *quote_pos
= NULL
;
4286 /* First see if this is a quoted string. */
4288 for (p
= text
; *p
!= '\0'; ++p
)
4290 if (quote_found
!= '\0')
4292 if (*p
== quote_found
)
4293 /* Found close quote. */
4295 else if (*p
== '\\' && p
[1] == quote_found
)
4296 /* A backslash followed by the quote character
4297 doesn't end the string. */
4300 else if (*p
== '\'' || *p
== '"')
4306 if (quote_found
== '\'')
4307 /* A string within single quotes can be a symbol, so complete on it. */
4308 sym_text
= quote_pos
+ 1;
4309 else if (quote_found
== '"')
4310 /* A double-quoted string is never a symbol, nor does it make sense
4311 to complete it any other way. */
4317 /* It is not a quoted string. Break it based on the characters
4318 which are in symbols. */
4321 if (isalnum (p
[-1]) || p
[-1] == '_' || p
[-1] == '\0'
4322 || p
[-1] == ':' || strchr (break_on
, p
[-1]) != NULL
)
4331 sym_text_len
= strlen (sym_text
);
4333 /* Prepare SYM_TEXT_LEN for compare_symbol_name. */
4335 if (current_language
->la_language
== language_cplus
4336 || current_language
->la_language
== language_java
4337 || current_language
->la_language
== language_fortran
)
4339 /* These languages may have parameters entered by user but they are never
4340 present in the partial symbol tables. */
4342 const char *cs
= memchr (sym_text
, '(', sym_text_len
);
4345 sym_text_len
= cs
- sym_text
;
4347 gdb_assert (sym_text
[sym_text_len
] == '\0' || sym_text
[sym_text_len
] == '(');
4350 back_to
= make_cleanup (do_free_completion_list
, &return_val
);
4352 datum
.sym_text
= sym_text
;
4353 datum
.sym_text_len
= sym_text_len
;
4357 /* Look through the partial symtabs for all symbols which begin
4358 by matching SYM_TEXT. Expand all CUs that you find to the list.
4359 The real names will get added by COMPLETION_LIST_ADD_SYMBOL below. */
4360 expand_partial_symbol_names (expand_partial_symbol_name
, &datum
);
4362 /* At this point scan through the misc symbol vectors and add each
4363 symbol you find to the list. Eventually we want to ignore
4364 anything that isn't a text symbol (everything else will be
4365 handled by the psymtab code above). */
4367 if (code
== TYPE_CODE_UNDEF
)
4369 ALL_MSYMBOLS (objfile
, msymbol
)
4372 COMPLETION_LIST_ADD_SYMBOL (msymbol
, sym_text
, sym_text_len
, text
,
4375 completion_list_objc_symbol (msymbol
, sym_text
, sym_text_len
, text
,
4380 /* Search upwards from currently selected frame (so that we can
4381 complete on local vars). Also catch fields of types defined in
4382 this places which match our text string. Only complete on types
4383 visible from current context. */
4385 b
= get_selected_block (0);
4386 surrounding_static_block
= block_static_block (b
);
4387 surrounding_global_block
= block_global_block (b
);
4388 if (surrounding_static_block
!= NULL
)
4389 while (b
!= surrounding_static_block
)
4393 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
4395 if (code
== TYPE_CODE_UNDEF
)
4397 COMPLETION_LIST_ADD_SYMBOL (sym
, sym_text
, sym_text_len
, text
,
4399 completion_list_add_fields (sym
, sym_text
, sym_text_len
, text
,
4402 else if (SYMBOL_DOMAIN (sym
) == STRUCT_DOMAIN
4403 && TYPE_CODE (SYMBOL_TYPE (sym
)) == code
)
4404 COMPLETION_LIST_ADD_SYMBOL (sym
, sym_text
, sym_text_len
, text
,
4408 /* Stop when we encounter an enclosing function. Do not stop for
4409 non-inlined functions - the locals of the enclosing function
4410 are in scope for a nested function. */
4411 if (BLOCK_FUNCTION (b
) != NULL
&& block_inlined_p (b
))
4413 b
= BLOCK_SUPERBLOCK (b
);
4416 /* Add fields from the file's types; symbols will be added below. */
4418 if (code
== TYPE_CODE_UNDEF
)
4420 if (surrounding_static_block
!= NULL
)
4421 ALL_BLOCK_SYMBOLS (surrounding_static_block
, iter
, sym
)
4422 completion_list_add_fields (sym
, sym_text
, sym_text_len
, text
, word
);
4424 if (surrounding_global_block
!= NULL
)
4425 ALL_BLOCK_SYMBOLS (surrounding_global_block
, iter
, sym
)
4426 completion_list_add_fields (sym
, sym_text
, sym_text_len
, text
, word
);
4429 /* Go through the symtabs and check the externs and statics for
4430 symbols which match. */
4432 ALL_PRIMARY_SYMTABS (objfile
, s
)
4435 b
= BLOCKVECTOR_BLOCK (BLOCKVECTOR (s
), GLOBAL_BLOCK
);
4436 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
4438 if (code
== TYPE_CODE_UNDEF
4439 || (SYMBOL_DOMAIN (sym
) == STRUCT_DOMAIN
4440 && TYPE_CODE (SYMBOL_TYPE (sym
)) == code
))
4441 COMPLETION_LIST_ADD_SYMBOL (sym
, sym_text
, sym_text_len
, text
, word
);
4445 ALL_PRIMARY_SYMTABS (objfile
, s
)
4448 b
= BLOCKVECTOR_BLOCK (BLOCKVECTOR (s
), STATIC_BLOCK
);
4449 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
4451 if (code
== TYPE_CODE_UNDEF
4452 || (SYMBOL_DOMAIN (sym
) == STRUCT_DOMAIN
4453 && TYPE_CODE (SYMBOL_TYPE (sym
)) == code
))
4454 COMPLETION_LIST_ADD_SYMBOL (sym
, sym_text
, sym_text_len
, text
, word
);
4458 /* Skip macros if we are completing a struct tag -- arguable but
4459 usually what is expected. */
4460 if (current_language
->la_macro_expansion
== macro_expansion_c
4461 && code
== TYPE_CODE_UNDEF
)
4463 struct macro_scope
*scope
;
4465 /* Add any macros visible in the default scope. Note that this
4466 may yield the occasional wrong result, because an expression
4467 might be evaluated in a scope other than the default. For
4468 example, if the user types "break file:line if <TAB>", the
4469 resulting expression will be evaluated at "file:line" -- but
4470 at there does not seem to be a way to detect this at
4472 scope
= default_macro_scope ();
4475 macro_for_each_in_scope (scope
->file
, scope
->line
,
4476 add_macro_name
, &datum
);
4480 /* User-defined macros are always visible. */
4481 macro_for_each (macro_user_macros
, add_macro_name
, &datum
);
4484 discard_cleanups (back_to
);
4485 return (return_val
);
4489 default_make_symbol_completion_list (const char *text
, const char *word
,
4490 enum type_code code
)
4492 return default_make_symbol_completion_list_break_on (text
, word
, "", code
);
4495 /* Return a vector of all symbols (regardless of class) which begin by
4496 matching TEXT. If the answer is no symbols, then the return value
4500 make_symbol_completion_list (const char *text
, const char *word
)
4502 return current_language
->la_make_symbol_completion_list (text
, word
,
4506 /* Like make_symbol_completion_list, but only return STRUCT_DOMAIN
4507 symbols whose type code is CODE. */
4510 make_symbol_completion_type (const char *text
, const char *word
,
4511 enum type_code code
)
4513 gdb_assert (code
== TYPE_CODE_UNION
4514 || code
== TYPE_CODE_STRUCT
4515 || code
== TYPE_CODE_CLASS
4516 || code
== TYPE_CODE_ENUM
);
4517 return current_language
->la_make_symbol_completion_list (text
, word
, code
);
4520 /* Like make_symbol_completion_list, but suitable for use as a
4521 completion function. */
4524 make_symbol_completion_list_fn (struct cmd_list_element
*ignore
,
4525 const char *text
, const char *word
)
4527 return make_symbol_completion_list (text
, word
);
4530 /* Like make_symbol_completion_list, but returns a list of symbols
4531 defined in a source file FILE. */
4534 make_file_symbol_completion_list (const char *text
, const char *word
,
4535 const char *srcfile
)
4540 struct block_iterator iter
;
4541 /* The symbol we are completing on. Points in same buffer as text. */
4542 const char *sym_text
;
4543 /* Length of sym_text. */
4546 /* Now look for the symbol we are supposed to complete on.
4547 FIXME: This should be language-specific. */
4551 const char *quote_pos
= NULL
;
4553 /* First see if this is a quoted string. */
4555 for (p
= text
; *p
!= '\0'; ++p
)
4557 if (quote_found
!= '\0')
4559 if (*p
== quote_found
)
4560 /* Found close quote. */
4562 else if (*p
== '\\' && p
[1] == quote_found
)
4563 /* A backslash followed by the quote character
4564 doesn't end the string. */
4567 else if (*p
== '\'' || *p
== '"')
4573 if (quote_found
== '\'')
4574 /* A string within single quotes can be a symbol, so complete on it. */
4575 sym_text
= quote_pos
+ 1;
4576 else if (quote_found
== '"')
4577 /* A double-quoted string is never a symbol, nor does it make sense
4578 to complete it any other way. */
4584 /* Not a quoted string. */
4585 sym_text
= language_search_unquoted_string (text
, p
);
4589 sym_text_len
= strlen (sym_text
);
4593 /* Find the symtab for SRCFILE (this loads it if it was not yet read
4595 s
= lookup_symtab (srcfile
);
4598 /* Maybe they typed the file with leading directories, while the
4599 symbol tables record only its basename. */
4600 const char *tail
= lbasename (srcfile
);
4603 s
= lookup_symtab (tail
);
4606 /* If we have no symtab for that file, return an empty list. */
4608 return (return_val
);
4610 /* Go through this symtab and check the externs and statics for
4611 symbols which match. */
4613 b
= BLOCKVECTOR_BLOCK (BLOCKVECTOR (s
), GLOBAL_BLOCK
);
4614 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
4616 COMPLETION_LIST_ADD_SYMBOL (sym
, sym_text
, sym_text_len
, text
, word
);
4619 b
= BLOCKVECTOR_BLOCK (BLOCKVECTOR (s
), STATIC_BLOCK
);
4620 ALL_BLOCK_SYMBOLS (b
, iter
, sym
)
4622 COMPLETION_LIST_ADD_SYMBOL (sym
, sym_text
, sym_text_len
, text
, word
);
4625 return (return_val
);
4628 /* A helper function for make_source_files_completion_list. It adds
4629 another file name to a list of possible completions, growing the
4630 list as necessary. */
4633 add_filename_to_list (const char *fname
, const char *text
, const char *word
,
4634 VEC (char_ptr
) **list
)
4637 size_t fnlen
= strlen (fname
);
4641 /* Return exactly fname. */
4642 new = xmalloc (fnlen
+ 5);
4643 strcpy (new, fname
);
4645 else if (word
> text
)
4647 /* Return some portion of fname. */
4648 new = xmalloc (fnlen
+ 5);
4649 strcpy (new, fname
+ (word
- text
));
4653 /* Return some of TEXT plus fname. */
4654 new = xmalloc (fnlen
+ (text
- word
) + 5);
4655 strncpy (new, word
, text
- word
);
4656 new[text
- word
] = '\0';
4657 strcat (new, fname
);
4659 VEC_safe_push (char_ptr
, *list
, new);
4663 not_interesting_fname (const char *fname
)
4665 static const char *illegal_aliens
[] = {
4666 "_globals_", /* inserted by coff_symtab_read */
4671 for (i
= 0; illegal_aliens
[i
]; i
++)
4673 if (filename_cmp (fname
, illegal_aliens
[i
]) == 0)
4679 /* An object of this type is passed as the user_data argument to
4680 map_partial_symbol_filenames. */
4681 struct add_partial_filename_data
4683 struct filename_seen_cache
*filename_seen_cache
;
4687 VEC (char_ptr
) **list
;
4690 /* A callback for map_partial_symbol_filenames. */
4693 maybe_add_partial_symtab_filename (const char *filename
, const char *fullname
,
4696 struct add_partial_filename_data
*data
= user_data
;
4698 if (not_interesting_fname (filename
))
4700 if (!filename_seen (data
->filename_seen_cache
, filename
, 1)
4701 && filename_ncmp (filename
, data
->text
, data
->text_len
) == 0)
4703 /* This file matches for a completion; add it to the
4704 current list of matches. */
4705 add_filename_to_list (filename
, data
->text
, data
->word
, data
->list
);
4709 const char *base_name
= lbasename (filename
);
4711 if (base_name
!= filename
4712 && !filename_seen (data
->filename_seen_cache
, base_name
, 1)
4713 && filename_ncmp (base_name
, data
->text
, data
->text_len
) == 0)
4714 add_filename_to_list (base_name
, data
->text
, data
->word
, data
->list
);
4718 /* Return a vector of all source files whose names begin with matching
4719 TEXT. The file names are looked up in the symbol tables of this
4720 program. If the answer is no matchess, then the return value is
4724 make_source_files_completion_list (const char *text
, const char *word
)
4727 struct objfile
*objfile
;
4728 size_t text_len
= strlen (text
);
4729 VEC (char_ptr
) *list
= NULL
;
4730 const char *base_name
;
4731 struct add_partial_filename_data datum
;
4732 struct filename_seen_cache
*filename_seen_cache
;
4733 struct cleanup
*back_to
, *cache_cleanup
;
4735 if (!have_full_symbols () && !have_partial_symbols ())
4738 back_to
= make_cleanup (do_free_completion_list
, &list
);
4740 filename_seen_cache
= create_filename_seen_cache ();
4741 cache_cleanup
= make_cleanup (delete_filename_seen_cache
,
4742 filename_seen_cache
);
4744 ALL_SYMTABS (objfile
, s
)
4746 if (not_interesting_fname (s
->filename
))
4748 if (!filename_seen (filename_seen_cache
, s
->filename
, 1)
4749 && filename_ncmp (s
->filename
, text
, text_len
) == 0)
4751 /* This file matches for a completion; add it to the current
4753 add_filename_to_list (s
->filename
, text
, word
, &list
);
4757 /* NOTE: We allow the user to type a base name when the
4758 debug info records leading directories, but not the other
4759 way around. This is what subroutines of breakpoint
4760 command do when they parse file names. */
4761 base_name
= lbasename (s
->filename
);
4762 if (base_name
!= s
->filename
4763 && !filename_seen (filename_seen_cache
, base_name
, 1)
4764 && filename_ncmp (base_name
, text
, text_len
) == 0)
4765 add_filename_to_list (base_name
, text
, word
, &list
);
4769 datum
.filename_seen_cache
= filename_seen_cache
;
4772 datum
.text_len
= text_len
;
4774 map_partial_symbol_filenames (maybe_add_partial_symtab_filename
, &datum
,
4775 0 /*need_fullname*/);
4777 do_cleanups (cache_cleanup
);
4778 discard_cleanups (back_to
);
4783 /* Determine if PC is in the prologue of a function. The prologue is the area
4784 between the first instruction of a function, and the first executable line.
4785 Returns 1 if PC *might* be in prologue, 0 if definately *not* in prologue.
4787 If non-zero, func_start is where we think the prologue starts, possibly
4788 by previous examination of symbol table information. */
4791 in_prologue (struct gdbarch
*gdbarch
, CORE_ADDR pc
, CORE_ADDR func_start
)
4793 struct symtab_and_line sal
;
4794 CORE_ADDR func_addr
, func_end
;
4796 /* We have several sources of information we can consult to figure
4798 - Compilers usually emit line number info that marks the prologue
4799 as its own "source line". So the ending address of that "line"
4800 is the end of the prologue. If available, this is the most
4802 - The minimal symbols and partial symbols, which can usually tell
4803 us the starting and ending addresses of a function.
4804 - If we know the function's start address, we can call the
4805 architecture-defined gdbarch_skip_prologue function to analyze the
4806 instruction stream and guess where the prologue ends.
4807 - Our `func_start' argument; if non-zero, this is the caller's
4808 best guess as to the function's entry point. At the time of
4809 this writing, handle_inferior_event doesn't get this right, so
4810 it should be our last resort. */
4812 /* Consult the partial symbol table, to find which function
4814 if (! find_pc_partial_function (pc
, NULL
, &func_addr
, &func_end
))
4816 CORE_ADDR prologue_end
;
4818 /* We don't even have minsym information, so fall back to using
4819 func_start, if given. */
4821 return 1; /* We *might* be in a prologue. */
4823 prologue_end
= gdbarch_skip_prologue (gdbarch
, func_start
);
4825 return func_start
<= pc
&& pc
< prologue_end
;
4828 /* If we have line number information for the function, that's
4829 usually pretty reliable. */
4830 sal
= find_pc_line (func_addr
, 0);
4832 /* Now sal describes the source line at the function's entry point,
4833 which (by convention) is the prologue. The end of that "line",
4834 sal.end, is the end of the prologue.
4836 Note that, for functions whose source code is all on a single
4837 line, the line number information doesn't always end up this way.
4838 So we must verify that our purported end-of-prologue address is
4839 *within* the function, not at its start or end. */
4841 || sal
.end
<= func_addr
4842 || func_end
<= sal
.end
)
4844 /* We don't have any good line number info, so use the minsym
4845 information, together with the architecture-specific prologue
4847 CORE_ADDR prologue_end
= gdbarch_skip_prologue (gdbarch
, func_addr
);
4849 return func_addr
<= pc
&& pc
< prologue_end
;
4852 /* We have line number info, and it looks good. */
4853 return func_addr
<= pc
&& pc
< sal
.end
;
4856 /* Given PC at the function's start address, attempt to find the
4857 prologue end using SAL information. Return zero if the skip fails.
4859 A non-optimized prologue traditionally has one SAL for the function
4860 and a second for the function body. A single line function has
4861 them both pointing at the same line.
4863 An optimized prologue is similar but the prologue may contain
4864 instructions (SALs) from the instruction body. Need to skip those
4865 while not getting into the function body.
4867 The functions end point and an increasing SAL line are used as
4868 indicators of the prologue's endpoint.
4870 This code is based on the function refine_prologue_limit
4874 skip_prologue_using_sal (struct gdbarch
*gdbarch
, CORE_ADDR func_addr
)
4876 struct symtab_and_line prologue_sal
;
4881 /* Get an initial range for the function. */
4882 find_pc_partial_function (func_addr
, NULL
, &start_pc
, &end_pc
);
4883 start_pc
+= gdbarch_deprecated_function_start_offset (gdbarch
);
4885 prologue_sal
= find_pc_line (start_pc
, 0);
4886 if (prologue_sal
.line
!= 0)
4888 /* For languages other than assembly, treat two consecutive line
4889 entries at the same address as a zero-instruction prologue.
4890 The GNU assembler emits separate line notes for each instruction
4891 in a multi-instruction macro, but compilers generally will not
4893 if (prologue_sal
.symtab
->language
!= language_asm
)
4895 struct linetable
*linetable
= LINETABLE (prologue_sal
.symtab
);
4898 /* Skip any earlier lines, and any end-of-sequence marker
4899 from a previous function. */
4900 while (linetable
->item
[idx
].pc
!= prologue_sal
.pc
4901 || linetable
->item
[idx
].line
== 0)
4904 if (idx
+1 < linetable
->nitems
4905 && linetable
->item
[idx
+1].line
!= 0
4906 && linetable
->item
[idx
+1].pc
== start_pc
)
4910 /* If there is only one sal that covers the entire function,
4911 then it is probably a single line function, like
4913 if (prologue_sal
.end
>= end_pc
)
4916 while (prologue_sal
.end
< end_pc
)
4918 struct symtab_and_line sal
;
4920 sal
= find_pc_line (prologue_sal
.end
, 0);
4923 /* Assume that a consecutive SAL for the same (or larger)
4924 line mark the prologue -> body transition. */
4925 if (sal
.line
>= prologue_sal
.line
)
4927 /* Likewise if we are in a different symtab altogether
4928 (e.g. within a file included via #include). */
4929 if (sal
.symtab
!= prologue_sal
.symtab
)
4932 /* The line number is smaller. Check that it's from the
4933 same function, not something inlined. If it's inlined,
4934 then there is no point comparing the line numbers. */
4935 bl
= block_for_pc (prologue_sal
.end
);
4938 if (block_inlined_p (bl
))
4940 if (BLOCK_FUNCTION (bl
))
4945 bl
= BLOCK_SUPERBLOCK (bl
);
4950 /* The case in which compiler's optimizer/scheduler has
4951 moved instructions into the prologue. We look ahead in
4952 the function looking for address ranges whose
4953 corresponding line number is less the first one that we
4954 found for the function. This is more conservative then
4955 refine_prologue_limit which scans a large number of SALs
4956 looking for any in the prologue. */
4961 if (prologue_sal
.end
< end_pc
)
4962 /* Return the end of this line, or zero if we could not find a
4964 return prologue_sal
.end
;
4966 /* Don't return END_PC, which is past the end of the function. */
4967 return prologue_sal
.pc
;
4971 static char *name_of_main
;
4972 enum language language_of_main
= language_unknown
;
4975 set_main_name (const char *name
)
4977 if (name_of_main
!= NULL
)
4979 xfree (name_of_main
);
4980 name_of_main
= NULL
;
4981 language_of_main
= language_unknown
;
4985 name_of_main
= xstrdup (name
);
4986 language_of_main
= language_unknown
;
4990 /* Deduce the name of the main procedure, and set NAME_OF_MAIN
4994 find_main_name (void)
4996 const char *new_main_name
;
4998 /* Try to see if the main procedure is in Ada. */
4999 /* FIXME: brobecker/2005-03-07: Another way of doing this would
5000 be to add a new method in the language vector, and call this
5001 method for each language until one of them returns a non-empty
5002 name. This would allow us to remove this hard-coded call to
5003 an Ada function. It is not clear that this is a better approach
5004 at this point, because all methods need to be written in a way
5005 such that false positives never be returned. For instance, it is
5006 important that a method does not return a wrong name for the main
5007 procedure if the main procedure is actually written in a different
5008 language. It is easy to guaranty this with Ada, since we use a
5009 special symbol generated only when the main in Ada to find the name
5010 of the main procedure. It is difficult however to see how this can
5011 be guarantied for languages such as C, for instance. This suggests
5012 that order of call for these methods becomes important, which means
5013 a more complicated approach. */
5014 new_main_name
= ada_main_name ();
5015 if (new_main_name
!= NULL
)
5017 set_main_name (new_main_name
);
5021 new_main_name
= go_main_name ();
5022 if (new_main_name
!= NULL
)
5024 set_main_name (new_main_name
);
5028 new_main_name
= pascal_main_name ();
5029 if (new_main_name
!= NULL
)
5031 set_main_name (new_main_name
);
5035 /* The languages above didn't identify the name of the main procedure.
5036 Fallback to "main". */
5037 set_main_name ("main");
5043 if (name_of_main
== NULL
)
5046 return name_of_main
;
5049 /* Handle ``executable_changed'' events for the symtab module. */
5052 symtab_observer_executable_changed (void)
5054 /* NAME_OF_MAIN may no longer be the same, so reset it for now. */
5055 set_main_name (NULL
);
5058 /* Return 1 if the supplied producer string matches the ARM RealView
5059 compiler (armcc). */
5062 producer_is_realview (const char *producer
)
5064 static const char *const arm_idents
[] = {
5065 "ARM C Compiler, ADS",
5066 "Thumb C Compiler, ADS",
5067 "ARM C++ Compiler, ADS",
5068 "Thumb C++ Compiler, ADS",
5069 "ARM/Thumb C/C++ Compiler, RVCT",
5070 "ARM C/C++ Compiler, RVCT"
5074 if (producer
== NULL
)
5077 for (i
= 0; i
< ARRAY_SIZE (arm_idents
); i
++)
5078 if (strncmp (producer
, arm_idents
[i
], strlen (arm_idents
[i
])) == 0)
5086 /* The next index to hand out in response to a registration request. */
5088 static int next_aclass_value
= LOC_FINAL_VALUE
;
5090 /* The maximum number of "aclass" registrations we support. This is
5091 constant for convenience. */
5092 #define MAX_SYMBOL_IMPLS (LOC_FINAL_VALUE + 10)
5094 /* The objects representing the various "aclass" values. The elements
5095 from 0 up to LOC_FINAL_VALUE-1 represent themselves, and subsequent
5096 elements are those registered at gdb initialization time. */
5098 static struct symbol_impl symbol_impl
[MAX_SYMBOL_IMPLS
];
5100 /* The globally visible pointer. This is separate from 'symbol_impl'
5101 so that it can be const. */
5103 const struct symbol_impl
*symbol_impls
= &symbol_impl
[0];
5105 /* Make sure we saved enough room in struct symbol. */
5107 gdb_static_assert (MAX_SYMBOL_IMPLS
<= (1 << SYMBOL_ACLASS_BITS
));
5109 /* Register a computed symbol type. ACLASS must be LOC_COMPUTED. OPS
5110 is the ops vector associated with this index. This returns the new
5111 index, which should be used as the aclass_index field for symbols
5115 register_symbol_computed_impl (enum address_class aclass
,
5116 const struct symbol_computed_ops
*ops
)
5118 int result
= next_aclass_value
++;
5120 gdb_assert (aclass
== LOC_COMPUTED
);
5121 gdb_assert (result
< MAX_SYMBOL_IMPLS
);
5122 symbol_impl
[result
].aclass
= aclass
;
5123 symbol_impl
[result
].ops_computed
= ops
;
5125 /* Sanity check OPS. */
5126 gdb_assert (ops
!= NULL
);
5127 gdb_assert (ops
->tracepoint_var_ref
!= NULL
);
5128 gdb_assert (ops
->describe_location
!= NULL
);
5129 gdb_assert (ops
->read_needs_frame
!= NULL
);
5130 gdb_assert (ops
->read_variable
!= NULL
);
5135 /* Register a function with frame base type. ACLASS must be LOC_BLOCK.
5136 OPS is the ops vector associated with this index. This returns the
5137 new index, which should be used as the aclass_index field for symbols
5141 register_symbol_block_impl (enum address_class aclass
,
5142 const struct symbol_block_ops
*ops
)
5144 int result
= next_aclass_value
++;
5146 gdb_assert (aclass
== LOC_BLOCK
);
5147 gdb_assert (result
< MAX_SYMBOL_IMPLS
);
5148 symbol_impl
[result
].aclass
= aclass
;
5149 symbol_impl
[result
].ops_block
= ops
;
5151 /* Sanity check OPS. */
5152 gdb_assert (ops
!= NULL
);
5153 gdb_assert (ops
->find_frame_base_location
!= NULL
);
5158 /* Register a register symbol type. ACLASS must be LOC_REGISTER or
5159 LOC_REGPARM_ADDR. OPS is the register ops vector associated with
5160 this index. This returns the new index, which should be used as
5161 the aclass_index field for symbols of this type. */
5164 register_symbol_register_impl (enum address_class aclass
,
5165 const struct symbol_register_ops
*ops
)
5167 int result
= next_aclass_value
++;
5169 gdb_assert (aclass
== LOC_REGISTER
|| aclass
== LOC_REGPARM_ADDR
);
5170 gdb_assert (result
< MAX_SYMBOL_IMPLS
);
5171 symbol_impl
[result
].aclass
= aclass
;
5172 symbol_impl
[result
].ops_register
= ops
;
5177 /* Initialize elements of 'symbol_impl' for the constants in enum
5181 initialize_ordinary_address_classes (void)
5185 for (i
= 0; i
< LOC_FINAL_VALUE
; ++i
)
5186 symbol_impl
[i
].aclass
= i
;
5191 /* Initialize the symbol SYM. */
5194 initialize_symbol (struct symbol
*sym
)
5196 memset (sym
, 0, sizeof (*sym
));
5197 SYMBOL_SECTION (sym
) = -1;
5200 /* Allocate and initialize a new 'struct symbol' on OBJFILE's
5204 allocate_symbol (struct objfile
*objfile
)
5206 struct symbol
*result
;
5208 result
= OBSTACK_ZALLOC (&objfile
->objfile_obstack
, struct symbol
);
5209 SYMBOL_SECTION (result
) = -1;
5214 /* Allocate and initialize a new 'struct template_symbol' on OBJFILE's
5217 struct template_symbol
*
5218 allocate_template_symbol (struct objfile
*objfile
)
5220 struct template_symbol
*result
;
5222 result
= OBSTACK_ZALLOC (&objfile
->objfile_obstack
, struct template_symbol
);
5223 SYMBOL_SECTION (&result
->base
) = -1;
5231 _initialize_symtab (void)
5233 initialize_ordinary_address_classes ();
5235 add_info ("variables", variables_info
, _("\
5236 All global and static variable names, or those matching REGEXP."));
5238 add_com ("whereis", class_info
, variables_info
, _("\
5239 All global and static variable names, or those matching REGEXP."));
5241 add_info ("functions", functions_info
,
5242 _("All function names, or those matching REGEXP."));
5244 /* FIXME: This command has at least the following problems:
5245 1. It prints builtin types (in a very strange and confusing fashion).
5246 2. It doesn't print right, e.g. with
5247 typedef struct foo *FOO
5248 type_print prints "FOO" when we want to make it (in this situation)
5249 print "struct foo *".
5250 I also think "ptype" or "whatis" is more likely to be useful (but if
5251 there is much disagreement "info types" can be fixed). */
5252 add_info ("types", types_info
,
5253 _("All type names, or those matching REGEXP."));
5255 add_info ("sources", sources_info
,
5256 _("Source files in the program."));
5258 add_com ("rbreak", class_breakpoint
, rbreak_command
,
5259 _("Set a breakpoint for all functions matching REGEXP."));
5263 add_com ("lf", class_info
, sources_info
,
5264 _("Source files in the program"));
5265 add_com ("lg", class_info
, variables_info
, _("\
5266 All global and static variable names, or those matching REGEXP."));
5269 add_setshow_enum_cmd ("multiple-symbols", no_class
,
5270 multiple_symbols_modes
, &multiple_symbols_mode
,
5272 Set the debugger behavior when more than one symbol are possible matches\n\
5273 in an expression."), _("\
5274 Show how the debugger handles ambiguities in expressions."), _("\
5275 Valid values are \"ask\", \"all\", \"cancel\", and the default is \"all\"."),
5276 NULL
, NULL
, &setlist
, &showlist
);
5278 add_setshow_boolean_cmd ("basenames-may-differ", class_obscure
,
5279 &basenames_may_differ
, _("\
5280 Set whether a source file may have multiple base names."), _("\
5281 Show whether a source file may have multiple base names."), _("\
5282 (A \"base name\" is the name of a file with the directory part removed.\n\
5283 Example: The base name of \"/home/user/hello.c\" is \"hello.c\".)\n\
5284 If set, GDB will canonicalize file names (e.g., expand symlinks)\n\
5285 before comparing them. Canonicalization is an expensive operation,\n\
5286 but it allows the same file be known by more than one base name.\n\
5287 If not set (the default), all source files are assumed to have just\n\
5288 one base name, and gdb will do file name comparisons more efficiently."),
5290 &setlist
, &showlist
);
5292 add_setshow_zuinteger_cmd ("symtab-create", no_class
, &symtab_create_debug
,
5293 _("Set debugging of symbol table creation."),
5294 _("Show debugging of symbol table creation."), _("\
5295 When enabled (non-zero), debugging messages are printed when building\n\
5296 symbol tables. A value of 1 (one) normally provides enough information.\n\
5297 A value greater than 1 provides more verbose information."),
5300 &setdebuglist
, &showdebuglist
);
5302 observer_attach_executable_changed (symtab_observer_executable_changed
);