struct symbol
struct partial_symbol
- These structures are layed out to encourage good packing.
+ These structures are laid out to encourage good packing.
They use ENUM_BITFIELD and short int fields, and they order the
structure members so that fields less than a word are next
to each other so they can be packed together. */
struct general_symbol_info
{
/* Name of the symbol. This is a required field. Storage for the
- name is allocated on the psymbol_obstack or symbol_obstack for
- the associated objfile. For languages like C++ that make a
- distinction between the mangled name and demangled name, this is
- the mangled name. */
+ name is allocated on the objfile_obstack for the associated
+ objfile. For languages like C++ that make a distinction between
+ the mangled name and demangled name, this is the mangled
+ name. */
char *name;
#define SYMBOL_MATCHES_NATURAL_NAME(symbol, name) \
(strcmp_iw (SYMBOL_NATURAL_NAME (symbol), (name)) == 0)
+/* Macro that returns the name to be used when sorting and searching symbols.
+ In C++, Chill, and Java, we search for the demangled form of a name,
+ and so sort symbols accordingly. In Ada, however, we search by mangled
+ name. If there is no distinct demangled name, then SYMBOL_SEARCH_NAME
+ returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */
+#define SYMBOL_SEARCH_NAME(symbol) \
+ (symbol_search_name (&(symbol)->ginfo))
+extern char *symbol_search_name (const struct general_symbol_info *);
+
+/* Analogous to SYMBOL_MATCHES_NATURAL_NAME, but uses the search
+ name. */
+#define SYMBOL_MATCHES_SEARCH_NAME(symbol, name) \
+ (strcmp_iw (SYMBOL_SEARCH_NAME (symbol), (name)) == 0)
+
/* Classification types for a minimal symbol. These should be taken as
"advisory only", since if gdb can't easily figure out a
classification it simply selects mst_unknown. It may also have to
struct general_symbol_info ginfo;
- /* The info field is available for caching machine-specific information
- so it doesn't have to rederive the info constantly (over a serial line).
- It is initialized to zero and stays that way until target-dependent code
- sets it. Storage for any data pointed to by this field should be allo-
- cated on the symbol_obstack for the associated objfile.
- The type would be "void *" except for reasons of compatibility with older
+ /* The info field is available for caching machine-specific
+ information so it doesn't have to rederive the info constantly
+ (over a serial line). It is initialized to zero and stays that
+ way until target-dependent code sets it. Storage for any data
+ pointed to by this field should be allocated on the
+ objfile_obstack for the associated objfile. The type would be
+ "void *" except for reasons of compatibility with older
compilers. This field is optional.
Currently, the AMD 29000 tdep.c uses it to remember things it has decoded
#define ANOFFSET(secoff, whichone) \
((whichone == -1) \
- ? (internal_error (__FILE__, __LINE__, "Section index is uninitialized"), -1) \
+ ? (internal_error (__FILE__, __LINE__, _("Section index is uninitialized")), -1) \
: secoff->offsets[whichone])
/* The size of a section_offsets table for N sections. */
Even after the source file has been read into a symtab, the
partial_symtab remains around. They are allocated on an obstack,
- psymbol_obstack. FIXME, this is bad for dynamic linking or VxWorks-
+ objfile_obstack. FIXME, this is bad for dynamic linking or VxWorks-
style execution of a bunch of .o's. */
struct partial_symtab
char *fullname;
+ /* Directory in which it was compiled, or NULL if we don't know. */
+
+ char *dirname;
+
/* Information about the object file from which symbols should be read. */
struct objfile *objfile;
extern void clear_pc_function_cache (void);
-extern int find_pc_sect_partial_function (CORE_ADDR, asection *,
- char **, CORE_ADDR *, CORE_ADDR *);
-
/* from symtab.c: */
/* lookup partial symbol table by filename */
extern int in_prologue (CORE_ADDR pc, CORE_ADDR func_start);
+extern CORE_ADDR skip_prologue_using_sal (CORE_ADDR func_addr);
+
extern struct symbol *fixup_symbol_section (struct symbol *,
struct objfile *);
extern void set_main_name (const char *name);
extern /*const */ char *main_name (void);
+/* Global to indicate presence of HP-compiled objects,
+ in particular, SOM executable file with SOM debug info
+ Defined in symtab.c, used in hppa-tdep.c. */
+extern int deprecated_hp_som_som_object_present;
+
#endif /* !defined(SYMTAB_H) */