diff options
author | Roland McGrath <roland@gnu.org> | 1995-11-18 10:00:22 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-11-18 10:00:22 +0000 |
commit | a5a81fecc7194d050066265a15b1ba8bc3abc627 (patch) | |
tree | e4e3c1160fd41254b48678f71ece829b19dfb3dd /sysdeps/mach/hurd/ptrace.c | |
parent | 4cb202902d23b3c487016e516c70640c774b90d8 (diff) | |
download | glibc-a5a81fecc7194d050066265a15b1ba8bc3abc627.zip glibc-a5a81fecc7194d050066265a15b1ba8bc3abc627.tar.gz glibc-a5a81fecc7194d050066265a15b1ba8bc3abc627.tar.bz2 |
Fri Nov 17 17:57:00 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>cvs/libc-951119cvs/libc-951118
* sysdeps/generic/Makefile (make_siglist): Add missing backslash.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start_cleanup): New
function.
* hurd/hurdfault.c: Replace __libc_fatal calls with assert_perror.
(_hurdsig_fault_init): Remove #if 0 from setting exception port.
Insert send right for SIGEXC before thread_set_special_port.
* hurd/hurdsig.c: Replace __libc_fatal calls with assert_perror.
(_hurdsig_init): Remove #if 0 from setting exception port.
* sysdeps/mach/hurd/ptrace.c (ptrace: PTRACE_CONT): Use
HURD_MSGPORT_RPC macro.
Diffstat (limited to 'sysdeps/mach/hurd/ptrace.c')
-rw-r--r-- | sysdeps/mach/hurd/ptrace.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/sysdeps/mach/hurd/ptrace.c b/sysdeps/mach/hurd/ptrace.c index 90fd764..f68d3b4 100644 --- a/sysdeps/mach/hurd/ptrace.c +++ b/sysdeps/mach/hurd/ptrace.c @@ -106,17 +106,15 @@ ptrace (enum __ptrace_request request, ... ) { /* Send a DATA signal to PID, telling it to take the signal normally even if it's traced. */ - error_t err; task_t task = __pid2task (pid); + error_t err; + task_t task = __pid2task (pid); if (task == MACH_PORT_NULL) return -1; if (data == SIGKILL) err = __task_terminate (task); else { - mach_port_t msgport; - err = __USEPORT (PROC, __proc_getmsgport (port, pid, &msgport)); - - if (!err && addr != (void *) 1) + if (addr != (void *) 1) { /* Move the user thread's PC to ADDR. */ thread_t thread; @@ -135,15 +133,18 @@ ptrace (enum __ptrace_request request, ... ) MACHINE_THREAD_STATE_FLAVOR, (natural_t *) &state, count); } - + } __mach_port_deallocate (__mach_task_self (), thread); } + else + err = 0; if (! err) /* Tell the process to take the signal (or just resume if 0). */ - err = __msg_sig_post_untraced (msgport, data, task); - __mach_port_deallocate (__mach_task_self (), msgport); + err = HURD_MSGPORT_RPC + (__USEPORT (PROC, __proc_getmsgport (port, pid, &msgport)), + 0, 0, __msg_sig_post_untraced (msgport, data, task)); } __mach_port_deallocate (__mach_task_self (), task); return err ? __hurd_fail (err) : 0; @@ -201,7 +202,7 @@ ptrace (enum __ptrace_request request, ... ) } __mach_port_deallocate (__mach_task_self (), task); return err ? __hurd_fail (err) : 0; - } + } case PTRACE_PEEKTEXT: case PTRACE_PEEKDATA: |