* i386obsd-tdep.c (i386obsd_sigtramp_p): Use
authorMark Kettenis <kettenis@gnu.org>
Fri, 6 Aug 2004 20:51:01 +0000 (20:51 +0000)
committerMark Kettenis <kettenis@gnu.org>
Fri, 6 Aug 2004 20:51:01 +0000 (20:51 +0000)
safe_frame_unwind_memory instead of target_read_memory.

gdb/ChangeLog
gdb/i386obsd-tdep.c

index f4f7c44adca73f0bea117e1a463c77a44c64e161..a7d71c6501e82381c21479bc14bd4d1eed54f5ad 100644 (file)
@@ -1,5 +1,8 @@
 2004-08-05  Mark Kettenis  <kettenis@chello.nl>
 
+       * i386obsd-tdep.c (i386obsd_sigtramp_p): Use
+       safe_frame_unwind_memory instead of target_read_memory.
+
        * infptrace.c: Include <sys/file.h> if HAVE_SYS_FILE_H instead of
        !NO_SYS_FILE.
        [KERNEL_U_ADDR_BSD]: Don't include <a.out.h>.
index b2c803fe56bae8e42fea003dbf8213c615ee1e87..9ef868d6ec45a9ce48fa195800a1792ecdced2af 100644 (file)
@@ -65,6 +65,7 @@ i386obsd_sigtramp_p (struct frame_info *next_frame)
     0x67, 0x00, 0x00, 0x00,    /* movl $SYS_sigreturn, %eax */
     0xcd, 0x80                 /* int $0x80 */
   };
+  size_t buflen = sizeof sigreturn;
   char *name, *buf;
 
   /* If the function has a valid symbol name, it isn't a
@@ -79,22 +80,22 @@ i386obsd_sigtramp_p (struct frame_info *next_frame)
     return 0;
 
   /* Allocate buffer.  */
-  buf = alloca (sizeof sigreturn);
+  buf = alloca (buflen);
 
   /* If we can't read the instructions at START_PC, return zero.  */
-  if (target_read_memory (start_pc + 0x0a, buf, sizeof sigreturn))
+  if (!safe_frame_unwind_memory (next_frame, start_pc + 0x0a, buf, buflen))
     return 0;
 
   /* Check for sigreturn(2).  */
-  if (memcmp (buf, sigreturn, sizeof sigreturn) == 0)
+  if (memcmp (buf, sigreturn, buflen) == 0)
     return 1;
 
   /* If we can't read the instructions at START_PC, return zero.  */
-  if (target_read_memory (start_pc + 0x14, buf, sizeof sigreturn))
+  if (!safe_frame_unwind_memory (next_frame, start_pc + 0x14, buf, buflen))
     return 0;
 
   /* Check for sigreturn(2) (again).  */
-  if (memcmp (buf, sigreturn, sizeof sigreturn) == 0)
+  if (memcmp (buf, sigreturn, buflen) == 0)
     return 1;
 
   return 0;