summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2012-04-10 15:31:29 +0000
committerTristan Gingold <gingold@adacore.com>2012-04-10 15:31:29 +0000
commitee41036f97eacbeac8248b55b52812900a8e7fa9 (patch)
tree16111236fb33e1d746af5aa8f335bd8e822969a8
parenteea771433207dc469c9a9f8d1abee361437b35c2 (diff)
downloadbinutils-gdb-ee41036f97eacbeac8248b55b52812900a8e7fa9.tar.gz
2012-04-10 Tristan Gingold <gingold@adacore.com>
* darwin-nat.c (darwin_kill_inferior): Always use the no ptrace code to kill the inferior.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/darwin-nat.c31
2 files changed, 14 insertions, 22 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 304ca3ac4ff..4c7c2e34fb1 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-10 Tristan Gingold <gingold@adacore.com>
+
+ * darwin-nat.c (darwin_kill_inferior): Always use the no ptrace
+ code to kill the inferior.
+
2012-04-09 Mark Kettenis <kettenis@gnu.org>
* ada-exp.y (yyss, yysslim, yyssp, yystacksize, yyvs, yyvsp): New
diff --git a/gdb/darwin-nat.c b/gdb/darwin-nat.c
index 010700cd377..df2b7611421 100644
--- a/gdb/darwin-nat.c
+++ b/gdb/darwin-nat.c
@@ -1313,35 +1313,22 @@ darwin_kill_inferior (struct target_ops *ops)
gdb_assert (inf != NULL);
- if (!inf->private->no_ptrace)
- {
- darwin_stop_inferior (inf);
-
- res = PTRACE (PT_KILL, inf->pid, 0, 0);
- if (res != 0)
- warning (_("Failed to kill inferior: ptrace returned %d "
- "[%s] (pid=%d)"),
- res, safe_strerror (errno), inf->pid);
+ kret = darwin_restore_exception_ports (inf->private);
+ MACH_CHECK_ERROR (kret);
- darwin_reply_to_all_pending_messages (inf);
+ darwin_reply_to_all_pending_messages (inf);
- darwin_resume_inferior (inf);
+ res = kill (inf->pid, 9);
- ptid = darwin_wait (inferior_ptid, &wstatus);
- }
- else
+ if (res == 0)
{
- kret = darwin_restore_exception_ports (inf->private);
- MACH_CHECK_ERROR (kret);
-
- darwin_reply_to_all_pending_messages (inf);
-
darwin_resume_inferior (inf);
-
- res = kill (inf->pid, 9);
-
+
ptid = darwin_wait (inferior_ptid, &wstatus);
}
+ else if (errno != ESRCH)
+ warning (_("Failed to kill inferior: kill (%d, 9) returned [%s]"),
+ inf->pid, safe_strerror (errno));
target_mourn_inferior ();
}