* linux-x86-low.c (i386_emit_prologue): Save %ebx.
authorStan Shebs <shebs@codesourcery.com>
Thu, 8 Sep 2011 22:38:29 +0000 (22:38 +0000)
committerStan Shebs <shebs@codesourcery.com>
Thu, 8 Sep 2011 22:38:29 +0000 (22:38 +0000)
(i386_emit_epilogue): Restore %ebx.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-x86-low.c

index 8fd3f2a8a60003e74071db33eaea14dab8d38ae9..91fee1a6b52d726a4a0711f97e3e9d0f2800887b 100644 (file)
@@ -1,3 +1,8 @@
+2011-09-08  Stan Shebs  <stan@codesourcery.com>
+
+       * linux-x86-low.c (i386_emit_prologue): Save %ebx.
+       (i386_emit_epilogue): Restore %ebx.
+
 2011-08-31  Jie Zhang  <jzhang918@gmail.com>
 
        * server.c (step_thread): Remove definition.
index dd69379573089553066c5a58d04c35ffc86388ac..8a3a597ebf64b20064fde6232b3101f4861ad76b 100644 (file)
@@ -2035,7 +2035,8 @@ i386_emit_prologue (void)
 {
   EMIT_ASM32 (i386_prologue,
            "push %ebp\n\t"
-           "mov %esp,%ebp");
+           "mov %esp,%ebp\n\t"
+           "push %ebx");
   /* At this point, the raw regs base address is at 8(%ebp), and the
      value pointer is at 12(%ebp).  */
 }
@@ -2048,6 +2049,7 @@ i386_emit_epilogue (void)
            "mov %eax,(%ecx)\n\t"
            "mov %ebx,0x4(%ecx)\n\t"
            "xor %eax,%eax\n\t"
+           "pop %ebx\n\t"
            "pop %ebp\n\t"
            "ret");
 }