From 9c0dd46b95f82899ba2648fb6c1e7561382098dc Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Fri, 7 Apr 2006 21:42:33 +0000 Subject: [PATCH] * linux-nat.c (linux_nat_thread_alive): Handle targets that do not implement PTRACE_PEEKUSER. --- gdb/ChangeLog | 5 +++++ gdb/linux-nat.c | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f8a453b367..f3f2d68444 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-04-07 David S. Miller + + * linux-nat.c (linux_nat_thread_alive): Handle targets that + do not implement PTRACE_PEEKUSER. + 2006-04-07 Daniel Jacobowitz * remote.c (remote_wait): Convert warning to error before diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c index 658c984dfd..a60d8e0cac 100644 --- a/gdb/linux-nat.c +++ b/gdb/linux-nat.c @@ -2382,7 +2382,13 @@ linux_nat_thread_alive (ptid_t ptid) "LLTA: PTRACE_PEEKUSER %s, 0, 0 (%s)\n", target_pid_to_str (ptid), errno ? safe_strerror (errno) : "OK"); - if (errno) + + /* Not every Linux target implements PTRACE_PEEKUSER. + But we can handle that case gracefully since ptrace + will first do a lookup for the process based upon the + passed-in pid. If that fails we will get either -ESRCH + or -EPERM, otherwise the child exists and is alive. */ + if (errno == -ESRCH || errno == -EPERM) return 0; return 1;