* i386obsd-tdep.c (i386obsd_sigtramp_p): Use
safe_frame_unwind_memory instead of target_read_memory.
This commit is contained in:
parent
c0ccb908a0
commit
c822af0c70
@ -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>.
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user