mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-28 01:50:48 +00:00
2002-11-18 Andrew Cagney <ac131313@redhat.com>
* frame.h (enum frame_type): Define. (get_frame_type): Declare. (struct frame_info): Add field `type'. Delete field signal_handler_caller. (deprecated_set_frame_signal_handler_caller): Declare. * frame.c (get_frame_type): New function. (deprecated_set_frame_type): New function. (create_new_frame): Set the frame's type. (get_prev_frame): Similar. * sparc-tdep.c: Use get_frame_type instead of signal_handler_caller. * s390-tdep.c: Ditto. * m68klinux-nat.c: Ditto. * ns32k-tdep.c: Ditto. * x86-64-linux-tdep.c: Ditto. * vax-tdep.c: Ditto. * rs6000-tdep.c: Ditto. * ppc-linux-tdep.c: Ditto. * i386-interix-tdep.c: Ditto. * mips-tdep.c: Ditto. * m68k-tdep.c: Ditto. * hppa-tdep.c: Ditto. * ia64-tdep.c: Ditto. * cris-tdep.c: Ditto. * arm-tdep.c: Ditto. * alpha-tdep.c: Ditto. * i386-tdep.c: Ditto. * stack.c: Ditto. * ada-lang.c: Ditto. * blockframe.c: Update. * i386-interix-tdep.c (i386_interix_back_one_frame): Use deprecated_set_frame_type instead of signal_handler_caller. * ppc-linux-tdep.c (ppc_linux_init_extra_frame_info): Ditto. * rs6000-tdep.c (rs6000_init_extra_frame_info): Ditto. * breakpoint.h: Delete FIXME suggesting get_frame_type. Index: tui/ChangeLog 2002-11-18 Andrew Cagney <ac131313@redhat.com> * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of signal_handler_caller.
This commit is contained in:
@@ -1117,19 +1117,24 @@ arm_init_extra_frame_info (int fromleaf, struct frame_info *fi)
|
||||
+ fi->next->extra_info->framesize);
|
||||
|
||||
/* Determine whether or not we're in a sigtramp frame.
|
||||
Unfortunately, it isn't sufficient to test
|
||||
fi->signal_handler_caller because this value is sometimes set
|
||||
after invoking INIT_EXTRA_FRAME_INFO. So we test *both*
|
||||
fi->signal_handler_caller and PC_IN_SIGTRAMP to determine if we
|
||||
need to use the sigcontext addresses for the saved registers.
|
||||
Unfortunately, it isn't sufficient to test (get_frame_type (fi)
|
||||
== SIGTRAMP_FRAME) because this value is sometimes set after
|
||||
invoking INIT_EXTRA_FRAME_INFO. So we test *both*
|
||||
(get_frame_type (fi) == SIGTRAMP_FRAME) and PC_IN_SIGTRAMP to
|
||||
determine if we need to use the sigcontext addresses for the
|
||||
saved registers.
|
||||
|
||||
Note: If an ARM PC_IN_SIGTRAMP method ever needs to compare
|
||||
against the name of the function, the code below will have to be
|
||||
changed to first fetch the name of the function and then pass
|
||||
this name to PC_IN_SIGTRAMP. */
|
||||
|
||||
/* FIXME: cagney/2002-11-18: This problem will go away once
|
||||
frame.c:get_prev_frame() is modified to set the frame's type
|
||||
before calling functions like this. */
|
||||
|
||||
if (SIGCONTEXT_REGISTER_ADDRESS_P ()
|
||||
&& (fi->signal_handler_caller || PC_IN_SIGTRAMP (fi->pc, (char *)0)))
|
||||
&& ((get_frame_type (fi) == SIGTRAMP_FRAME) || PC_IN_SIGTRAMP (fi->pc, (char *)0)))
|
||||
{
|
||||
for (reg = 0; reg < NUM_REGS; reg++)
|
||||
fi->saved_regs[reg] = SIGCONTEXT_REGISTER_ADDRESS (sp, fi->pc, reg);
|
||||
|
||||
Reference in New Issue
Block a user