From: Mark Kettenis Date: Sat, 29 Dec 2001 19:38:16 +0000 (+0000) Subject: * i386-tdep.c (i386_push_dummy_frame): Don't write back the X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec80a8ea8b066ab117939b77a6539f85de19b85f;p=binutils-gdb.git * i386-tdep.c (i386_push_dummy_frame): Don't write back the modified frame pointer until the old frame pointer has been saved. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ccbdf4308df..5e6ed003a9a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2001-12-29 Mark Kettenis + + * i386-tdep.c (i386_push_dummy_frame): Don't write back the + modified frame pointer until the old frame pointer has been saved. + 2001-12-30 Andrew Cagney * arch-utils.c (initialize_current_architecture): Test byte_order diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 0a1472d8728..524a6ff558c 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -769,18 +769,20 @@ void i386_push_dummy_frame (void) { CORE_ADDR sp = read_register (SP_REGNUM); + CORE_ADDR fp; int regnum; char regbuf[MAX_REGISTER_RAW_SIZE]; sp = push_word (sp, read_register (PC_REGNUM)); sp = push_word (sp, read_register (FP_REGNUM)); - write_register (FP_REGNUM, sp); + fp = sp; for (regnum = 0; regnum < NUM_REGS; regnum++) { read_register_gen (regnum, regbuf); sp = push_bytes (sp, regbuf, REGISTER_RAW_SIZE (regnum)); } write_register (SP_REGNUM, sp); + write_register (FP_REGNUM, fp); } /* Insert the (relative) function address into the call sequence