aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2003-09-12 18:40:18 +0000
committerAndrew Cagney <cagney@redhat.com>2003-09-12 18:40:18 +0000
commit627b3ba2d386befaf2d1bd97bd780ac1218dd399 (patch)
tree506fc255ee49268770bd8a356538f907eec76279
parentb0abbc58f0daefaf286d6a008820fef5f69e5353 (diff)
downloadgdb-627b3ba2d386befaf2d1bd97bd780ac1218dd399.zip
gdb-627b3ba2d386befaf2d1bd97bd780ac1218dd399.tar.gz
gdb-627b3ba2d386befaf2d1bd97bd780ac1218dd399.tar.bz2
2003-09-12 Andrew Cagney <cagney@redhat.com>
* objfiles.h (struct entry_info): Deprecate "entry_file_lowpc" and "entry_file_highpc". Update comments. * defs.h (deprecated_inside_entry_file): Rename "inside_entry_file". * blockframe.c (deprecated_inside_entry_file): Rename "inside_entry_file". * frame.c (get_prev_frame): Update. Use if 0 instead of #if 0. * vax-tdep.c (vax_frame_chain): Update. * sh64-tdep.c (sh64_frame_chain): Update. * sh-tdep.c (sh_frame_chain): Update. * rs6000-tdep.c (rs6000_frame_chain): Update. * ns32k-tdep.c (ns32k_frame_chain): Update. * mips-tdep.c (mips_frame_chain): Update. * m68hc11-tdep.c (m68hc11_frame_this_id): Update. * m32r-tdep.c (m32r_frame_this_id): Update. * i386-interix-tdep.c (i386_interix_frame_chain_valid): Update. * frv-tdep.c (frv_frame_this_id): Update. * d10v-tdep.c (d10v_frame_this_id): Update. * cris-tdep.c (cris_frame_chain): Update. * blockframe.c (legacy_frame_chain_valid): Update. * avr-tdep.c (avr_frame_this_id): Update. * arm-tdep.c (arm_prologue_this_id): Update. * alpha-tdep.c (alpha_heuristic_frame_this_id): Update. * objfiles.c (objfile_relocate): Update. * mipsread.c (mipscoff_symfile_read): Update. (mipscoff_symfile_read): Update. * mdebugread.c (parse_partial_symbols): Update. * dwarfread.c (read_file_scope): Update. * dwarf2read.c (read_file_scope): Update. * dbxread.c (read_dbx_symtab): Update. (read_dbx_symtab): Update. * coffread.c (complete_symtab): Update.
-rw-r--r--gdb/ChangeLog35
-rw-r--r--gdb/alpha-tdep.c2
-rw-r--r--gdb/arm-tdep.c2
-rw-r--r--gdb/avr-tdep.c2
-rw-r--r--gdb/blockframe.c8
-rw-r--r--gdb/coffread.c4
-rw-r--r--gdb/cris-tdep.c2
-rw-r--r--gdb/d10v-tdep.c2
-rw-r--r--gdb/dbxread.c8
-rw-r--r--gdb/defs.h2
-rw-r--r--gdb/dwarf2read.c4
-rw-r--r--gdb/dwarfread.c4
-rw-r--r--gdb/frame.c31
-rw-r--r--gdb/frv-tdep.c2
-rw-r--r--gdb/i386-interix-tdep.c4
-rw-r--r--gdb/m32r-tdep.c2
-rw-r--r--gdb/m68hc11-tdep.c2
-rw-r--r--gdb/mdebugread.c4
-rw-r--r--gdb/mips-tdep.c2
-rw-r--r--gdb/mipsread.c6
-rw-r--r--gdb/ns32k-tdep.c2
-rw-r--r--gdb/objfiles.c6
-rw-r--r--gdb/objfiles.h34
-rw-r--r--gdb/rs6000-tdep.c2
-rw-r--r--gdb/sh-tdep.c3
-rw-r--r--gdb/sh64-tdep.c3
-rw-r--r--gdb/symfile.c4
-rw-r--r--gdb/vax-tdep.c2
28 files changed, 118 insertions, 66 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c999b83..faca64f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,38 @@
+2003-09-12 Andrew Cagney <cagney@redhat.com>
+
+ * objfiles.h (struct entry_info): Deprecate "entry_file_lowpc" and
+ "entry_file_highpc". Update comments.
+ * defs.h (deprecated_inside_entry_file): Rename
+ "inside_entry_file".
+ * blockframe.c (deprecated_inside_entry_file): Rename
+ "inside_entry_file".
+ * frame.c (get_prev_frame): Update. Use if 0 instead of #if 0.
+ * vax-tdep.c (vax_frame_chain): Update.
+ * sh64-tdep.c (sh64_frame_chain): Update.
+ * sh-tdep.c (sh_frame_chain): Update.
+ * rs6000-tdep.c (rs6000_frame_chain): Update.
+ * ns32k-tdep.c (ns32k_frame_chain): Update.
+ * mips-tdep.c (mips_frame_chain): Update.
+ * m68hc11-tdep.c (m68hc11_frame_this_id): Update.
+ * m32r-tdep.c (m32r_frame_this_id): Update.
+ * i386-interix-tdep.c (i386_interix_frame_chain_valid): Update.
+ * frv-tdep.c (frv_frame_this_id): Update.
+ * d10v-tdep.c (d10v_frame_this_id): Update.
+ * cris-tdep.c (cris_frame_chain): Update.
+ * blockframe.c (legacy_frame_chain_valid): Update.
+ * avr-tdep.c (avr_frame_this_id): Update.
+ * arm-tdep.c (arm_prologue_this_id): Update.
+ * alpha-tdep.c (alpha_heuristic_frame_this_id): Update.
+ * objfiles.c (objfile_relocate): Update.
+ * mipsread.c (mipscoff_symfile_read): Update.
+ (mipscoff_symfile_read): Update.
+ * mdebugread.c (parse_partial_symbols): Update.
+ * dwarfread.c (read_file_scope): Update.
+ * dwarf2read.c (read_file_scope): Update.
+ * dbxread.c (read_dbx_symtab): Update.
+ (read_dbx_symtab): Update.
+ * coffread.c (complete_symtab): Update.
+
2003-09-12 Jeff Johnston <jjohnstn@redhat.com>
* top.c (quit_target): New static helper function.
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index df55bfb..4c3e471 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -1138,7 +1138,7 @@ alpha_heuristic_frame_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (inside_entry_file (info->start_pc))
+ if (deprecated_inside_entry_file (info->start_pc))
return;
*this_id = frame_id_build (info->vfp, info->start_pc);
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 9187207..9999a60 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -970,7 +970,7 @@ arm_prologue_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (func <= LOWEST_PC || inside_entry_file (func))
+ if (func <= LOWEST_PC || deprecated_inside_entry_file (func))
return;
/* If we've hit a wall, stop. */
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 2a4bf6f..90bf910 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -972,7 +972,7 @@ avr_frame_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (inside_entry_file (func))
+ if (deprecated_inside_entry_file (func))
return;
/* Hopefully the prologue analysis either correctly determined the
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index f431b50..43edc31 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -53,7 +53,7 @@ void _initialize_blockframe (void);
A PC of zero is always considered to be the bottom of the stack. */
int
-inside_entry_file (CORE_ADDR addr)
+deprecated_inside_entry_file (CORE_ADDR addr)
{
if (addr == 0)
return 1;
@@ -68,8 +68,8 @@ inside_entry_file (CORE_ADDR addr)
if (DEPRECATED_PC_IN_CALL_DUMMY (addr, 0, 0))
return 0;
}
- return (addr >= symfile_objfile->ei.entry_file_lowpc &&
- addr < symfile_objfile->ei.entry_file_highpc);
+ return (addr >= symfile_objfile->ei.deprecated_entry_file_lowpc &&
+ addr < symfile_objfile->ei.deprecated_entry_file_highpc);
}
/* Test a specified PC value to see if it is in the range of addresses
@@ -611,7 +611,7 @@ legacy_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
/* NOTE/drow 2002-12-25: should there be a way to disable this check? It
assumes a single small entry file, and the way some debug readers (e.g.
dbxread) figure out which object is the entry file is somewhat hokey. */
- if (inside_entry_file (frame_pc_unwind (fi)))
+ if (deprecated_inside_entry_file (frame_pc_unwind (fi)))
return 0;
return 1;
diff --git a/gdb/coffread.c b/gdb/coffread.c
index 152ec33..ac71f96 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
@@ -391,8 +391,8 @@ complete_symtab (char *name, CORE_ADDR start_addr, unsigned int size)
if (current_objfile->ei.entry_point >= current_source_start_addr &&
current_objfile->ei.entry_point < current_source_end_addr)
{
- current_objfile->ei.entry_file_lowpc = current_source_start_addr;
- current_objfile->ei.entry_file_highpc = current_source_end_addr;
+ current_objfile->ei.deprecated_entry_file_lowpc = current_source_start_addr;
+ current_objfile->ei.deprecated_entry_file_highpc = current_source_end_addr;
}
}
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index 1b19999..3e5bfe9 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -1248,7 +1248,7 @@ cris_frame_chain (struct frame_info *fi)
{
return get_frame_base (fi);
}
- else if (!inside_entry_file (get_frame_pc (fi)))
+ else if (!deprecated_inside_entry_file (get_frame_pc (fi)))
{
return read_memory_unsigned_integer (get_frame_base (fi), 4);
}
diff --git a/gdb/d10v-tdep.c b/gdb/d10v-tdep.c
index ac52ab6..574ff4d 100644
--- a/gdb/d10v-tdep.c
+++ b/gdb/d10v-tdep.c
@@ -1405,7 +1405,7 @@ d10v_frame_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (func <= IMEM_START || inside_entry_file (func))
+ if (func <= IMEM_START || deprecated_inside_entry_file (func))
return;
/* Hopefully the prologue analysis either correctly determined the
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index 61c78c4..52cf149 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -1450,8 +1450,8 @@ read_dbx_symtab (struct objfile *objfile)
if (objfile->ei.entry_point < nlist.n_value &&
objfile->ei.entry_point >= last_o_file_start)
{
- objfile->ei.entry_file_lowpc = last_o_file_start;
- objfile->ei.entry_file_highpc = nlist.n_value;
+ objfile->ei.deprecated_entry_file_lowpc = last_o_file_start;
+ objfile->ei.deprecated_entry_file_highpc = nlist.n_value;
}
if (past_first_source_file && pst
/* The gould NP1 uses low values for .o and -l symbols
@@ -2214,8 +2214,8 @@ read_dbx_symtab (struct objfile *objfile)
&& objfile->ei.entry_point < nlist.n_value
&& objfile->ei.entry_point >= last_o_file_start)
{
- objfile->ei.entry_file_lowpc = last_o_file_start;
- objfile->ei.entry_file_highpc = nlist.n_value;
+ objfile->ei.deprecated_entry_file_lowpc = last_o_file_start;
+ objfile->ei.deprecated_entry_file_highpc = nlist.n_value;
}
if (pst)
diff --git a/gdb/defs.h b/gdb/defs.h
index 39b27cb..842f4d8 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -303,7 +303,7 @@ struct breakpoint;
extern int inside_entry_func (CORE_ADDR);
-extern int inside_entry_file (CORE_ADDR addr);
+extern int deprecated_inside_entry_file (CORE_ADDR addr);
extern int inside_main_func (CORE_ADDR pc);
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index b432f12..a7435cc 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -2039,8 +2039,8 @@ read_file_scope (struct die_info *die, struct objfile *objfile,
if (objfile->ei.entry_point >= lowpc &&
objfile->ei.entry_point < highpc)
{
- objfile->ei.entry_file_lowpc = lowpc;
- objfile->ei.entry_file_highpc = highpc;
+ objfile->ei.deprecated_entry_file_lowpc = lowpc;
+ objfile->ei.deprecated_entry_file_highpc = highpc;
}
attr = dwarf_attr (die, DW_AT_language);
diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c
index e6f2a2e..6f1c76a 100644
--- a/gdb/dwarfread.c
+++ b/gdb/dwarfread.c
@@ -1868,8 +1868,8 @@ read_file_scope (struct dieinfo *dip, char *thisdie, char *enddie,
if (objfile->ei.entry_point >= dip->at_low_pc &&
objfile->ei.entry_point < dip->at_high_pc)
{
- objfile->ei.entry_file_lowpc = dip->at_low_pc;
- objfile->ei.entry_file_highpc = dip->at_high_pc;
+ objfile->ei.deprecated_entry_file_lowpc = dip->at_low_pc;
+ objfile->ei.deprecated_entry_file_highpc = dip->at_high_pc;
}
set_cu_language (dip);
if (dip->at_producer != NULL)
diff --git a/gdb/frame.c b/gdb/frame.c
index 31cb6c5..6e01026 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -1844,8 +1844,9 @@ get_prev_frame (struct frame_info *this_frame)
checking for "main" in the minimal symbols. With that fixed
asm-source tests now stop in "main" instead of halting the
backtrace in wierd and wonderful ways somewhere inside the entry
- file. Suspect that inside_entry_file and inside_entry_func tests
- were added to work around that (now fixed) case. */
+ file. Suspect that deprecated_inside_entry_file and
+ inside_entry_func tests were added to work around that (now
+ fixed) case. */
/* NOTE: cagney/2003-07-15: danielj (if I'm reading it right)
suggested having the inside_entry_func test use the
inside_main_func msymbol trick (along with entry_point_address I
@@ -1884,7 +1885,6 @@ get_prev_frame (struct frame_info *this_frame)
}
this_frame->prev_p = 1;
-#if 0
/* If we're inside the entry file, it isn't valid. Don't apply this
test to a dummy frame - dummy frame PC's typically land in the
entry file. Don't apply this test to the sentinel frame.
@@ -1896,17 +1896,19 @@ get_prev_frame (struct frame_info *this_frame)
/* NOTE: cagney/2003-01-10: If there is a way of disabling this test
then it should probably be moved to before the ->prev_p test,
above. */
- /* NOTE: vinschen/2003-04-01: Disabled. It turns out that the call to
- inside_entry_file destroys a meaningful backtrace under some
- conditions. E. g. the backtrace tests in the asm-source testcase
- are broken for some targets. In this test the functions are all
- implemented as part of one file and the testcase is not necessarily
- linked with a start file (depending on the target). What happens is,
- that the first frame is printed normaly and following frames are
- treated as being inside the enttry file then. This way, only the
- #0 frame is printed in the backtrace output. */
- if (this_frame->type != DUMMY_FRAME && this_frame->level >= 0
- && inside_entry_file (get_frame_pc (this_frame)))
+ /* NOTE: vinschen/2003-04-01: Disabled. It turns out that the call
+ to deprecated_inside_entry_file destroys a meaningful backtrace
+ under some conditions. E. g. the backtrace tests in the
+ asm-source testcase are broken for some targets. In this test
+ the functions are all implemented as part of one file and the
+ testcase is not necessarily linked with a start file (depending
+ on the target). What happens is, that the first frame is printed
+ normaly and following frames are treated as being inside the
+ enttry file then. This way, only the #0 frame is printed in the
+ backtrace output. */
+ if (0
+ && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
+ && deprecated_inside_entry_file (get_frame_pc (this_frame)))
{
if (frame_debug)
{
@@ -1916,7 +1918,6 @@ get_prev_frame (struct frame_info *this_frame)
}
return NULL;
}
-#endif
/* If any of the old frame initialization methods are around, use
the legacy get_prev_frame method. */
diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c
index e7cd699..fe53e56 100644
--- a/gdb/frv-tdep.c
+++ b/gdb/frv-tdep.c
@@ -966,7 +966,7 @@ frv_frame_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (inside_entry_file (func))
+ if (deprecated_inside_entry_file (func))
return;
/* Check if the stack is empty. */
diff --git a/gdb/i386-interix-tdep.c b/gdb/i386-interix-tdep.c
index 2fced72..6902404 100644
--- a/gdb/i386-interix-tdep.c
+++ b/gdb/i386-interix-tdep.c
@@ -128,8 +128,8 @@ i386_interix_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
it'll make the correct test. */
return ((get_frame_type (thisframe) == SIGTRAMP_FRAME)
|| (chain != 0
- && !inside_entry_file (read_memory_integer
- (thisframe->frame + 4, 4))));
+ && !deprecated_inside_entry_file (read_memory_integer
+ (thisframe->frame + 4, 4))));
}
/* We want to find the previous frame, which on Interix is tricky when
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
index dc51699..12a91c2 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
@@ -832,7 +832,7 @@ m32r_frame_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (inside_entry_file (func))
+ if (deprecated_inside_entry_file (func))
return;
/* Check if the stack is empty. */
diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c
index bc46f17..0f3ed0e 100644
--- a/gdb/m68hc11-tdep.c
+++ b/gdb/m68hc11-tdep.c
@@ -896,7 +896,7 @@ m68hc11_frame_this_id (struct frame_info *next_frame,
/* This is meant to halt the backtrace at "_start". Make sure we
don't halt it at a generic dummy frame. */
- if (inside_entry_file (func))
+ if (deprecated_inside_entry_file (func))
return;
/* Hopefully the prologue analysis either correctly determined the
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 453b983..00c7ba6 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -3627,8 +3627,8 @@ parse_partial_symbols (struct objfile *objfile)
if (objfile->ei.entry_point >= save_pst->textlow &&
objfile->ei.entry_point < save_pst->texthigh)
{
- objfile->ei.entry_file_lowpc = save_pst->textlow;
- objfile->ei.entry_file_highpc = save_pst->texthigh;
+ objfile->ei.deprecated_entry_file_lowpc = save_pst->textlow;
+ objfile->ei.deprecated_entry_file_highpc = save_pst->texthigh;
}
/* The objfile has its functions reordered if this partial symbol
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 9e391c0..f49d3ba 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -2623,7 +2623,7 @@ mips_frame_chain (struct frame_info *frame)
CORE_ADDR tmp;
CORE_ADDR saved_pc = DEPRECATED_FRAME_SAVED_PC (frame);
- if (saved_pc == 0 || inside_entry_file (saved_pc))
+ if (saved_pc == 0 || deprecated_inside_entry_file (saved_pc))
return 0;
/* Check if the PC is inside a call stub. If it is, fetch the
diff --git a/gdb/mipsread.c b/gdb/mipsread.c
index 293eaed..e40bf54 100644
--- a/gdb/mipsread.c
+++ b/gdb/mipsread.c
@@ -113,15 +113,15 @@ mipscoff_symfile_read (struct objfile *objfile, int mainline)
if (mainline
&& objfile->ei.entry_point != INVALID_ENTRY_POINT
- && objfile->ei.entry_file_lowpc == INVALID_ENTRY_LOWPC)
+ && objfile->ei.deprecated_entry_file_lowpc == INVALID_ENTRY_LOWPC)
{
struct minimal_symbol *m;
m = lookup_minimal_symbol_by_pc (objfile->ei.entry_point);
if (m && DEPRECATED_SYMBOL_NAME (m + 1))
{
- objfile->ei.entry_file_lowpc = SYMBOL_VALUE_ADDRESS (m);
- objfile->ei.entry_file_highpc = SYMBOL_VALUE_ADDRESS (m + 1);
+ objfile->ei.deprecated_entry_file_lowpc = SYMBOL_VALUE_ADDRESS (m);
+ objfile->ei.deprecated_entry_file_highpc = SYMBOL_VALUE_ADDRESS (m + 1);
}
}
diff --git a/gdb/ns32k-tdep.c b/gdb/ns32k-tdep.c
index 5fd95fc..f880bd3 100644
--- a/gdb/ns32k-tdep.c
+++ b/gdb/ns32k-tdep.c
@@ -309,7 +309,7 @@ ns32k_frame_chain (struct frame_info *frame)
FP value, and that address is saved at the previous FP value as a
4-byte word. */
- if (inside_entry_file (get_frame_pc (frame)))
+ if (deprecated_inside_entry_file (get_frame_pc (frame)))
return 0;
return (read_memory_integer (get_frame_base (frame), 4));
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index c62c9a0..0037372 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -787,10 +787,10 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
objfile->ei.entry_func_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
- if (objfile->ei.entry_file_lowpc != INVALID_ENTRY_LOWPC)
+ if (objfile->ei.deprecated_entry_file_lowpc != INVALID_ENTRY_LOWPC)
{
- objfile->ei.entry_file_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
- objfile->ei.entry_file_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ objfile->ei.deprecated_entry_file_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+ objfile->ei.deprecated_entry_file_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
if (objfile->ei.main_func_lowpc != INVALID_ENTRY_LOWPC)
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index c52b95f..f94afd1 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -43,14 +43,28 @@ struct symtab;
to the user executable's recorded entry point, as if the call had been made
directly by the kernel.
- The traditional gdb method of using this info is to use the recorded entry
- point to set the variables entry_file_lowpc and entry_file_highpc from
- the debugging information, where these values are the starting address
- (inclusive) and ending address (exclusive) of the instruction space in the
- executable which correspond to the "startup file", I.E. crt0.o in most
- cases. This file is assumed to be a startup file and frames with pc's
- inside it are treated as nonexistent. Setting these variables is necessary
- so that backtraces do not fly off the bottom of the stack.
+ The traditional gdb method of using this info is to use the
+ recorded entry point to set the variables
+ deprecated_entry_file_lowpc and deprecated_entry_file_highpc from
+ the debugging information, where these values are the starting
+ address (inclusive) and ending address (exclusive) of the
+ instruction space in the executable which correspond to the
+ "startup file", I.E. crt0.o in most cases. This file is assumed to
+ be a startup file and frames with pc's inside it are treated as
+ nonexistent. Setting these variables is necessary so that
+ backtraces do not fly off the bottom of the stack.
+
+ NOTE: cagney/2003-09-09: It turns out that this "traditional"
+ method doesn't work. Corinna writes: ``It turns out that the call
+ to deprecated_inside_entry_file destroys a meaningful backtrace
+ under some conditions. E. g. the backtrace tests in the asm-source
+ testcase are broken for some targets. In this test the functions
+ are all implemented as part of one file and the testcase is not
+ necessarily linked with a start file (depending on the target).
+ What happens is, that the first frame is printed normaly and
+ following frames are treated as being inside the enttry file then.
+ This way, only the #0 frame is printed in the backtrace output.''
+ Ref "frame.c" "NOTE: vinschen/2003-04-01".
Gdb also supports an alternate method to avoid running off the bottom
of the stack.
@@ -116,8 +130,8 @@ struct entry_info
/* Start (inclusive) and end (exclusive) of object file containing the
entry point. */
- CORE_ADDR entry_file_lowpc;
- CORE_ADDR entry_file_highpc;
+ CORE_ADDR deprecated_entry_file_lowpc;
+ CORE_ADDR deprecated_entry_file_highpc;
/* Start (inclusive) and end (exclusive) of the user code main() function. */
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 6d348db..8bce98c 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -1803,7 +1803,7 @@ rs6000_frame_chain (struct frame_info *thisframe)
frame. */
return read_memory_addr (get_frame_base (thisframe), wordsize);
- if (inside_entry_file (get_frame_pc (thisframe))
+ if (deprecated_inside_entry_file (get_frame_pc (thisframe))
|| get_frame_pc (thisframe) == entry_point_address ())
return 0;
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index 578076f..04adbb8 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -487,7 +487,8 @@ sh_frame_chain (struct frame_info *frame)
get_frame_base (frame),
get_frame_base (frame)))
return get_frame_base (frame); /* dummy frame same as caller's frame */
- if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame)))
+ if (get_frame_pc (frame)
+ && !deprecated_inside_entry_file (get_frame_pc (frame)))
return read_memory_integer (get_frame_base (frame)
+ get_frame_extra_info (frame)->f_offset, 4);
else
diff --git a/gdb/sh64-tdep.c b/gdb/sh64-tdep.c
index e93fb23..0a3fd53 100644
--- a/gdb/sh64-tdep.c
+++ b/gdb/sh64-tdep.c
@@ -745,7 +745,8 @@ sh64_frame_chain (struct frame_info *frame)
get_frame_base (frame),
get_frame_base (frame)))
return get_frame_base (frame); /* dummy frame same as caller's frame */
- if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame)))
+ if (get_frame_pc (frame)
+ && !deprecated_inside_entry_file (get_frame_pc (frame)))
{
int media_mode = pc_is_isa32 (get_frame_pc (frame));
int size;
diff --git a/gdb/symfile.c b/gdb/symfile.c
index 02b2c36..e2fbc2a 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -327,8 +327,8 @@ init_entry_point_info (struct objfile *objfile)
/* Examination of non-executable.o files. Short-circuit this stuff. */
objfile->ei.entry_point = INVALID_ENTRY_POINT;
}
- objfile->ei.entry_file_lowpc = INVALID_ENTRY_LOWPC;
- objfile->ei.entry_file_highpc = INVALID_ENTRY_HIGHPC;
+ objfile->ei.deprecated_entry_file_lowpc = INVALID_ENTRY_LOWPC;
+ objfile->ei.deprecated_entry_file_highpc = INVALID_ENTRY_HIGHPC;
objfile->ei.entry_func_lowpc = INVALID_ENTRY_LOWPC;
objfile->ei.entry_func_highpc = INVALID_ENTRY_HIGHPC;
objfile->ei.main_func_lowpc = INVALID_ENTRY_LOWPC;
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
index 9a16730..ed14225 100644
--- a/gdb/vax-tdep.c
+++ b/gdb/vax-tdep.c
@@ -188,7 +188,7 @@ vax_frame_chain (struct frame_info *frame)
{
/* In the case of the VAX, the frame's nominal address is the FP value,
and 12 bytes later comes the saved previous FP value as a 4-byte word. */
- if (inside_entry_file (get_frame_pc (frame)))
+ if (deprecated_inside_entry_file (get_frame_pc (frame)))
return (0);
return (read_memory_integer (get_frame_base (frame) + 12, 4));