* i386-tdep.c (i386_frame_saved_pc): New function.
* config/i386/tm-i386.h (FRAME_SAVED_PC): Redefine in terms of i386_frame_saved_pc. (i386_frame_saved_pc): New prototype.
This commit is contained in:
parent
96f37af640
commit
0d17c81d95
3 changed files with 25 additions and 8 deletions
|
@ -1,5 +1,10 @@
|
|||
2001-05-09 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* i386-tdep.c (i386_frame_saved_pc): New function.
|
||||
* config/i386/tm-i386.h (FRAME_SAVED_PC): Redefine in terms of
|
||||
i386_frame_saved_pc.
|
||||
(i386_frame_saved_pc): New prototype.
|
||||
|
||||
* i386-tdep.c (i386_register_virtual_type): New function.
|
||||
(i386_register_convertible): New function.
|
||||
* config/i386/tm-i386.h (REGISTER_VIRTUAL_TYPE): Redefine in terms
|
||||
|
|
|
@ -330,15 +330,10 @@ extern CORE_ADDR i386_frame_chain (struct frame_info *frame);
|
|||
i386_frameless_function_invocation (frame)
|
||||
extern int i386_frameless_function_invocation (struct frame_info *frame);
|
||||
|
||||
/* Saved Pc. Get it from sigcontext if within sigtramp. */
|
||||
/* Return the saved program counter for FRAME. */
|
||||
|
||||
#define FRAME_SAVED_PC(FRAME) \
|
||||
(((FRAME)->signal_handler_caller \
|
||||
? sigtramp_saved_pc (FRAME) \
|
||||
: read_memory_unsigned_integer ((FRAME)->frame + 4, 4)) \
|
||||
)
|
||||
|
||||
extern CORE_ADDR sigtramp_saved_pc (struct frame_info *);
|
||||
#define FRAME_SAVED_PC(frame) i386_frame_saved_pc (frame)
|
||||
extern CORE_ADDR i386_frame_saved_pc (struct frame_info *frame);
|
||||
|
||||
#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
|
||||
|
||||
|
|
|
@ -378,6 +378,23 @@ i386_frameless_function_invocation (struct frame_info *frame)
|
|||
return frameless_look_for_prologue (frame);
|
||||
}
|
||||
|
||||
/* Return the saved program counter for FRAME. */
|
||||
|
||||
CORE_ADDR
|
||||
i386_frame_saved_pc (struct frame_info *frame)
|
||||
{
|
||||
/* FIXME: kettenis/2001-05-09: Conditionalizing the next bit of code
|
||||
on SIGCONTEXT_PC_OFFSET and I386V4_SIGTRAMP_SAVED_PC should be
|
||||
considered a temporary hack. I plan to come up with something
|
||||
better when we go multi-arch. */
|
||||
#if defined (SIGCONTEXT_PC_OFFSET) || defined (I386V4_SIGTRAMP_SAVED_PC)
|
||||
if (frame->signal_handler_caller)
|
||||
return sigtramp_saved_pc (frame);
|
||||
#endif
|
||||
|
||||
return read_memory_unsigned_integer (frame->frame + 4, 4);
|
||||
}
|
||||
|
||||
/* Immediately after a function call, return the saved pc. */
|
||||
|
||||
CORE_ADDR
|
||||
|
|
Loading…
Add table
Reference in a new issue