/* Symbol table definitions for GDB.
Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008
Free Software Foundation, Inc.
This file is part of GDB.
struct blockvector;
struct axs_value;
struct agent_expr;
-enum language;
/* Some of the structures in this file are space critical.
The space-critical structures are:
/* 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,
unsigned long size;
-#ifdef SOFUN_ADDRESS_MAYBE_MISSING
/* Which source file is this symbol in? Only relevant for mst_file_*. */
char *filename;
-#endif
/* Classification type for this minimal 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);
CORE_ADDR pc;
CORE_ADDR end;
+ int explicit_pc;
+ int explicit_line;
};
extern void init_sal (struct symtab_and_line *sal);
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 void select_source_symtab (struct symtab *);
+extern char **default_make_symbol_completion_list (char *, char *);
extern char **make_symbol_completion_list (char *, char *);
extern char **make_file_symbol_completion_list (char *, char *, char *);
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);
const domain_enum domain,
struct symtab **symtab);
+extern struct symtabs_and_lines
+expand_line_sal (struct symtab_and_line sal);
#endif /* !defined(SYMTAB_H) */