OSDN Git Service

* linux-nat.c (linux_nat_thread_alive): Handle targets that
authordavem <davem>
Fri, 7 Apr 2006 21:42:33 +0000 (21:42 +0000)
committerdavem <davem>
Fri, 7 Apr 2006 21:42:33 +0000 (21:42 +0000)
do not implement PTRACE_PEEKUSER.

gdb/ChangeLog
gdb/linux-nat.c

index f8a453b..f3f2d68 100644 (file)
@@ -1,3 +1,8 @@
+2006-04-07  David S. Miller  <davem@sunset.davemloft.net>
+
+       * linux-nat.c (linux_nat_thread_alive): Handle targets that
+       do not implement PTRACE_PEEKUSER.
+
 2006-04-07  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * remote.c (remote_wait): Convert warning to error before
index 658c984..a60d8e0 100644 (file)
@@ -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;