2002-11-15 Andrew Cagney <cagney@redhat.com>
authorAndrew Cagney <cagney@redhat.com>
Fri, 15 Nov 2002 23:24:21 +0000 (23:24 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 15 Nov 2002 23:24:21 +0000 (23:24 +0000)
* frame.h (sigtramp_saved_pc): Delete declaration.
* blockframe.c (sigtramp_saved_pc): Delete function.
* ns32k-tdep.c (ns32k_sigtramp_saved_pc): New function.
(ns32k_frame_saved_pc): Call ns32k_sigtramp_saved_pc.
* vax-tdep.c (vax_sigtramp_saved_pc): New function.
(vax_frame_saved_pc): Call vax_sigtramp_saved_pc.

gdb/ChangeLog
gdb/blockframe.c
gdb/frame.h
gdb/ns32k-tdep.c
gdb/vax-tdep.c

index 2fbb8fdb37abd42ad44a5407fa331349e9fd300e..1117e61e01f8827a68e9e0a5260205264d4d036d 100644 (file)
@@ -1,3 +1,12 @@
+2002-11-15  Andrew Cagney  <cagney@redhat.com>
+
+       * frame.h (sigtramp_saved_pc): Delete declaration.
+       * blockframe.c (sigtramp_saved_pc): Delete function.
+       * ns32k-tdep.c (ns32k_sigtramp_saved_pc): New function.
+       (ns32k_frame_saved_pc): Call ns32k_sigtramp_saved_pc.
+       * vax-tdep.c (vax_sigtramp_saved_pc): New function.
+       (vax_frame_saved_pc): Call vax_sigtramp_saved_pc.
+
 2002-11-15  Andrew Cagney  <ac131313@redhat.com>
 
        * frame.c (frame_pc_unwind): New function.
index 3e70b2a495d85931de241c4934ebc1cb2d8d91a0..9a519a49beb0a84423f8cb0757f1d202cd965e8e 100644 (file)
@@ -660,35 +660,6 @@ find_frame_addr_in_frame_chain (CORE_ADDR frame_addr)
     }
 }
 
-#ifdef SIGCONTEXT_PC_OFFSET
-/* Get saved user PC for sigtramp from sigcontext for BSD style sigtramp.  */
-
-CORE_ADDR
-sigtramp_saved_pc (struct frame_info *frame)
-{
-  CORE_ADDR sigcontext_addr;
-  char *buf;
-  int ptrbytes = TYPE_LENGTH (builtin_type_void_func_ptr);
-  int sigcontext_offs = (2 * TARGET_INT_BIT) / TARGET_CHAR_BIT;
-
-  buf = alloca (ptrbytes);
-  /* Get sigcontext address, it is the third parameter on the stack.  */
-  if (frame->next)
-    sigcontext_addr = read_memory_typed_address
-      (FRAME_ARGS_ADDRESS (frame->next) + FRAME_ARGS_SKIP + sigcontext_offs,
-       builtin_type_void_data_ptr);
-  else
-    sigcontext_addr = read_memory_typed_address
-      (read_register (SP_REGNUM) + sigcontext_offs, builtin_type_void_data_ptr);
-
-  /* Don't cause a memory_error when accessing sigcontext in case the stack
-     layout has changed or the stack is corrupt.  */
-  target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET, buf, ptrbytes);
-  return extract_typed_address (buf, builtin_type_void_func_ptr);
-}
-#endif /* SIGCONTEXT_PC_OFFSET */
-
-
 /* Are we in a call dummy?  The code below which allows DECR_PC_AFTER_BREAK
    below is for infrun.c, which may give the macro a pc without that
    subtracted out.  */
index a371a58de424923a4598c60d729df9fd7538f0fa..d8c3af4af04eede5fba375dab817315a7eb9c833 100644 (file)
@@ -392,8 +392,6 @@ extern struct frame_info *block_innermost_frame (struct block *);
 
 extern struct frame_info *find_frame_addr_in_frame_chain (CORE_ADDR);
 
-extern CORE_ADDR sigtramp_saved_pc (struct frame_info *);
-
 /* NOTE: cagney/2002-09-13: There is no need for this function.
    Instead either of frame_unwind_signed_register() or
    frame_unwind_unsigned_register() can be used.  */
index 5563cf9b0c604699eb1a27ca051bced231de231d..89bdee956ace3ed2c7eeffe5e496fbf296af3f86 100644 (file)
@@ -314,11 +314,36 @@ ns32k_frame_chain (struct frame_info *frame)
   return (read_memory_integer (frame->frame, 4));
 }
 
+
+static CORE_ADDR
+ns32k_sigtramp_saved_pc (struct frame_info *frame)
+{
+  CORE_ADDR sigcontext_addr;
+  char *buf;
+  int ptrbytes = TYPE_LENGTH (builtin_type_void_func_ptr);
+  int sigcontext_offs = (2 * TARGET_INT_BIT) / TARGET_CHAR_BIT;
+
+  buf = alloca (ptrbytes);
+  /* Get sigcontext address, it is the third parameter on the stack.  */
+  if (frame->next)
+    sigcontext_addr = read_memory_typed_address
+      (FRAME_ARGS_ADDRESS (frame->next) + FRAME_ARGS_SKIP + sigcontext_offs,
+       builtin_type_void_data_ptr);
+  else
+    sigcontext_addr = read_memory_typed_address
+      (read_register (SP_REGNUM) + sigcontext_offs, builtin_type_void_data_ptr);
+
+  /* Don't cause a memory_error when accessing sigcontext in case the stack
+     layout has changed or the stack is corrupt.  */
+  target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET, buf, ptrbytes);
+  return extract_typed_address (buf, builtin_type_void_func_ptr);
+}
+
 static CORE_ADDR
 ns32k_frame_saved_pc (struct frame_info *frame)
 {
   if (frame->signal_handler_caller)
-    return (sigtramp_saved_pc (frame)); /* XXXJRT */
+    return (ns32k_sigtramp_saved_pc (frame)); /* XXXJRT */
 
   return (read_memory_integer (frame->frame + 4, 4));
 }
index e82227fe5e2d62f02f05da0f718144969c54134f..b76c4f87473a49a4a8ebebe561d5326be6d3f175 100644 (file)
@@ -157,11 +157,37 @@ vax_frame_init_saved_regs (struct frame_info *frame)
   frame->saved_regs[PS_REGNUM] = frame->frame + 4;
 }
 
+/* Get saved user PC for sigtramp from sigcontext for BSD style sigtramp.  */
+
+static CORE_ADDR
+vax_sigtramp_saved_pc (struct frame_info *frame)
+{
+  CORE_ADDR sigcontext_addr;
+  char *buf;
+  int ptrbytes = TYPE_LENGTH (builtin_type_void_func_ptr);
+  int sigcontext_offs = (2 * TARGET_INT_BIT) / TARGET_CHAR_BIT;
+
+  buf = alloca (ptrbytes);
+  /* Get sigcontext address, it is the third parameter on the stack.  */
+  if (frame->next)
+    sigcontext_addr = read_memory_typed_address
+      (FRAME_ARGS_ADDRESS (frame->next) + FRAME_ARGS_SKIP + sigcontext_offs,
+       builtin_type_void_data_ptr);
+  else
+    sigcontext_addr = read_memory_typed_address
+      (read_register (SP_REGNUM) + sigcontext_offs, builtin_type_void_data_ptr);
+
+  /* Don't cause a memory_error when accessing sigcontext in case the stack
+     layout has changed or the stack is corrupt.  */
+  target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET, buf, ptrbytes);
+  return extract_typed_address (buf, builtin_type_void_func_ptr);
+}
+
 static CORE_ADDR
 vax_frame_saved_pc (struct frame_info *frame)
 {
   if (frame->signal_handler_caller)
-    return (sigtramp_saved_pc (frame)); /* XXXJRT */
+    return (vax_sigtramp_saved_pc (frame)); /* XXXJRT */
 
   return (read_memory_integer (frame->frame + 16, 4));
 }