diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/linux-nat.c | 24 |
2 files changed, 21 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 157dc49..2b6604b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2014-07-15 Pedro Alves <palves@redhat.com> + + * linux-nat.c (kill_callback): Save errno and work with saved + copy. + 2014-07-15 Simon Marchi <simon.marchi@ericsson.com> * expprint.c (dump_subexp_body_standard): Handle OP_STRING. diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 0ab0362..c738abf 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -3706,20 +3706,28 @@ kill_callback (struct lwp_info *lp, void *data) errno = 0; kill (ptid_get_lwp (lp->ptid), SIGKILL); if (debug_linux_nat) - fprintf_unfiltered (gdb_stdlog, - "KC: kill (SIGKILL) %s, 0, 0 (%s)\n", - target_pid_to_str (lp->ptid), - errno ? safe_strerror (errno) : "OK"); + { + int save_errno = errno; + + fprintf_unfiltered (gdb_stdlog, + "KC: kill (SIGKILL) %s, 0, 0 (%s)\n", + target_pid_to_str (lp->ptid), + save_errno ? safe_strerror (save_errno) : "OK"); + } /* Some kernels ignore even SIGKILL for processes under ptrace. */ errno = 0; ptrace (PTRACE_KILL, ptid_get_lwp (lp->ptid), 0, 0); if (debug_linux_nat) - fprintf_unfiltered (gdb_stdlog, - "KC: PTRACE_KILL %s, 0, 0 (%s)\n", - target_pid_to_str (lp->ptid), - errno ? safe_strerror (errno) : "OK"); + { + int save_errno = errno; + + fprintf_unfiltered (gdb_stdlog, + "KC: PTRACE_KILL %s, 0, 0 (%s)\n", + target_pid_to_str (lp->ptid), + save_errno ? safe_strerror (save_errno) : "OK"); + } return 0; } |