Browse Source

gdb/

* common/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Call also kill
	for CHILD, ignore PTRACE_KILL errors, move the inner block variable
	kill_status to outer block.
gdb_7_6-branch
Jan Kratochvil 14 years ago
parent
commit
61a31a6769
  1. 6
      gdb/ChangeLog
  2. 38
      gdb/common/linux-ptrace.c

6
gdb/ChangeLog

@ -1,3 +1,9 @@
2013-03-10 Jan Kratochvil <jan.kratochvil@redhat.com>
* common/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Call also kill
for CHILD, ignore PTRACE_KILL errors, move the inner block variable
kill_status to outer block.
2013-03-10 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix entry-values if the callee called a noreturn function.

38
gdb/common/linux-ptrace.c

@ -74,7 +74,7 @@ linux_ptrace_test_ret_to_nx (void)
pid_t child, got_pid;
gdb_byte *return_address, *pc;
long l;
int status;
int status, kill_status;
return_address = mmap (NULL, 2, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
@ -177,32 +177,24 @@ linux_ptrace_test_ret_to_nx (void)
}
pc = (void *) (uintptr_t) l;
if (ptrace (PTRACE_KILL, child, NULL, NULL) != 0)
kill (child, SIGKILL);
ptrace (PTRACE_KILL, child, NULL, NULL);
errno = 0;
got_pid = waitpid (child, &kill_status, 0);
if (got_pid != child)
{
warning (_("linux_ptrace_test_ret_to_nx: Cannot PTRACE_KILL: %s"),
strerror (errno));
warning (_("linux_ptrace_test_ret_to_nx: "
"PTRACE_KILL waitpid returned %ld: %s"),
(long) got_pid, strerror (errno));
return;
}
else
if (!WIFSIGNALED (kill_status))
{
int kill_status;
errno = 0;
got_pid = waitpid (child, &kill_status, 0);
if (got_pid != child)
{
warning (_("linux_ptrace_test_ret_to_nx: "
"PTRACE_KILL waitpid returned %ld: %s"),
(long) got_pid, strerror (errno));
return;
}
if (!WIFSIGNALED (kill_status))
{
warning (_("linux_ptrace_test_ret_to_nx: "
"PTRACE_KILL status %d is not WIFSIGNALED!"),
status);
return;
}
warning (_("linux_ptrace_test_ret_to_nx: "
"PTRACE_KILL status %d is not WIFSIGNALED!"),
status);
return;
}
/* + 1 is there as x86* stops after the 'int3' instruction. */

Loading…
Cancel
Save