From 63f89404026453219f74d425b0fb58a1fe59294b Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 12 Feb 1996 10:00:30 +0000 Subject: [PATCH] * 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/osf/alpha/getdents.S | 26 ---------------------- sysdeps/unix/bsd/ultrix4/getsysinfo.S | 26 ---------------------- sysdeps/unix/bsd/ultrix4/mips/sigvec.S | 25 --------------------- .../unix/bsd/ultrix4/mips/{sigtramp.c => sigvec.c} | 3 +-- .../bsd/{hp/m68k => ultrix4/mips}/syscalls.list | 2 +- 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 -- 16 files changed, 23 insertions(+), 169 deletions(-) delete mode 100644 sysdeps/unix/bsd/bsd4.4/sstk.S 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/sigvec.S rename sysdeps/unix/bsd/ultrix4/mips/{sigtramp.c => sigvec.c} (95%) rename sysdeps/unix/bsd/{hp/m68k => ultrix4/mips}/syscalls.list (52%) 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 a8929ca..7406594 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 2a30db0..bb6fa95 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 c73840f..0000000 --- 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/osf/alpha/getdents.S b/sysdeps/unix/bsd/osf/alpha/getdents.S deleted file mode 100644 index df2c26d..0000000 --- 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 41718ba..0000000 --- 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/sigvec.S b/sysdeps/unix/bsd/ultrix4/mips/sigvec.S deleted file mode 100644 index 4d7aa44..0000000 --- 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/sigtramp.c b/sysdeps/unix/bsd/ultrix4/mips/sigvec.c similarity index 95% rename from sysdeps/unix/bsd/ultrix4/mips/sigtramp.c rename to sysdeps/unix/bsd/ultrix4/mips/sigvec.c index 1bb208d..6969594 100644 --- a/sysdeps/unix/bsd/ultrix4/mips/sigtramp.c +++ b/sysdeps/unix/bsd/ultrix4/mips/sigvec.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. +/* 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 @@ -36,7 +36,6 @@ Cambridge, MA 02139, USA. */ /* 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, diff --git a/sysdeps/unix/bsd/hp/m68k/syscalls.list b/sysdeps/unix/bsd/ultrix4/mips/syscalls.list similarity index 52% rename from sysdeps/unix/bsd/hp/m68k/syscalls.list rename to sysdeps/unix/bsd/ultrix4/mips/syscalls.list index b9dca13..f7d0bba 100644 --- a/sysdeps/unix/bsd/hp/m68k/syscalls.list +++ b/sysdeps/unix/bsd/ultrix4/mips/syscalls.list @@ -1,3 +1,3 @@ # File name Caller Syscall name # args Strong name Weak names -getdents - getdirentries 4 __getdirentries getdirentries +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 3470da7..0000000 --- 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 54065ae..0000000 --- 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 845bec8..0000000 --- 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 ef11d55..0000000 --- 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 f8fd763..0000000 --- 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 4ff1106..0000000 --- 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 f7cf0d5..0000000 --- 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 54a043c..0000000 --- a/sysdeps/unix/sysv/sysv4/solaris2/utimes.S +++ /dev/null @@ -1,2 +0,0 @@ -/* Solaris has the BSD `utimes' function. */ -#include -- 2.7.4