* i386-tdep.c (i386_frame_chain): New function.

* config/i386/tm-i386.h (FRAME_CHAIN): Redefine in terms of
i386_frame_chain.
(i386_frame_chain): New prototype.
This commit is contained in:
Mark Kettenis 2001-04-16 13:03:15 +00:00
parent d4424adaef
commit c833a37e77
3 changed files with 28 additions and 10 deletions

View File

@ -1,3 +1,10 @@
2001-04-16 Mark Kettenis <kettenis@gnu.org>
* i386-tdep.c (i386_frame_chain): New function.
* config/i386/tm-i386.h (FRAME_CHAIN): Redefine in terms of
i386_frame_chain.
(i386_frame_chain): New prototype.
2001-04-14 J.T. Conklin <jtc@redback.com>
* target.h (target_ops): Removed to_core_file_to_sym_file vector

View File

@ -323,17 +323,12 @@ extern CORE_ADDR i386_extract_struct_value_address (char *regbuf);
from the sigcontext structure which is pushed by the kernel on the
user stack, along with a pointer to it. */
/* FRAME_CHAIN takes a frame's nominal address and produces the frame's
chain-pointer.
In the case of the i386, the frame's nominal address
is the address of a 4-byte word containing the calling frame's address. */
/* Return the chain-pointer for FRAME. In the case of the i386, the
frame's nominal address is the address of a 4-byte word containing
the calling frame's address. */
#define FRAME_CHAIN(thisframe) \
((thisframe)->signal_handler_caller \
? (thisframe)->frame \
: (!inside_entry_file ((thisframe)->pc) \
? read_memory_unsigned_integer ((thisframe)->frame, 4) \
: 0))
#define FRAME_CHAIN(frame) i386_frame_chain ((frame))
extern CORE_ADDR i386_frame_chain (struct frame_info *frame);
/* A macro that tells us whether the function invocation represented
by FI does not have a frame on the stack associated with it. If it

View File

@ -349,6 +349,22 @@ i386_get_frame_setup (CORE_ADDR pc)
return (-1);
}
/* Return the chain-pointer for FRAME. In the case of the i386, the
frame's nominal address is the address of a 4-byte word containing
the calling frame's address. */
CORE_ADDR
i386_frame_chain (struct frame_info *frame)
{
if (frame->signal_handler_caller)
return frame->frame;
if (! inside_entry_file (frame->pc))
return read_memory_unsigned_integer (frame->frame, 4);
return 0;
}
/* Return number of args passed to a frame.
Can return -1, meaning no way to tell. */