From 63f89404026453219f74d425b0fb58a1fe59294b Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 12 Feb 1996 10:00:30 +0000 Subject: * hurd/hurdfault.c (_hurdsig_fault_init): Set qlimit on FORWARD_SIGEXC to one. Uncomment setting of thread exc port, and move it to last thing. --- ChangeLog | 4 +++ hurd/hurdfault.c | 22 +++++++++--- sysdeps/unix/bsd/bsd4.4/sstk.S | 23 ------------ sysdeps/unix/bsd/hp/m68k/syscalls.list | 3 -- sysdeps/unix/bsd/osf/alpha/getdents.S | 26 -------------- sysdeps/unix/bsd/ultrix4/getsysinfo.S | 26 -------------- sysdeps/unix/bsd/ultrix4/mips/sigtramp.c | 55 ----------------------------- sysdeps/unix/bsd/ultrix4/mips/sigvec.S | 25 ------------- sysdeps/unix/bsd/ultrix4/mips/sigvec.c | 54 ++++++++++++++++++++++++++++ sysdeps/unix/bsd/ultrix4/mips/syscalls.list | 3 ++ sysdeps/unix/bsd/ultrix4/waitpid.S | 25 ------------- sysdeps/unix/sysv/irix4/wait3.S | 1 - sysdeps/unix/sysv/sysv4/__waitid.S | 25 ------------- sysdeps/unix/sysv/sysv4/fchdir.S | 2 -- sysdeps/unix/sysv/sysv4/setegid.S | 2 -- sysdeps/unix/sysv/sysv4/seteuid.S | 2 -- sysdeps/unix/sysv/sysv4/sigaltstack.S | 2 -- sysdeps/unix/sysv/sysv4/solaris2/utimes.S | 2 -- 18 files changed, 78 insertions(+), 224 deletions(-) delete mode 100644 sysdeps/unix/bsd/bsd4.4/sstk.S delete mode 100644 sysdeps/unix/bsd/hp/m68k/syscalls.list delete mode 100644 sysdeps/unix/bsd/osf/alpha/getdents.S delete mode 100644 sysdeps/unix/bsd/ultrix4/getsysinfo.S delete mode 100644 sysdeps/unix/bsd/ultrix4/mips/sigtramp.c delete mode 100644 sysdeps/unix/bsd/ultrix4/mips/sigvec.S create mode 100644 sysdeps/unix/bsd/ultrix4/mips/sigvec.c create mode 100644 sysdeps/unix/bsd/ultrix4/mips/syscalls.list delete mode 100644 sysdeps/unix/bsd/ultrix4/waitpid.S delete mode 100644 sysdeps/unix/sysv/irix4/wait3.S delete mode 100644 sysdeps/unix/sysv/sysv4/__waitid.S delete mode 100644 sysdeps/unix/sysv/sysv4/fchdir.S delete mode 100644 sysdeps/unix/sysv/sysv4/setegid.S delete mode 100644 sysdeps/unix/sysv/sysv4/seteuid.S delete mode 100644 sysdeps/unix/sysv/sysv4/sigaltstack.S delete mode 100644 sysdeps/unix/sysv/sysv4/solaris2/utimes.S diff --git a/ChangeLog b/ChangeLog index a8929ca029..740659431f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -35,6 +35,10 @@ Mon Feb 12 03:10:41 1996 Roland McGrath * sysdeps/unix/sysv/sysv4/sigaltstack.S: File removed. * sysdeps/unix/sysv/sysv4/solaris2/utimes.S: File removed. + * hurd/hurdfault.c (_hurdsig_fault_init): Set qlimit on + FORWARD_SIGEXC to one. Uncomment setting of thread exc port, and + move it to last thing. + Sat Feb 10 05:57:08 1996 Roland McGrath * sysdeps/generic/make_siglist.c: #undef _SIGNAL_H before defining it. diff --git a/hurd/hurdfault.c b/hurd/hurdfault.c index 2a30db085e..bb6fa9576d 100644 --- a/hurd/hurdfault.c +++ b/hurd/hurdfault.c @@ -113,6 +113,8 @@ _hurdsig_fault_init (void) struct machine_thread_state state; mach_port_t sigexc; + /* Allocate a port to receive signal thread exceptions. + We will move this receive right to the proc server. */ err = __mach_port_allocate (__mach_task_self (), MACH_PORT_RIGHT_RECEIVE, &sigexc); assert_perror (err); @@ -120,16 +122,20 @@ _hurdsig_fault_init (void) MACH_PORT_RIGHT_RECEIVE, &forward_sigexc); assert_perror (err); + /* Allocate a port to receive the exception msgs forwarded + from the proc server. */ err = __mach_port_insert_right (__mach_task_self (), sigexc, sigexc, MACH_MSG_TYPE_MAKE_SEND); assert_perror (err); -#if 0 /* XXX gdb bites */ - err = __thread_set_special_port (_hurd_msgport_thread, - THREAD_EXCEPTION_PORT, sigexc); -#endif - __mach_port_deallocate (__mach_task_self (), sigexc); + + /* Set the queue limit for this port to just one. The proc server will + notice if we ever get a second exception while one remains queued and + unreceived, and decide we are hopelessly buggy. */ + err = __mach_port_set_qlimit (__mach_task_self (), forward_sigexc, 1); assert_perror (err); + /* This state will be restored when we fault. + It runs the function above. */ memset (&state, 0, sizeof state); MACHINE_THREAD_STATE_SET_PC (&state, faulted); MACHINE_THREAD_STATE_SET_SP (&state, faultstack, sizeof faultstack); @@ -143,5 +149,11 @@ _hurdsig_fault_init (void) (natural_t *) &state, MACHINE_THREAD_STATE_COUNT)); assert_perror (err); + + /* Direct signal thread exceptions to the proc server. */ + err = __thread_set_special_port (_hurd_msgport_thread, + THREAD_EXCEPTION_PORT, sigexc); + __mach_port_deallocate (__mach_task_self (), sigexc); + assert_perror (err); } diff --git a/sysdeps/unix/bsd/bsd4.4/sstk.S b/sysdeps/unix/bsd/bsd4.4/sstk.S deleted file mode 100644 index c73840f47e..0000000000 --- a/sysdeps/unix/bsd/bsd4.4/sstk.S +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include - -/* XXX: not 0 args */ -SYSCALL (sstk, 0) - ret diff --git a/sysdeps/unix/bsd/hp/m68k/syscalls.list b/sysdeps/unix/bsd/hp/m68k/syscalls.list deleted file mode 100644 index b9dca13bf7..0000000000 --- a/sysdeps/unix/bsd/hp/m68k/syscalls.list +++ /dev/null @@ -1,3 +0,0 @@ -# File name Caller Syscall name # args Strong name Weak names - -getdents - getdirentries 4 __getdirentries getdirentries diff --git a/sysdeps/unix/bsd/osf/alpha/getdents.S b/sysdeps/unix/bsd/osf/alpha/getdents.S deleted file mode 100644 index df2c26db85..0000000000 --- a/sysdeps/unix/bsd/osf/alpha/getdents.S +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1993, 1995 Free Software Foundation, Inc. - Contributed by Brendan Kehoe (brendan@zen.org). - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include - -SYSCALL__ (getdirentries, 4) - ret - .end __getdirentries - -weak_alias (__getdirentries, getdirentries) - diff --git a/sysdeps/unix/bsd/ultrix4/getsysinfo.S b/sysdeps/unix/bsd/ultrix4/getsysinfo.S deleted file mode 100644 index 41718ba228..0000000000 --- a/sysdeps/unix/bsd/ultrix4/getsysinfo.S +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. - Contributed by Ian Lance Taylor (ian@airs.com). - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -/* Get various sorts of information about the system. - This is an Ultrix only call. */ - -#include - -SYSCALL__ (getsysinfo, 5) - ret - .end __getsysinfo diff --git a/sysdeps/unix/bsd/ultrix4/mips/sigtramp.c b/sysdeps/unix/bsd/ultrix4/mips/sigtramp.c deleted file mode 100644 index 1bb208dd8b..0000000000 --- a/sysdeps/unix/bsd/ultrix4/mips/sigtramp.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -/* The sigvec system call on MIPS Ultrix takes an additional - parameter, which is the address that is actually called when the - signal occurs. - - When a signal occurs, we arrange for the kernel to call __handler. - That will save the frame and stack pointers into the context, and - then jump to this routine. See __handler.S. - - This code is based on sysdeps/unix/bsd/sun4/sigtramp.c, but it's - different because since we get passed the user signal handler we - don't actually need a trampoline. */ - -#include -#include -#include -#include - -/* The user's signal handler is called with three arguments. */ -typedef void (*handler_type) (int sig, int code, struct sigcontext *); - -/* Defined in __raw_sigvec.S. */ -extern int EXFUN(__raw_sigvec, (int sig, CONST struct sigvec *vec, - struct sigvec *ovec, - void (*)(int sig, int code, - struct sigcontext *, - handler_type))); - -extern void EXFUN(__handler, (int sig, int code, - struct sigcontext *, - handler_type)); - -int -DEFUN(__sigvec, (sig, vec, ovec), - int sig AND CONST struct sigvec *vec AND struct sigvec *ovec) -{ - return __raw_sigvec (sig, vec, ovec, __handler); -} diff --git a/sysdeps/unix/bsd/ultrix4/mips/sigvec.S b/sysdeps/unix/bsd/ultrix4/mips/sigvec.S deleted file mode 100644 index 4d7aa4409c..0000000000 --- a/sysdeps/unix/bsd/ultrix4/mips/sigvec.S +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include - -/* __sigvec is defined by sigtramp.c. */ - -PSEUDO (__raw_sigvec, sigvec, 3) - ret - .end __raw_sigvec diff --git a/sysdeps/unix/bsd/ultrix4/mips/sigvec.c b/sysdeps/unix/bsd/ultrix4/mips/sigvec.c new file mode 100644 index 0000000000..6969594c32 --- /dev/null +++ b/sysdeps/unix/bsd/ultrix4/mips/sigvec.c @@ -0,0 +1,54 @@ +/* Copyright (C) 1992, 1996 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +/* The sigvec system call on MIPS Ultrix takes an additional + parameter, which is the address that is actually called when the + signal occurs. + + When a signal occurs, we arrange for the kernel to call __handler. + That will save the frame and stack pointers into the context, and + then jump to this routine. See __handler.S. + + This code is based on sysdeps/unix/bsd/sun4/sigtramp.c, but it's + different because since we get passed the user signal handler we + don't actually need a trampoline. */ + +#include +#include +#include +#include + +/* The user's signal handler is called with three arguments. */ +typedef void (*handler_type) (int sig, int code, struct sigcontext *); + +extern int EXFUN(__raw_sigvec, (int sig, CONST struct sigvec *vec, + struct sigvec *ovec, + void (*)(int sig, int code, + struct sigcontext *, + handler_type))); + +extern void EXFUN(__handler, (int sig, int code, + struct sigcontext *, + handler_type)); + +int +DEFUN(__sigvec, (sig, vec, ovec), + int sig AND CONST struct sigvec *vec AND struct sigvec *ovec) +{ + return __raw_sigvec (sig, vec, ovec, __handler); +} diff --git a/sysdeps/unix/bsd/ultrix4/mips/syscalls.list b/sysdeps/unix/bsd/ultrix4/mips/syscalls.list new file mode 100644 index 0000000000..f7d0bba6a8 --- /dev/null +++ b/sysdeps/unix/bsd/ultrix4/mips/syscalls.list @@ -0,0 +1,3 @@ +# File name Caller Syscall name # args Strong name Weak names + +raw-sigvec sigvec sigvec 4 __raw_sigvec diff --git a/sysdeps/unix/bsd/ultrix4/waitpid.S b/sysdeps/unix/bsd/ultrix4/waitpid.S deleted file mode 100644 index 3470da783e..0000000000 --- a/sysdeps/unix/bsd/ultrix4/waitpid.S +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 1992, 1995 Free Software Foundation, Inc. - Contributed by Brendan Kehoe (brendan@zen.org). - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include - -SYSCALL__ (waitpid, 3) - ret - .end __waitpid - -weak_alias (__waitpid, waitpid) diff --git a/sysdeps/unix/sysv/irix4/wait3.S b/sysdeps/unix/sysv/irix4/wait3.S deleted file mode 100644 index 54065aefdf..0000000000 --- a/sysdeps/unix/sysv/irix4/wait3.S +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/unix/sysv/sysv4/__waitid.S b/sysdeps/unix/sysv/sysv4/__waitid.S deleted file mode 100644 index 845bec85e2..0000000000 --- a/sysdeps/unix/sysv/sysv4/__waitid.S +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 1993 Free Software Foundation, Inc. - Contributed by Brendan Kehoe (brendan@zen.org). - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ - -#include - -/* XXX */ -#define SYS_waitid SYS_waitsys - -SYSCALL__ (waitid, 3) - ret diff --git a/sysdeps/unix/sysv/sysv4/fchdir.S b/sysdeps/unix/sysv/sysv4/fchdir.S deleted file mode 100644 index ef11d55bc0..0000000000 --- a/sysdeps/unix/sysv/sysv4/fchdir.S +++ /dev/null @@ -1,2 +0,0 @@ -/* SVR4 uses the BSD 4.4 fchdir(2) syscall. */ -#include diff --git a/sysdeps/unix/sysv/sysv4/setegid.S b/sysdeps/unix/sysv/sysv4/setegid.S deleted file mode 100644 index f8fd7633a5..0000000000 --- a/sysdeps/unix/sysv/sysv4/setegid.S +++ /dev/null @@ -1,2 +0,0 @@ -/* SVR4 uses the BSD 4.4 setegid() system call. */ -#include diff --git a/sysdeps/unix/sysv/sysv4/seteuid.S b/sysdeps/unix/sysv/sysv4/seteuid.S deleted file mode 100644 index 4ff110610f..0000000000 --- a/sysdeps/unix/sysv/sysv4/seteuid.S +++ /dev/null @@ -1,2 +0,0 @@ -/* SVR4 uses the BSD 4.4 seteuid() system call. */ -#include diff --git a/sysdeps/unix/sysv/sysv4/sigaltstack.S b/sysdeps/unix/sysv/sysv4/sigaltstack.S deleted file mode 100644 index f7cf0d57f4..0000000000 --- a/sysdeps/unix/sysv/sysv4/sigaltstack.S +++ /dev/null @@ -1,2 +0,0 @@ -/* SVR4 uses the BSD 4.4 sigaltstack syscall. */ -#include diff --git a/sysdeps/unix/sysv/sysv4/solaris2/utimes.S b/sysdeps/unix/sysv/sysv4/solaris2/utimes.S deleted file mode 100644 index 54a043c835..0000000000 --- a/sysdeps/unix/sysv/sysv4/solaris2/utimes.S +++ /dev/null @@ -1,2 +0,0 @@ -/* Solaris has the BSD `utimes' function. */ -#include -- cgit v1.2.3