OSDN Git Service

2000-03-08 Mark Kettenis <kettenis@gnu.org>
authorkettenis <kettenis>
Wed, 8 Mar 2000 22:34:18 +0000 (22:34 +0000)
committerkettenis <kettenis>
Wed, 8 Mar 2000 22:34:18 +0000 (22:34 +0000)
* i386-tdep.c (i386_linux_saved_pc_after_call): New function.
* config/i386/tm-linux.h (SAVED_PC_AFTER_CALL): Define to call
i386_linux_saved_pc_after_call.

gdb/ChangeLog
gdb/config/i386/tm-linux.h
gdb/i386-tdep.c

index 75e29b1..71b307d 100644 (file)
@@ -1,3 +1,9 @@
+2000-03-08  Mark Kettenis  <kettenis@gnu.org>
+
+       * i386-tdep.c (i386_linux_saved_pc_after_call): New function.
+       * config/i386/tm-linux.h (SAVED_PC_AFTER_CALL): Define to call
+       i386_linux_saved_pc_after_call.
+
 2000-03-06  Jim Blandy  <jimb@redhat.com>
 
        From Tom Tromey <tromey@cygnus.com> and Keith Seitz <?>:
index 391d5c0..3c557f0 100644 (file)
@@ -154,6 +154,10 @@ extern CORE_ADDR i386_linux_sigtramp_saved_pc (struct frame_info *);
 
 extern CORE_ADDR i386_linux_sigtramp_saved_sp (struct frame_info *);
 
+#undef SAVED_PC_AFTER_CALL
+#define SAVED_PC_AFTER_CALL(frame) i386_linux_saved_pc_after_call (frame)
+extern CORE_ADDR i386_linux_saved_pc_after_call (struct frame_info *);
+
 /* When we call a function in a shared library, and the PLT sends us
    into the dynamic linker to find the function's real address, we
    need to skip over the dynamic linker call.  This function decides
index 10011f6..e940e2f 100644 (file)
@@ -1024,6 +1024,17 @@ i386_linux_sigtramp_saved_sp (struct frame_info *frame)
   return read_memory_integer (addr + LINUX_SIGCONTEXT_SP_OFFSET, 4);
 }
 
+/* Immediately after a function call, return the saved pc.  */
+
+CORE_ADDR
+i386_linux_saved_pc_after_call (struct frame_info *frame)
+{
+  if (frame->signal_handler_caller)
+    return i386_linux_sigtramp_saved_pc (frame);
+
+  return read_memory_integer (read_register (SP_REGNUM), 4);
+}
+
 #endif /* I386_LINUX_SIGTRAMP */
 
 #ifdef STATIC_TRANSFORM_NAME