aboutsummaryrefslogtreecommitdiff
path: root/gdb/symtab.h
diff options
context:
space:
mode:
authorStu Grossman <grossman@cygnus>1995-10-24 21:22:56 +0000
committerStu Grossman <grossman@cygnus>1995-10-24 21:22:56 +0000
commit3f687c7896795bac80f4e2e15f565562f34b4e30 (patch)
treeadbadb7834dc6daf11650767e4f4a2ef85097906 /gdb/symtab.h
parent43b428a7bf92c725de4d5560807cd0a4682c0962 (diff)
downloadfsf-binutils-gdb-3f687c7896795bac80f4e2e15f565562f34b4e30.zip
fsf-binutils-gdb-3f687c7896795bac80f4e2e15f565562f34b4e30.tar.gz
fsf-binutils-gdb-3f687c7896795bac80f4e2e15f565562f34b4e30.tar.bz2
* infrun.c (wait_for_inferior): Disable questionable code near
the step range test. Replace call detection test with much simpler (and more efficient) test that doesn't require prologue examination (as often). * symtab.c symtab.h (in_prologue): New function that indicates whether or not we are in a function prologue. This uses the symbol table, and then falls back to prologue examination if that fails. It's much more efficient for remote debugging because it avoids examining memory, which is very slow. This is used in wait_for_inferior to determine if we've made a function call that needs to be skipped over (for next/nexti). * mips-tdep.c (after_prologue): New function, returns the PC after the prologue. Uses PDRs and the symbol table. (mips_find_saved_regs): Use in_prologue() to avoid costly prologue examination if possible. (mips_skip_prologue): Use after_prologue() if possible to avoid costly prologue examination.
Diffstat (limited to 'gdb/symtab.h')
-rw-r--r--gdb/symtab.h62
1 files changed, 42 insertions, 20 deletions
diff --git a/gdb/symtab.h b/gdb/symtab.h
index cd1ad34..777b107 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1,5 +1,5 @@
/* Symbol table definitions for GDB.
- Copyright 1986, 1989, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+ Copyright 1986, 1989, 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of GDB.
@@ -15,7 +15,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if !defined (SYMTAB_H)
#define SYMTAB_H 1
@@ -121,9 +121,6 @@ struct general_symbol_info
#define SYMBOL_CPLUS_DEMANGLED_NAME(symbol) \
(symbol)->ginfo.language_specific.cplus_specific.demangled_name
-
-extern int demangle; /* We reference it, so go ahead and declare it. */
-
/* Macro that initializes the language dependent portion of a symbol
depending upon the language for the symbol. */
@@ -232,10 +229,6 @@ extern int demangle; /* We reference it, so go ahead and declare it. */
? SYMBOL_DEMANGLED_NAME (symbol) \
: SYMBOL_NAME (symbol))
-/* From utils.c. */
-extern int demangle;
-extern int asm_demangle;
-
/* Macro that tests a symbol for a match against a specified name string.
First test the unencoded name, then looks for and test a C++ encoded
name if it exists. Note that whitespace is ignored while attempting to
@@ -291,6 +284,11 @@ struct minimal_symbol
char *info;
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+ /* Which source file is this symbol in? Only relevant for mst_file_*. */
+ char *filename;
+#endif
+
/* Classification types for this 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 guess when it can't figure out
@@ -584,7 +582,7 @@ struct symbol
/* Address class */
- enum address_class class BYTE_BITFIELD;
+ enum address_class aclass BYTE_BITFIELD;
/* Line number of definition. FIXME: Should we really make the assumption
that nobody will try to debug files longer than 64K lines? What about
@@ -604,7 +602,7 @@ struct symbol
};
#define SYMBOL_NAMESPACE(symbol) (symbol)->namespace
-#define SYMBOL_CLASS(symbol) (symbol)->class
+#define SYMBOL_CLASS(symbol) (symbol)->aclass
#define SYMBOL_TYPE(symbol) (symbol)->type
#define SYMBOL_LINE(symbol) (symbol)->line
#define SYMBOL_BASEREG(symbol) (symbol)->aux_value.basereg
@@ -629,12 +627,12 @@ struct partial_symbol
/* Address class (for info_symbols) */
- enum address_class class BYTE_BITFIELD;
+ enum address_class aclass BYTE_BITFIELD;
};
#define PSYMBOL_NAMESPACE(psymbol) (psymbol)->namespace
-#define PSYMBOL_CLASS(psymbol) (psymbol)->class
+#define PSYMBOL_CLASS(psymbol) (psymbol)->aclass
/* Source-file information. This describes the relation between source files,
@@ -728,7 +726,7 @@ struct symtab
struct linetable *linetable;
/* Section in objfile->section_offsets for the blockvector and
- the linetable. */
+ the linetable. Probably always SECT_OFF_TEXT. */
int block_line_section;
@@ -924,10 +922,14 @@ struct partial_symtab
((NAME)[0] == 'o' && (NAME)[1] == 'p' && (NAME)[2] == CPLUS_MARKER)
/* Macro that yields non-zero value iff NAME is the prefix for C++ vtbl
- names. Note that this macro is g++ specific (FIXME). */
+ names. Note that this macro is g++ specific (FIXME).
+ '_vt$' is the old cfront-style vtables; '_VT$' is the new
+ style, using thunks (where '$' is really CPLUS_MARKER). */
#define VTBL_PREFIX_P(NAME) \
- ((NAME)[3] == CPLUS_MARKER && !strncmp ((NAME), "_vt", 3))
+ ((NAME)[3] == CPLUS_MARKER && (NAME)[0] == '_' \
+ && (((NAME)[1] == 'V' && (NAME)[2] == 'T') \
+ || ((NAME)[1] == 'v' && (NAME)[2] == 't')))
/* Macro that yields non-zero value iff NAME is the prefix for C++ destructor
names. Note that this macro is g++ specific (FIXME). */
@@ -950,6 +952,10 @@ extern int current_source_line;
extern struct objfile *current_objfile;
+/* From utils.c. */
+extern int demangle;
+extern int asm_demangle;
+
extern struct symtab *
lookup_symtab PARAMS ((char *));
@@ -1020,14 +1026,23 @@ extern void prim_record_minimal_symbol PARAMS ((const char *, CORE_ADDR,
enum minimal_symbol_type,
struct objfile *));
-extern void prim_record_minimal_symbol_and_info
+extern struct minimal_symbol *prim_record_minimal_symbol_and_info
PARAMS ((const char *, CORE_ADDR,
enum minimal_symbol_type,
char *info, int section,
struct objfile *));
+#ifdef SOFUN_ADDRESS_MAYBE_MISSING
+extern CORE_ADDR find_stab_function_addr PARAMS ((char *,
+ struct partial_symtab *,
+ struct objfile *));
+#endif
+
extern struct minimal_symbol *
-lookup_minimal_symbol PARAMS ((const char *, struct objfile *));
+lookup_minimal_symbol PARAMS ((const char *, const char *, struct objfile *));
+
+extern struct minimal_symbol *
+lookup_minimal_symbol_text PARAMS ((const char *, const char *, struct objfile *));
extern struct minimal_symbol *
lookup_minimal_symbol_by_pc PARAMS ((CORE_ADDR));
@@ -1047,6 +1062,10 @@ discard_minimal_symbols PARAMS ((int));
extern void
install_minimal_symbols PARAMS ((struct objfile *));
+/* Sort all the minimal symbols in OBJFILE. */
+
+extern void msymbols_sort PARAMS ((struct objfile *objfile));
+
struct symtab_and_line
{
struct symtab *symtab;
@@ -1140,8 +1159,6 @@ symbol_file_add PARAMS ((char *, int, CORE_ADDR, int, int, int));
/* source.c */
-extern int frame_file_full_name; /* in stack.c */
-
extern int
identify_source_line PARAMS ((struct symtab *, int, int, CORE_ADDR));
@@ -1174,4 +1191,9 @@ clear_symtab_users PARAMS ((void));
extern enum language
deduce_language_from_filename PARAMS ((char *));
+/* symtab.c */
+
+extern int
+in_prologue PARAMS ((CORE_ADDR pc, CORE_ADDR func_start));
+
#endif /* !defined(SYMTAB_H) */