2004-04-30 Andrew Cagney <cagney@redhat.com>
* defs.h (deprecated_inside_entry_file): Delete declaration. * blockframe.c (deprecated_inside_entry_file): Delete function. (legacy_frame_chain_valid): Delete call. * sh64-tdep.c (sh64_frame_chain): Delete call. * objfiles.h: Update comments. * i386-interix-tdep.c (i386_interix_frame_chain_valid): Delete call. * frame.c (get_prev_frame): Delete call, update comments.
This commit is contained in:
parent
283f90a7d0
commit
2f72f85088
7 changed files with 19 additions and 79 deletions
|
@ -1,3 +1,14 @@
|
|||
2004-04-30 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* defs.h (deprecated_inside_entry_file): Delete declaration.
|
||||
* blockframe.c (deprecated_inside_entry_file): Delete function.
|
||||
(legacy_frame_chain_valid): Delete call.
|
||||
* sh64-tdep.c (sh64_frame_chain): Delete call.
|
||||
* objfiles.h: Update comments.
|
||||
* i386-interix-tdep.c (i386_interix_frame_chain_valid): Delete
|
||||
call.
|
||||
* frame.c (get_prev_frame): Delete call, update comments.
|
||||
|
||||
2004-04-30 Brian Ford <ford@vss.fsi.com>
|
||||
|
||||
* MAINTAINERS (Write After Approval): Add myself.
|
||||
|
|
|
@ -43,34 +43,6 @@
|
|||
|
||||
void _initialize_blockframe (void);
|
||||
|
||||
/* Is ADDR inside the startup file? Note that if your machine has a
|
||||
way to detect the bottom of the stack, there is no need to call
|
||||
this function from DEPRECATED_FRAME_CHAIN_VALID; the reason for
|
||||
doing so is that some machines have no way of detecting bottom of
|
||||
stack.
|
||||
|
||||
A PC of zero is always considered to be the bottom of the stack. */
|
||||
|
||||
int
|
||||
deprecated_inside_entry_file (CORE_ADDR addr)
|
||||
{
|
||||
if (addr == 0)
|
||||
return 1;
|
||||
if (symfile_objfile == 0)
|
||||
return 0;
|
||||
if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT
|
||||
|| CALL_DUMMY_LOCATION == AT_SYMBOL)
|
||||
{
|
||||
/* Do not stop backtracing if the pc is in the call dummy
|
||||
at the entry point. */
|
||||
/* FIXME: Won't always work with zeros for the last two arguments */
|
||||
if (DEPRECATED_PC_IN_CALL_DUMMY (addr, 0, 0))
|
||||
return 0;
|
||||
}
|
||||
return (addr >= symfile_objfile->ei.deprecated_entry_file_lowpc &&
|
||||
addr < symfile_objfile->ei.deprecated_entry_file_highpc);
|
||||
}
|
||||
|
||||
/* Test whether PC is in the range of addresses that corresponds to
|
||||
the "main" function. */
|
||||
|
||||
|
@ -622,12 +594,5 @@ legacy_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi)
|
|||
if (legacy_inside_entry_func (get_frame_pc (fi)))
|
||||
return 0;
|
||||
|
||||
/* If we're inside the entry file, it isn't valid. */
|
||||
/* 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 (deprecated_inside_entry_file (frame_pc_unwind (fi)))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -327,8 +327,6 @@ struct frame_info;
|
|||
|
||||
extern int inside_entry_func (struct frame_info *this_frame);
|
||||
|
||||
extern int deprecated_inside_entry_file (CORE_ADDR addr);
|
||||
|
||||
extern int inside_main_func (CORE_ADDR pc);
|
||||
|
||||
/* From utils.c */
|
||||
|
|
40
gdb/frame.c
40
gdb/frame.c
|
@ -1954,13 +1954,12 @@ get_prev_frame (struct frame_info *this_frame)
|
|||
be allowed to unwind. */
|
||||
/* NOTE: cagney/2003-02-25: Don't enable until someone has found
|
||||
hard evidence that this is needed. */
|
||||
/* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func() - wasn't
|
||||
checking for "main" in the minimal symbols. With that fixed
|
||||
asm-source tests now stop in "main" instead of halting the
|
||||
/* NOTE: cagney/2003-07-07: Fixed a bug in inside_main_func() -
|
||||
wasn't checking for "main" in the minimal symbols. With that
|
||||
fixed asm-source tests now stop in "main" instead of halting the
|
||||
backtrace in weird and wonderful ways somewhere inside the entry
|
||||
file. Suspect that deprecated_inside_entry_file() and
|
||||
inside_entry_func() tests were added to work around that (now
|
||||
fixed) case. */
|
||||
file. Suspect that tests for inside the entry file/func 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()
|
||||
|
@ -1981,35 +1980,6 @@ get_prev_frame (struct frame_info *this_frame)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* If we're inside the entry file, it isn't valid. Don't apply this
|
||||
test to a dummy frame - dummy frame PCs typically land in the
|
||||
entry file. Don't apply this test to the sentinel frame.
|
||||
Sentinel frames should always be allowed to unwind. */
|
||||
/* 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. */
|
||||
/* 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 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
|
||||
normally and following frames are treated as being inside the
|
||||
entry 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)))
|
||||
{
|
||||
frame_debug_got_null_frame (gdb_stdlog, this_frame, "inside entry file");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return get_prev_frame_1 (this_frame);
|
||||
}
|
||||
|
||||
|
|
|
@ -126,10 +126,7 @@ i386_interix_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
|
|||
be a signal handler caller). If we're dealing with a signal
|
||||
handler caller, this will return valid, which is fine. If not,
|
||||
it'll make the correct test. */
|
||||
return ((get_frame_type (thisframe) == SIGTRAMP_FRAME)
|
||||
|| (chain != 0
|
||||
&& !deprecated_inside_entry_file (read_memory_integer
|
||||
(thisframe->frame + 4, 4))));
|
||||
return ((get_frame_type (thisframe) == SIGTRAMP_FRAME) || chain != 0);
|
||||
}
|
||||
|
||||
/* We want to find the previous frame, which on Interix is tricky when
|
||||
|
|
|
@ -57,7 +57,7 @@ struct objfile_data;
|
|||
|
||||
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
|
||||
to test for "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
|
||||
|
|
|
@ -740,8 +740,7 @@ 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)
|
||||
&& !deprecated_inside_entry_file (get_frame_pc (frame)))
|
||||
if (get_frame_pc (frame))
|
||||
{
|
||||
int media_mode = pc_is_isa32 (get_frame_pc (frame));
|
||||
int size;
|
||||
|
|
Loading…
Reference in a new issue