* i386-tdep.c (i386_push_dummy_frame): Don't write back the
authorMark Kettenis <kettenis@gnu.org>
Sat, 29 Dec 2001 19:38:16 +0000 (19:38 +0000)
committerMark Kettenis <kettenis@gnu.org>
Sat, 29 Dec 2001 19:38:16 +0000 (19:38 +0000)
modified frame pointer until the old frame pointer has been saved.

gdb/ChangeLog
gdb/i386-tdep.c

index ccbdf4308df095dd2b7f3cc0611c21e6a7655cb6..5e6ed003a9a96e4216c82e080a1b9e7a9a6b4531 100644 (file)
@@ -1,3 +1,8 @@
+2001-12-29  Mark Kettenis  <kettenis@gnu.org>
+
+       * 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  <ac131313@redhat.com>
 
        * arch-utils.c (initialize_current_architecture): Test byte_order
index 0a1472d8728893cbd5215710b96675e13bff29a0..524a6ff558cd0c74462720cfd4759f800edd1aa9 100644 (file)
@@ -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
This page took 0.037063 seconds and 4 git commands to generate.