/* Note that all the following SYMBOL_* macros are used with the
SYMBOL argument being either a partial symbol, a minimal symbol or
a full symbol. All three types have a ginfo field. In particular
- the SYMBOL_INIT_LANGUAGE_SPECIFIC, SYMBOL_INIT_DEMANGLED_NAME,
- SYMBOL_DEMANGLED_NAME macros cannot be entirely substituted by
+ the SYMBOL_INIT_LANGUAGE_SPECIFIC, SYMBOL_DEMANGLED_NAME, etc.
+ macros cannot be entirely substituted by
functions, unless the callers are changed to pass in the ginfo
field only, instead of the SYMBOL parameter. */
extern void symbol_init_language_specific (struct general_symbol_info *symbol,
enum language language);
-#define SYMBOL_INIT_DEMANGLED_NAME(symbol,obstack) \
- (symbol_init_demangled_name (&(symbol)->ginfo, (obstack)))
-extern void symbol_init_demangled_name (struct general_symbol_info *symbol,
- struct obstack *obstack);
-
#define SYMBOL_SET_NAMES(symbol,linkage_name,len,objfile) \
symbol_set_names (&(symbol)->ginfo, linkage_name, len, objfile)
extern void symbol_set_names (struct general_symbol_info *symbol,
const struct symbol_ops *ops;
/* Some symbols require additional information to be recorded on a
- per- symbol basis. Stash those values here. */
+ per-symbol basis. Stash those values here. */
union
{
/* An arbitrary data pointer. Note that this data must be
allocated using the same obstack as the symbol itself. */
/* So far it is only used by LOC_COMPUTED and LOC_COMPUTED_ARG to
- find the location location information. For a LOC_BLOCK symbol
+ find the location information. For a LOC_BLOCK symbol
for a function in a compilation unit compiled with DWARF 2
information, this is information used internally by the DWARF 2
code --- specifically, the location expression for the frame
#define SYMBOL_LINE(symbol) (symbol)->line
#define SYMBOL_SYMTAB(symbol) (symbol)->symtab
#define SYMBOL_BASEREG(symbol) (symbol)->aux_value.basereg
-#define SYMBOL_OBJFILE(symbol) (symbol)->aux_value.objfile
#define SYMBOL_OPS(symbol) (symbol)->ops
#define SYMBOL_LOCATION_BATON(symbol) (symbol)->aux_value.ptr
\f
char *dirname;
/* This component says how to free the data we point to:
- free_contents => do a tree walk and free each object.
free_nothing => do nothing; some other symtab will free
the data this one uses.
free_linetable => free just the linetable. FIXME: Is this redundant
enum free_code
{
- free_nothing, free_contents, free_linetable
+ free_nothing, free_linetable
}
free_code;
/* symtab.c lookup functions */
+extern const char multiple_symbols_ask[];
+extern const char multiple_symbols_all[];
+extern const char multiple_symbols_cancel[];
+
+const char *multiple_symbols_select_mode (void);
+
+int symbol_matches_domain (enum language symbol_language,
+ domain_enum symbol_domain,
+ domain_enum domain);
+
/* lookup a symbol table by source file name */
extern struct symtab *lookup_symtab (const char *);
extern unsigned int msymbol_hash (const char *);
+extern struct objfile * msymbol_objfile (struct minimal_symbol *sym);
+
extern void
add_minsym_to_hash_table (struct minimal_symbol *sym,
struct minimal_symbol **table);
EX_EVENT_CATCH
};
-/* Type for returning info about an exception */
-struct exception_event_record
-{
- enum exception_event_kind kind;
- struct symtab_and_line throw_sal;
- struct symtab_and_line catch_sal;
- /* This may need to be extended in the future, if
- some platforms allow reporting more information,
- such as point of rethrow, type of exception object,
- type expected by catch clause, etc. */
-};
-
-#define CURRENT_EXCEPTION_KIND (current_exception_event->kind)
-#define CURRENT_EXCEPTION_CATCH_SAL (current_exception_event->catch_sal)
-#define CURRENT_EXCEPTION_CATCH_LINE (current_exception_event->catch_sal.line)
-#define CURRENT_EXCEPTION_CATCH_FILE (current_exception_event->catch_sal.symtab->filename)
-#define CURRENT_EXCEPTION_CATCH_PC (current_exception_event->catch_sal.pc)
-#define CURRENT_EXCEPTION_THROW_SAL (current_exception_event->throw_sal)
-#define CURRENT_EXCEPTION_THROW_LINE (current_exception_event->throw_sal.line)
-#define CURRENT_EXCEPTION_THROW_FILE (current_exception_event->throw_sal.symtab->filename)
-#define CURRENT_EXCEPTION_THROW_PC (current_exception_event->throw_sal.pc)
\f
/* Given a pc value, return line number it is in. Second arg nonzero means
extern struct symtab *find_line_symtab (struct symtab *, int, int *, int *);
+extern CORE_ADDR find_function_start_pc (struct gdbarch *,
+ CORE_ADDR, asection *);
+
extern struct symtab_and_line find_function_start_sal (struct symbol *sym,
int);