1999-04-27 Roland McGrath <roland@baalperazim.frob.com>
authorRoland McGrath <roland@gnu.org>
Tue, 27 Apr 1999 01:26:54 +0000 (01:26 +0000)
committerRoland McGrath <roland@gnu.org>
Tue, 27 Apr 1999 01:26:54 +0000 (01:26 +0000)
* hurd/hurdexec.c (_hurd_exec): If SIGKILL present in _hurdsig_traced
set, pass EXEC_SIGTRAP flag in exec RPC.

hurd/hurdexec.c

index 2a283563b8ee373e2f298bad9200a81658262b02..18ad9ef38df60d894a527d181addd49c7fb9691e 100644 (file)
@@ -189,6 +189,8 @@ _hurd_exec (task_t task, file_t file,
   /* The information is all set up now.  Try to exec the file.  */
 
   {
+    int flags;
+
     if (pdp)
       {
        /* Request the exec server to deallocate some ports from us if the exec
@@ -204,7 +206,15 @@ _hurd_exec (task_t task, file_t file,
          *pdp++ = dtable[i];
       }
 
-    err = __file_exec (file, task, 0,
+    flags = 0;
+#ifdef EXEC_SIGTRAP
+    /* PTRACE_TRACEME sets all bits in _hurdsig_traced, which is propagated
+       through exec by INIT_TRACEMASK, so this checks if PTRACE_TRACEME has
+       been called in this process in any of its current or prior lives.  */
+    if (__sigismember (&_hurdsig_traced, SIGKILL))
+      flags |= EXEC_SIGTRAP;
+#endif
+    err = __file_exec (file, task, flags,
                       args, argslen, env, envlen,
                       dtable, MACH_MSG_TYPE_COPY_SEND, dtablesize,
                       ports, MACH_MSG_TYPE_COPY_SEND, _hurd_nports,