From patchwork Thu Apr 23 19:26:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 38855 Return-Path: X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x731.google.com (mail-qk1-x731.google.com [IPv6:2607:f8b0:4864:20::731]) by sourceware.org (Postfix) with ESMTPS id 592A7395B06E for ; Thu, 23 Apr 2020 19:26:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 592A7395B06E Received: by mail-qk1-x731.google.com with SMTP id b188so6110253qkd.9 for ; Thu, 23 Apr 2020 12:26:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=KldO/KfF5Ks9tDtJnArqJXkOMLukhR9vuzcXsUjahmE=; b=CpBM84yiLc3HrbXwrlrUxGiB6suG/OkqHvmzkGOtGyBsU6zIOR3qXArVd2L2B4c9DA o9c4mf4vWJFJf1/WbzaKnWNmFAXdpBzMUtOEiYtFTGAFf/TArlU/Qj5MzLgNSzvA6zgy DlRHOmexYUNPEFQN6OQs/EAkpY3oQoYb3h9Jk0ujOBMK2W3eRMPDvXE1BQ6PswLgDlGh kpPOjlGlXHc9gQtCrCxyDCXde7K7VehTzOBgmTy4Ot6X3tiHWF3q+Y4cWM5NMVYnQleT LrWOc4kVmdiW68QWRsb+uSyz45T/LdAovlJD2DOv5FJVt9eNAYvuXwmBw2EycIvZGPcZ z6KQ== X-Gm-Message-State: AGi0Pua67F2LRzlUVtwWsvrDO7H2w63Ixe7G/3+WgdIa+DKgzZ9t06nu +Pn6w+QyvW33UrtSqxgKZxF9CPzk8QpyOA== X-Google-Smtp-Source: APiQypJHGvP+7WkWs2OpUUJWMl0o+4hpM0gzqYVohLg2eb4vJBSQSDS36pWAFsR2Gj+KqRxYEo6q1g== X-Received: by 2002:a37:d0a:: with SMTP id 10mr5232515qkn.288.1587669989828; Thu, 23 Apr 2020 12:26:29 -0700 (PDT) Received: from localhost.localdomain ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id z90sm2212221qtd.75.2020.04.23.12.26.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2020 12:26:29 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 1/3] signal: Add signum-{generic,arch}.h Date: Thu, 23 Apr 2020 16:26:23 -0300 Message-Id: <20200423192625.21629-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.17.1 X-Spam-Status: No, score=-25.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Apr 2020 19:26:36 -0000 It refactor how signals are defined by each architecture. Instead of include a generic header (bits/signum-generic.h) and undef non-default values in an arch specific header (bits/signum.h) the new scheme uses a common definition (bits/signum-generic.h) and each architectures add its specific definitions on a new header (bits/signum-arch.h). For Linux it requires copy some system default definitions to alpha, hppa, and sparc. They are historical ones and newer ports uses the generic Linux signum-arch.h. For Hurd the BSD signum is removed and moved to a new header (it is used currently only on Hurd). Checked on a build against all affected ABIs. --- bits/signum-arch.h | 59 ++++++++++++++++ bits/signum-generic.h | 29 ++------ bits/signum.h | 32 --------- signal/Makefile | 2 +- signal/signal.h | 2 +- sysdeps/mach/hurd/bits/signum-arch.h | 65 +++++++++++++++++ sysdeps/unix/bsd/bits/signum.h | 35 ---------- .../unix/sysv/linux/alpha/bits/signum-arch.h | 67 ++++++++++++++++++ sysdeps/unix/sysv/linux/alpha/bits/signum.h | 40 ----------- sysdeps/unix/sysv/linux/bits/signum-arch.h | 64 +++++++++++++++++ sysdeps/unix/sysv/linux/bits/signum.h | 58 --------------- .../hppa/bits/{signum.h => signum-arch.h} | 70 +++++++++---------- .../unix/sysv/linux/mips/bits/signum-arch.h | 65 +++++++++++++++++ sysdeps/unix/sysv/linux/mips/bits/signum.h | 68 ------------------ .../unix/sysv/linux/sparc/bits/signum-arch.h | 66 +++++++++++++++++ sysdeps/unix/sysv/linux/sparc/bits/signum.h | 39 ----------- 16 files changed, 424 insertions(+), 337 deletions(-) create mode 100644 bits/signum-arch.h delete mode 100644 bits/signum.h create mode 100644 sysdeps/mach/hurd/bits/signum-arch.h delete mode 100644 sysdeps/unix/bsd/bits/signum.h create mode 100644 sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h delete mode 100644 sysdeps/unix/sysv/linux/alpha/bits/signum.h create mode 100644 sysdeps/unix/sysv/linux/bits/signum-arch.h delete mode 100644 sysdeps/unix/sysv/linux/bits/signum.h rename sysdeps/unix/sysv/linux/hppa/bits/{signum.h => signum-arch.h} (50%) create mode 100644 sysdeps/unix/sysv/linux/mips/bits/signum-arch.h delete mode 100644 sysdeps/unix/sysv/linux/mips/bits/signum.h create mode 100644 sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h delete mode 100644 sysdeps/unix/sysv/linux/sparc/bits/signum.h diff --git a/bits/signum-arch.h b/bits/signum-arch.h new file mode 100644 index 0000000000..df96e92c01 --- /dev/null +++ b/bits/signum-arch.h @@ -0,0 +1,59 @@ +/* Signal number constants. Specific architecture definitions. + Copyright (C) 2020 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_SIGNUM_ARCH_H +#define _BITS_SIGNUM_ARCH_H 1 + +#ifndef _SIGNAL_H +#error "Never include directly; use instead." +#endif + +/* Historical signals specified by POSIX. */ +#define SIGBUS 10 /* Bus error. */ +#define SIGSYS 12 /* Bad system call. */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 16 /* Urgent data is available at a socket. */ +#define SIGSTOP 17 /* Stop, unblockable. */ +#define SIGTSTP 18 /* Keyboard stop. */ +#define SIGCONT 19 /* Continue. */ +#define SIGCHLD 20 /* Child terminated or stopped. */ +#define SIGTTIN 21 /* Background read from control terminal. */ +#define SIGTTOU 22 /* Background write to control terminal. */ +#define SIGPOLL 23 /* Pollable event occurred (System V). */ +#define SIGXCPU 24 /* CPU time limit exceeded. */ +#define SIGVTALRM 26 /* Virtual timer expired. */ +#define SIGPROF 27 /* Profiling timer expired. */ +#define SIGXFSZ 25 /* File size limit exceeded. */ +#define SIGUSR1 30 /* User-defined signal 1. */ +#define SIGUSR2 31 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ + +/* By default no real-time signals are supported. */ +#define __SIGRTMIN 32 +#define __SIGRTMAX __SIGRTMIN + +#endif diff --git a/bits/signum-generic.h b/bits/signum-generic.h index 504e5fb8c8..9b0992b5d5 100644 --- a/bits/signum-generic.h +++ b/bits/signum-generic.h @@ -57,35 +57,13 @@ #define SIGQUIT 3 /* Quit. */ #define SIGTRAP 5 /* Trace/breakpoint trap. */ #define SIGKILL 9 /* Killed. */ -#define SIGBUS 10 /* Bus error. */ -#define SIGSYS 12 /* Bad system call. */ #define SIGPIPE 13 /* Broken pipe. */ #define SIGALRM 14 /* Alarm clock. */ -/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ -#define SIGURG 16 /* Urgent data is available at a socket. */ -#define SIGSTOP 17 /* Stop, unblockable. */ -#define SIGTSTP 18 /* Keyboard stop. */ -#define SIGCONT 19 /* Continue. */ -#define SIGCHLD 20 /* Child terminated or stopped. */ -#define SIGTTIN 21 /* Background read from control terminal. */ -#define SIGTTOU 22 /* Background write to control terminal. */ -#define SIGPOLL 23 /* Pollable event occurred (System V). */ -#define SIGXCPU 24 /* CPU time limit exceeded. */ -#define SIGXFSZ 25 /* File size limit exceeded. */ -#define SIGVTALRM 26 /* Virtual timer expired. */ -#define SIGPROF 27 /* Profiling timer expired. */ -#define SIGUSR1 30 /* User-defined signal 1. */ -#define SIGUSR2 31 /* User-defined signal 2. */ - -/* Nonstandard signals found in all modern POSIX systems - (including both BSD and Linux). */ -#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ - /* Archaic names for compatibility. */ #define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ #define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ -#define SIGCLD SIGCHLD /* Old System V name */ +#define SIGCLD SIGCHLD /* Old System V name */ /* Not all systems support real-time signals. bits/signum.h indicates that they are supported by overriding __SIGRTMAX to a value greater @@ -93,8 +71,9 @@ but some real-time signals may be used internally by glibc. Do not use these constants in application code; use SIGRTMIN and SIGRTMAX (defined in signal.h) instead. */ -#define __SIGRTMIN 32 -#define __SIGRTMAX __SIGRTMIN + +/* Include system specific bits. */ +#include /* Biggest signal number + 1 (including real-time signals). */ #define _NSIG (__SIGRTMAX + 1) diff --git a/bits/signum.h b/bits/signum.h deleted file mode 100644 index 183e3c0545..0000000000 --- a/bits/signum.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Signal number constants. Generic version. - Copyright (C) 2017-2020 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 - -#ifndef _SIGNAL_H -#error "Never include directly; use instead." -#endif - -#include - -/* This operating system does not need to override any of the generic - signal number assignments in bits/signum-generic.h, nor to add any - additional signal constants. */ - -#endif /* bits/signum.h. */ diff --git a/signal/Makefile b/signal/Makefile index f3c19e2992..2ec3ddd74f 100644 --- a/signal/Makefile +++ b/signal/Makefile @@ -23,7 +23,7 @@ subdir := signal include ../Makeconfig headers := signal.h sys/signal.h \ - bits/signum.h bits/signum-generic.h \ + bits/signum-generic.h bits/signum-arch.h \ bits/sigcontext.h bits/sigaction.h \ bits/sigevent-consts.h bits/siginfo-consts.h \ bits/sigstack.h bits/sigthread.h bits/ss_flags.h \ diff --git a/signal/signal.h b/signal/signal.h index 40825e95ec..fa8de963f8 100644 --- a/signal/signal.h +++ b/signal/signal.h @@ -27,7 +27,7 @@ __BEGIN_DECLS #include -#include +#include #include diff --git a/sysdeps/mach/hurd/bits/signum-arch.h b/sysdeps/mach/hurd/bits/signum-arch.h new file mode 100644 index 0000000000..a267358227 --- /dev/null +++ b/sysdeps/mach/hurd/bits/signum-arch.h @@ -0,0 +1,65 @@ +/* Signal number constants. Specific architecture definitions. + Copyright (C) 2020 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_SIGNUM_ARCH_H +#define _BITS_SIGNUM_ARCH_H 1 + +#ifndef _SIGNAL_H +#error "Never include directly; use instead." +#endif + +/* Historical signals specified by POSIX. */ +#define SIGBUS 10 /* Bus error. */ +#define SIGSYS 12 /* Bad system call. */ + +/* Adjustments and additions to the signal number constants for + 4.2 or 4.3 BSD-derived Unix systems. */ +#define SIGEMT 7 /* Emulator trap (4.2 BSD). */ +#define SIGINFO 29 /* Information request (4.4 BSD). */ +#define SIGLOST 32 /* Resource lost (Sun); server died (GNU). */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 16 /* Urgent data is available at a socket. */ +#define SIGSTOP 17 /* Stop, unblockable. */ +#define SIGTSTP 18 /* Keyboard stop. */ +#define SIGCONT 19 /* Continue. */ +#define SIGCHLD 20 /* Child terminated or stopped. */ +#define SIGTTIN 21 /* Background read from control terminal. */ +#define SIGTTOU 22 /* Background write to control terminal. */ +#define SIGPOLL 23 /* Pollable event occurred (System V). */ +#define SIGXCPU 24 /* CPU time limit exceeded. */ +#define SIGVTALRM 26 /* Virtual timer expired. */ +#define SIGPROF 27 /* Profiling timer expired. */ +#define SIGXFSZ 25 /* File size limit exceeded. */ +#define SIGUSR1 30 /* User-defined signal 1. */ +#define SIGUSR2 31 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ + +/* No real-time signals are supported. */ +#define __SIGRTMIN 32 +#define __SIGRTMAX __SIGRTMIN + +#endif diff --git a/sysdeps/unix/bsd/bits/signum.h b/sysdeps/unix/bsd/bits/signum.h deleted file mode 100644 index a8d47af038..0000000000 --- a/sysdeps/unix/bsd/bits/signum.h +++ /dev/null @@ -1,35 +0,0 @@ -/* Signal number definitions. BSD version. - Copyright (C) 1991-2020 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 - -#ifndef _SIGNAL_H -#error "Never include directly; use instead." -#endif - -#include - -/* Adjustments and additions to the signal number constants for - 4.2 or 4.3 BSD-derived Unix systems. */ - -#define SIGEMT 7 /* Emulator trap (4.2 BSD). */ -#define SIGINFO 29 /* Information request (4.4 BSD). */ -#define SIGLOST 32 /* Resource lost (Sun); server died (GNU). */ - -#endif /* bits/signum.h. */ diff --git a/sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h b/sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h new file mode 100644 index 0000000000..a28f181916 --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/bits/signum-arch.h @@ -0,0 +1,67 @@ +/* Signal number definitions. Linux/Alpha version. + Copyright (C) 1996-2020 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_SIGNUM_ARHC_H +#define _BITS_SIGNUM_ARCH_H 1 + +#ifndef _SIGNAL_H +#error "Never include directly; use instead." +#endif + +/* Adjustments and additions to the signal number constants for + Linux/Alpha. Signal values on this platform were chosen for OSF/1 + binary compatibility, and are therefore almost identical to the + BSD-derived defaults. */ + +#define SIGEMT 7 /* Emulator trap (4.2 BSD). */ +#define SIGINFO 29 /* Information request (BSD). */ +#define SIGPWR SIGINFO /* Power failure imminent (System V). */ + +/* Historical signals specified by POSIX. */ +#define SIGBUS 10 /* Bus error. */ +#define SIGSYS 12 /* Bad system call. */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 16 /* Urgent data is available at a socket. */ +#define SIGSTOP 17 /* Stop, unblockable. */ +#define SIGTSTP 18 /* Keyboard stop. */ +#define SIGCONT 19 /* Continue. */ +#define SIGCHLD 20 /* Child terminated or stopped. */ +#define SIGTTIN 21 /* Background read from control terminal. */ +#define SIGTTOU 22 /* Background write to control terminal. */ +#define SIGPOLL 23 /* Pollable event occurred (System V). */ +#define SIGXCPU 24 /* CPU time limit exceeded. */ +#define SIGVTALRM 26 /* Virtual timer expired. */ +#define SIGPROF 27 /* Profiling timer expired. */ +#define SIGXFSZ 25 /* File size limit exceeded. */ +#define SIGUSR1 30 /* User-defined signal 1. */ +#define SIGUSR2 31 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 28 + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ + +#define __SIGRTMIN 32 +#define __SIGRTMAX 64 + +#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/alpha/bits/signum.h b/sysdeps/unix/sysv/linux/alpha/bits/signum.h deleted file mode 100644 index 63add0e3db..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/bits/signum.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Signal number definitions. Linux/Alpha version. - Copyright (C) 1996-2020 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 - -#ifndef _SIGNAL_H -#error "Never include directly; use instead." -#endif - -#include - -/* Adjustments and additions to the signal number constants for - Linux/Alpha. Signal values on this platform were chosen for OSF/1 - binary compatibility, and are therefore almost identical to the - BSD-derived defaults. */ - -#define SIGEMT 7 /* Emulator trap (4.2 BSD). */ -#define SIGINFO 29 /* Information request (BSD). */ -#define SIGPWR SIGINFO /* Power failure imminent (System V). */ - -#undef __SIGRTMAX -#define __SIGRTMAX 64 - -#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/bits/signum-arch.h b/sysdeps/unix/sysv/linux/bits/signum-arch.h new file mode 100644 index 0000000000..0dfe3d954d --- /dev/null +++ b/sysdeps/unix/sysv/linux/bits/signum-arch.h @@ -0,0 +1,64 @@ +/* Signal number definitions. Linux version. + Copyright (C) 1995-2020 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_SIGNUM_ARHC_H +#define _BITS_SIGNUM_ARCH_H 1 + +#ifndef _SIGNAL_H +#error "Never include directly; use instead." +#endif + +/* Adjustments and additions to the signal number constants for + most Linux systems. */ + +#define SIGSTKFLT 16 /* Stack fault (obsolete). */ +#define SIGPWR 30 /* Power failure imminent. */ + +/* Historical signals specified by POSIX. */ +#define SIGBUS 7 /* Bus error. */ +#define SIGSYS 31 /* Bad system call. */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 23 /* Urgent data is available at a socket. */ +#define SIGSTOP 19 /* Stop, unblockable. */ +#define SIGTSTP 20 /* Keyboard stop. */ +#define SIGCONT 18 /* Continue. */ +#define SIGCHLD 17 /* Child terminated or stopped. */ +#define SIGTTIN 21 /* Background read from control terminal. */ +#define SIGTTOU 22 /* Background write to control terminal. */ +#define SIGPOLL 29 /* Pollable event occurred (System V). */ +#define SIGXFSZ 25 /* File size limit exceeded. */ +#define SIGXCPU 24 /* CPU time limit exceeded. */ +#define SIGVTALRM 26 /* Virtual timer expired. */ +#define SIGPROF 27 /* Profiling timer expired. */ +#define SIGUSR1 10 /* User-defined signal 1. */ +#define SIGUSR2 12 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ + +#define __SIGRTMIN 32 +#define __SIGRTMAX 64 + +#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/bits/signum.h b/sysdeps/unix/sysv/linux/bits/signum.h deleted file mode 100644 index 423fd8be70..0000000000 --- a/sysdeps/unix/sysv/linux/bits/signum.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Signal number definitions. Linux version. - Copyright (C) 1995-2020 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 - -#ifndef _SIGNAL_H -#error "Never include directly; use instead." -#endif - -#include - -/* Adjustments and additions to the signal number constants for - most Linux systems. */ - -#define SIGSTKFLT 16 /* Stack fault (obsolete). */ -#define SIGPWR 30 /* Power failure imminent. */ - -#undef SIGBUS -#define SIGBUS 7 -#undef SIGUSR1 -#define SIGUSR1 10 -#undef SIGUSR2 -#define SIGUSR2 12 -#undef SIGCHLD -#define SIGCHLD 17 -#undef SIGCONT -#define SIGCONT 18 -#undef SIGSTOP -#define SIGSTOP 19 -#undef SIGTSTP -#define SIGTSTP 20 -#undef SIGURG -#define SIGURG 23 -#undef SIGPOLL -#define SIGPOLL 29 -#undef SIGSYS -#define SIGSYS 31 - -#undef __SIGRTMAX -#define __SIGRTMAX 64 - -#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/hppa/bits/signum.h b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h similarity index 50% rename from sysdeps/unix/sysv/linux/hppa/bits/signum.h rename to sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h index 2210304e37..20975b9c94 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/signum.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h @@ -16,15 +16,13 @@ License along with the GNU C Library. If not, see . */ -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 +#ifndef _BITS_SIGNUM_ARCH_H +#define _BITS_SIGNUM_ARCH_H 1 #ifndef _SIGNAL_H -#error "Never include directly; use instead." +#error "Never include directly; use instead." #endif -#include - /* Adjustments and additions to the signal number constants for Linux/HPPA. These values were originally chosen for HP/UX compatibility, but were renumbered as of kernel 3.17 and glibc 2.21 @@ -36,40 +34,36 @@ #define SIGSTKFLT 7 /* Stack fault (obsolete). */ #define SIGPWR 19 /* Power failure imminent. */ -#undef SIGXCPU -#define SIGXCPU 12 -#undef SIGUSR1 -#define SIGUSR1 16 -#undef SIGUSR2 -#define SIGUSR2 17 -#undef SIGCHLD -#define SIGCHLD 18 -#undef SIGVTALRM -#define SIGVTALRM 20 -#undef SIGPROF -#define SIGPROF 21 -#undef SIGPOLL -#define SIGPOLL 22 -#undef SIGWINCH -#define SIGWINCH 23 -#undef SIGSTOP -#define SIGSTOP 24 -#undef SIGTSTP -#define SIGTSTP 25 -#undef SIGCONT -#define SIGCONT 26 -#undef SIGTTIN -#define SIGTTIN 27 -#undef SIGTTOU -#define SIGTTOU 28 -#undef SIGURG -#define SIGURG 29 -#undef SIGXFSZ -#define SIGXFSZ 30 -#undef SIGSYS -#define SIGSYS 31 +/* Historical signals specified by POSIX. */ +#define SIGBUS 10 /* Bus error. */ +#define SIGSYS 31 /* Bad system call. */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 29 /* Urgent data is available at a socket. */ +#define SIGSTOP 24 /* Stop, unblockable. */ +#define SIGTSTP 25 /* Keyboard stop. */ +#define SIGCONT 26 /* Continue. */ +#define SIGCHLD 18 /* Child terminated or stopped. */ +#define SIGTTIN 27 /* Background read from control terminal. */ +#define SIGTTOU 28 /* Background write to control terminal. */ +#define SIGPOLL 22 /* Pollable event occurred (System V). */ +#define SIGXCPU 12 /* CPU time limit exceeded. */ +#define SIGVTALRM 20 /* Virtual timer expired. */ +#define SIGPROF 21 /* Profiling timer expired. */ +#define SIGXFSZ 30 /* File size limit exceeded. */ +#define SIGUSR1 16 /* User-defined signal 1. */ +#define SIGUSR2 17 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 23 /* Window size change (4.3 BSD, Sun). */ + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ -#undef __SIGRTMAX +#define __SIGRTMIN 32 #define __SIGRTMAX 64 #endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h b/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h new file mode 100644 index 0000000000..36b1d62e35 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h @@ -0,0 +1,65 @@ +/* Signal number definitions. Linux/MIPS version. + Copyright (C) 1995-2020 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + . */ + +#ifndef _BITS_SIGNUM_H +#define _BITS_SIGNUM_H 1 + +#ifndef _SIGNAL_H +#error "Never include directly; use instead." +#endif + +/* Adjustments and additions to the signal number constants for + Linux/MIPS. */ + +#define SIGEMT 7 /* Emulator trap. */ +#define SIGPWR 19 /* Power failure imminent. */ + +/* Historical signals specified by POSIX. */ +#define SIGBUS 10 /* Bus error. */ +#define SIGSYS 12 /* Bad system call. */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 21 /* Urgent data is available at a socket. */ +#define SIGSTOP 23 /* Stop, unblockable. */ +#define SIGTSTP 24 /* Keyboard stop. */ +#define SIGCONT 25 /* Continue. */ +#define SIGCHLD 18 /* Child terminated or stopped. */ +#define SIGTTIN 26 /* Background read from control terminal. */ +#define SIGTTOU 27 /* Background write to control terminal. */ +#define SIGPOLL 22 /* Pollable event occurred (System V). */ +#define SIGXCPU 30 /* CPU time limit exceeded. */ +#define SIGVTALRM 28 /* Virtual timer expired. */ +#define SIGPROF 29 /* Profiling timer expired. */ +#define SIGXFSZ 31 /* File size limit exceeded. */ +#define SIGUSR1 16 /* User-defined signal 1. */ +#define SIGUSR2 17 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */ + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ + +/* By default no real-time signals are supported. */ +#define __SIGRTMIN 32 +#define __SIGRTMAX 127 + +#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/mips/bits/signum.h b/sysdeps/unix/sysv/linux/mips/bits/signum.h deleted file mode 100644 index f5a5e7b4cd..0000000000 --- a/sysdeps/unix/sysv/linux/mips/bits/signum.h +++ /dev/null @@ -1,68 +0,0 @@ -/* Signal number definitions. Linux/MIPS version. - Copyright (C) 1995-2020 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 - -#ifndef _SIGNAL_H -#error "Never include directly; use instead." -#endif - -#include - -/* Adjustments and additions to the signal number constants for - Linux/MIPS. */ - -#define SIGEMT 7 /* Emulator trap. */ -#define SIGPWR 19 /* Power failure imminent. */ - -#undef SIGUSR1 -#define SIGUSR1 16 -#undef SIGUSR2 -#define SIGUSR2 17 -#undef SIGCHLD -#define SIGCHLD 18 -#undef SIGWINCH -#define SIGWINCH 20 -#undef SIGURG -#define SIGURG 21 -#undef SIGPOLL -#define SIGPOLL 22 -#undef SIGSTOP -#define SIGSTOP 23 -#undef SIGTSTP -#define SIGTSTP 24 -#undef SIGCONT -#define SIGCONT 25 -#undef SIGTTIN -#define SIGTTIN 26 -#undef SIGTTOU -#define SIGTTOU 27 -#undef SIGVTALRM -#define SIGVTALRM 28 -#undef SIGPROF -#define SIGPROF 29 -#undef SIGXCPU -#define SIGXCPU 30 -#undef SIGXFSZ -#define SIGXFSZ 31 - -#undef __SIGRTMAX -#define __SIGRTMAX 127 - -#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h b/sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h new file mode 100644 index 0000000000..a8b643ce34 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/bits/signum-arch.h @@ -0,0 +1,66 @@ +/* Signal number definitions. Linux/SPARC version. + Copyright (C) 1996-2020 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_SIGNUM_ARHC_H +#define _BITS_SIGNUM_ARCH_H 1 + +#ifndef _SIGNAL_H +#error "Never include directly; use instead." +#endif + +/* Adjustments and additions to the signal number constants for + Linux/SPARC systems. Signal values on this platform were chosen + for SunOS binary compatibility. */ + +#define SIGEMT 7 /* Emulator trap. */ +#define SIGLOST 29 /* Resource lost (Sun); server died (GNU). */ +#define SIGPWR SIGLOST /* Power failure imminent (SysV). */ + +/* Historical signals specified by POSIX. */ +#define SIGBUS 10 /* Bus error. */ +#define SIGSYS 12 /* Bad system call. */ + +/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */ +#define SIGURG 16 /* Urgent data is available at a socket. */ +#define SIGSTOP 17 /* Stop, unblockable. */ +#define SIGTSTP 18 /* Keyboard stop. */ +#define SIGCONT 19 /* Continue. */ +#define SIGCHLD 20 /* Child terminated or stopped. */ +#define SIGTTIN 21 /* Background read from control terminal. */ +#define SIGTTOU 22 /* Background write to control terminal. */ +#define SIGPOLL 23 /* Pollable event occurred (System V). */ +#define SIGXCPU 24 /* CPU time limit exceeded. */ +#define SIGVTALRM 26 /* Virtual timer expired. */ +#define SIGPROF 27 /* Profiling timer expired. */ +#define SIGXFSZ 25 /* File size limit exceeded. */ +#define SIGUSR1 30 /* User-defined signal 1. */ +#define SIGUSR2 31 /* User-defined signal 2. */ + +/* Nonstandard signals found in all modern POSIX systems + (including both BSD and Linux). */ +#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ + +/* Archaic names for compatibility. */ +#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */ +#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */ +#define SIGCLD SIGCHLD /* Old System V name */ + +#define __SIGRTMIN 32 +#define __SIGRTMAX 64 + +#endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/sparc/bits/signum.h b/sysdeps/unix/sysv/linux/sparc/bits/signum.h deleted file mode 100644 index 40fb39a435..0000000000 --- a/sysdeps/unix/sysv/linux/sparc/bits/signum.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Signal number definitions. Linux/SPARC version. - Copyright (C) 1996-2020 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 Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _BITS_SIGNUM_H -#define _BITS_SIGNUM_H 1 - -#ifndef _SIGNAL_H -#error "Never include directly; use instead." -#endif - -#include - -/* Adjustments and additions to the signal number constants for - Linux/SPARC systems. Signal values on this platform were chosen - for SunOS binary compatibility. */ - -#define SIGEMT 7 /* Emulator trap. */ -#define SIGLOST 29 /* Resource lost (Sun); server died (GNU). */ -#define SIGPWR SIGLOST /* Power failure imminent (SysV). */ - -#undef __SIGRTMAX -#define __SIGRTMAX 64 - -#endif /* included. */ From patchwork Thu Apr 23 19:26:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 38853 Return-Path: X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by sourceware.org (Postfix) with ESMTPS id 30CD63959C26 for ; Thu, 23 Apr 2020 19:26:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 30CD63959C26 Received: by mail-qk1-x743.google.com with SMTP id l25so7739785qkk.3 for ; Thu, 23 Apr 2020 12:26:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=tIPmv2pGbqGdJWQ65ubCQL3Fna2QxeDs+jWXRHD/rhE=; b=uMNn2AnCnmDmsPOEYI9Ul2ifHOpI4fNck3zEmxPFBBmTx2pFxJA5ucKlKx80BP4ZyR Otyn24s07hT8TtETW514gAlMsRdptjFv4bHSqSRHfW9YujpLzA5uz0BxbYLAW6Gm9nIm zU7axpmyFH9sDGZZ+uePCubhCQvHPO+IOy+DFvH3B2z8CJRSPF3Y18h+FQdA8wtPsXDz O2+IizQzyNWibv+P7P0Z5+ipJyZFqB15lmLdkpFiIQ4kA85XuT8DKzyyvt6oCvFeEvmc 9yG0InyHcmTrqByT4GVbqmPXqmhLbtySdvVFWHPVZ2AEyr82o2pddOlkMqNsXD7gdPL3 5R7A== X-Gm-Message-State: AGi0PubRr1X1vGVNCghrzeP16lmVZYp7qGMhXlmR1HUn81aF13kZ43MZ 79GouQHucl5INau2rRNJ6GbARNvi0yNInA== X-Google-Smtp-Source: APiQypJKdB4m8l4xWvQPHtrlq1j6AUG0HdvSPB3PF2jJuEv6g+ZDBzMoatIiAQ3pqTdxYL6a5qX/eA== X-Received: by 2002:ae9:edc6:: with SMTP id c189mr5181203qkg.422.1587669991374; Thu, 23 Apr 2020 12:26:31 -0700 (PDT) Received: from localhost.localdomain ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id z90sm2212221qtd.75.2020.04.23.12.26.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2020 12:26:30 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 2/3] mips: Fix SIGRTMAX definition Date: Thu, 23 Apr 2020 16:26:24 -0300 Message-Id: <20200423192625.21629-2-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200423192625.21629-1-adhemerval.zanella@linaro.org> References: <20200423192625.21629-1-adhemerval.zanella@linaro.org> X-Spam-Status: No, score=-25.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Apr 2020 19:26:33 -0000 MIPS support up to 96 real time signal, instead of current 95. This increases the NSIG value, however it does not incur in a compat issue for older programs (which won't access the new element). The sys_siglist is automatically expanded as well. Checked with a mips*-linux-gnu build. --- sysdeps/unix/sysv/linux/mips/bits/signum-arch.h | 2 +- sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist | 6 +++--- sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist | 6 +++--- sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h b/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h index 36b1d62e35..a9d5f41e66 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h +++ b/sysdeps/unix/sysv/linux/mips/bits/signum-arch.h @@ -60,6 +60,6 @@ /* By default no real-time signals are supported. */ #define __SIGRTMIN 32 -#define __SIGRTMAX 127 +#define __SIGRTMAX 128 #endif /* included. */ diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index a6f99a7369..e0568438b6 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2077,7 +2077,7 @@ GLIBC_2.3.2 pthread_cond_signal F GLIBC_2.3.2 pthread_cond_timedwait F GLIBC_2.3.2 pthread_cond_wait F GLIBC_2.3.2 strptime_l F -GLIBC_2.3.3 _sys_siglist D 0x200 +GLIBC_2.3.3 _sys_siglist D 0x204 GLIBC_2.3.3 gnu_dev_major F GLIBC_2.3.3 gnu_dev_makedev F GLIBC_2.3.3 gnu_dev_minor F @@ -2095,8 +2095,8 @@ GLIBC_2.3.3 remap_file_pages F GLIBC_2.3.3 sched_getaffinity F GLIBC_2.3.3 sched_setaffinity F GLIBC_2.3.3 semtimedop F -GLIBC_2.3.3 sys_sigabbrev D 0x200 -GLIBC_2.3.3 sys_siglist D 0x200 +GLIBC_2.3.3 sys_sigabbrev D 0x204 +GLIBC_2.3.3 sys_siglist D 0x204 GLIBC_2.3.4 __chk_fail F GLIBC_2.3.4 __fprintf_chk F GLIBC_2.3.4 __gets_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 99965cfb0f..70e2e9a8c5 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2083,7 +2083,7 @@ GLIBC_2.3.2 pthread_cond_signal F GLIBC_2.3.2 pthread_cond_timedwait F GLIBC_2.3.2 pthread_cond_wait F GLIBC_2.3.2 strptime_l F -GLIBC_2.3.3 _sys_siglist D 0x200 +GLIBC_2.3.3 _sys_siglist D 0x204 GLIBC_2.3.3 gnu_dev_major F GLIBC_2.3.3 gnu_dev_makedev F GLIBC_2.3.3 gnu_dev_minor F @@ -2101,8 +2101,8 @@ GLIBC_2.3.3 remap_file_pages F GLIBC_2.3.3 sched_getaffinity F GLIBC_2.3.3 sched_setaffinity F GLIBC_2.3.3 semtimedop F -GLIBC_2.3.3 sys_sigabbrev D 0x200 -GLIBC_2.3.3 sys_siglist D 0x200 +GLIBC_2.3.3 sys_sigabbrev D 0x204 +GLIBC_2.3.3 sys_siglist D 0x204 GLIBC_2.3.4 __chk_fail F GLIBC_2.3.4 __fprintf_chk F GLIBC_2.3.4 __gets_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 2c8bafc669..4e0f236115 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2076,7 +2076,7 @@ GLIBC_2.3.2 pthread_cond_signal F GLIBC_2.3.2 pthread_cond_timedwait F GLIBC_2.3.2 pthread_cond_wait F GLIBC_2.3.2 strptime_l F -GLIBC_2.3.3 _sys_siglist D 0x400 +GLIBC_2.3.3 _sys_siglist D 0x408 GLIBC_2.3.3 gnu_dev_major F GLIBC_2.3.3 gnu_dev_makedev F GLIBC_2.3.3 gnu_dev_minor F @@ -2095,8 +2095,8 @@ GLIBC_2.3.3 sched_setaffinity F GLIBC_2.3.3 semtimedop F GLIBC_2.3.3 strtoll_l F GLIBC_2.3.3 strtoull_l F -GLIBC_2.3.3 sys_sigabbrev D 0x400 -GLIBC_2.3.3 sys_siglist D 0x400 +GLIBC_2.3.3 sys_sigabbrev D 0x408 +GLIBC_2.3.3 sys_siglist D 0x408 GLIBC_2.3.4 __chk_fail F GLIBC_2.3.4 __fprintf_chk F GLIBC_2.3.4 __gets_chk F From patchwork Thu Apr 23 19:26:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 38854 Return-Path: X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by sourceware.org (Postfix) with ESMTPS id DF1C73959C26 for ; Thu, 23 Apr 2020 19:26:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DF1C73959C26 Received: by mail-qt1-x843.google.com with SMTP id v26so297835qto.0 for ; Thu, 23 Apr 2020 12:26:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=KJZkkx0+KMlwIvKLDcHNBKQEqJ9HUwNdaoY0NQXVfbc=; b=Npz/4zi8gn+CUtQiqh035h4u9jlUXoLG94SNeX8MktU0/vfUllIsLZJ2Fg0iz4IM3G v3GMIHbSqii8AVEtdDr0Q5X7dDiYFfnSSUmQIqEmmnPuUssPFWsviFcWXCMowGk7ciOV FmXLFHawxIxiGlv+SUy5Qcvc6BF1BtjwhEKz9FWaSsXXgBgK7w4VO5Cg5jE3sGid4ORJ HHR21nmx3zBtNLOY150ZNbE8b/oUwLa6dSwOYkC5SQzQ7B8v5s3Thyr6xznEwaKPUvBK K+4EBz3mSuN5JPIC8SMZ+YqDz5bGc8EVsqm4E35I3LzFfZUXd30PyOvwKdIuuXThz2Vy bERw== X-Gm-Message-State: AGi0PubKItiPlNr+gIR2hGWP5T0QAUznKrD6Xi9nGV2bTz00GsLA/T/U yqtmWapVfK3JVtX8jwYo7OnzkaitnuB4Fw== X-Google-Smtp-Source: APiQypJpIrb9h5BJpKM7yAcZeRXwJNOWXPOqLhtuA/mUT/apS4EclrRwc7RaXuuQ8uX1SlEWIyTIxg== X-Received: by 2002:ac8:342d:: with SMTP id u42mr5651377qtb.255.1587669992842; Thu, 23 Apr 2020 12:26:32 -0700 (PDT) Received: from localhost.localdomain ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id z90sm2212221qtd.75.2020.04.23.12.26.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2020 12:26:32 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 3/3] linux: Fix __NSIG_WORDS and add __NSIG_BYTES Date: Thu, 23 Apr 2020 16:26:25 -0300 Message-Id: <20200423192625.21629-3-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200423192625.21629-1-adhemerval.zanella@linaro.org> References: <20200423192625.21629-1-adhemerval.zanella@linaro.org> X-Spam-Status: No, score=-25.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Apr 2020 19:26:35 -0000 The __NSIG_WORDS value is based on minimum number of words to hold the maximum number of signal supported by the architecture. Maximum number of signals non multiple of word is rounded up. This patch also adds __NSIG_BYTES, which is the number of bytes required to represent the support number of signals. It is used on syscall which takes a sigset_t. Checked on x86_64-linux-gnu and i686-linux-gnu. --- include/signal.h | 2 ++ nptl/nptl-init.c | 2 +- nptl/pthread_create.c | 2 +- nptl/pthread_sigmask.c | 2 +- sysdeps/unix/sysv/linux/aio_misc.h | 9 ++++++--- sysdeps/unix/sysv/linux/epoll_pwait.c | 2 +- sysdeps/unix/sysv/linux/internal-signals.h | 10 +++++----- sysdeps/unix/sysv/linux/ppoll.c | 7 ++++--- sysdeps/unix/sysv/linux/pselect.c | 2 +- sysdeps/unix/sysv/linux/sigaction.c | 3 ++- sysdeps/unix/sysv/linux/signalfd.c | 2 +- sysdeps/unix/sysv/linux/sigpending.c | 2 +- sysdeps/unix/sysv/linux/sigsetops.h | 18 +++++++++++++----- sysdeps/unix/sysv/linux/sigsuspend.c | 2 +- sysdeps/unix/sysv/linux/sigtimedwait.c | 3 ++- sysdeps/unix/sysv/linux/x86/setjmpP.h | 5 ++--- 16 files changed, 44 insertions(+), 29 deletions(-) diff --git a/include/signal.h b/include/signal.h index 293258ad65..229b1eb352 100644 --- a/include/signal.h +++ b/include/signal.h @@ -2,6 +2,8 @@ # include # ifndef _ISOMAC +# include + libc_hidden_proto (sigemptyset) libc_hidden_proto (sigfillset) libc_hidden_proto (sigaddset) diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c index 96b1444a01..ed450a09fd 100644 --- a/nptl/nptl-init.c +++ b/nptl/nptl-init.c @@ -281,7 +281,7 @@ __pthread_initialize_minimal_internal (void) __sigaddset (&sa.sa_mask, SIGCANCEL); __sigaddset (&sa.sa_mask, SIGSETXID); INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_UNBLOCK, &sa.sa_mask, - NULL, _NSIG / 8); + NULL, __NSIG_BYTES); /* Get the size of the static and alignment requirements for the TLS block. */ diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index 7c752d0f99..479675e6a1 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -408,7 +408,7 @@ START_THREAD_DEFN __sigemptyset (&mask); __sigaddset (&mask, SIGCANCEL); INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_UNBLOCK, &mask, - NULL, _NSIG / 8); + NULL, __NSIG_BYTES); } /* This is where the try/finally block should be created. For diff --git a/nptl/pthread_sigmask.c b/nptl/pthread_sigmask.c index d266d296c5..7b65ae1f27 100644 --- a/nptl/pthread_sigmask.c +++ b/nptl/pthread_sigmask.c @@ -39,7 +39,7 @@ __pthread_sigmask (int how, const sigset_t *newmask, sigset_t *oldmask) /* We know that realtime signals are available if NPTL is used. */ int result = INTERNAL_SYSCALL_CALL (rt_sigprocmask, how, newmask, - oldmask, _NSIG / 8); + oldmask, __NSIG_BYTES); return (INTERNAL_SYSCALL_ERROR_P (result) ? INTERNAL_SYSCALL_ERRNO (result) diff --git a/sysdeps/unix/sysv/linux/aio_misc.h b/sysdeps/unix/sysv/linux/aio_misc.h index 30c3cd778e..e31ca8edbe 100644 --- a/sysdeps/unix/sysv/linux/aio_misc.h +++ b/sysdeps/unix/sysv/linux/aio_misc.h @@ -31,7 +31,8 @@ __aio_start_notify_thread (void) { sigset_t ss; sigemptyset (&ss); - INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &ss, NULL, _NSIG / 8); + INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &ss, NULL, + __NSIG_BYTES); } extern inline int @@ -52,12 +53,14 @@ __aio_create_helper_thread (pthread_t *threadp, void *(*tf) (void *), sigset_t ss; sigset_t oss; sigfillset (&ss); - INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &ss, &oss, _NSIG / 8); + INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &ss, &oss, + __NSIG_BYTES); int ret = pthread_create (threadp, &attr, tf, arg); /* Restore the signal mask. */ - INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &oss, NULL, _NSIG / 8); + INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, &oss, NULL, + __NSIG_BYTES); (void) pthread_attr_destroy (&attr); return ret; diff --git a/sysdeps/unix/sysv/linux/epoll_pwait.c b/sysdeps/unix/sysv/linux/epoll_pwait.c index 66f04482c7..af6d0fd713 100644 --- a/sysdeps/unix/sysv/linux/epoll_pwait.c +++ b/sysdeps/unix/sysv/linux/epoll_pwait.c @@ -38,6 +38,6 @@ int epoll_pwait (int epfd, struct epoll_event *events, const sigset_t *set) { return SYSCALL_CANCEL (epoll_pwait, epfd, events, maxevents, - timeout, set, _NSIG / 8); + timeout, set, __NSIG_BYTES); } libc_hidden_def (epoll_pwait) diff --git a/sysdeps/unix/sysv/linux/internal-signals.h b/sysdeps/unix/sysv/linux/internal-signals.h index 3fbd4807d1..35f2de04c5 100644 --- a/sysdeps/unix/sysv/linux/internal-signals.h +++ b/sysdeps/unix/sysv/linux/internal-signals.h @@ -68,7 +68,7 @@ static inline void __libc_signal_block_all (sigset_t *set) { INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_BLOCK, &sigall_set, set, - _NSIG / 8); + __NSIG_BYTES); } /* Block all application signals (excluding internal glibc ones). */ @@ -78,7 +78,7 @@ __libc_signal_block_app (sigset_t *set) sigset_t allset = sigall_set; __clear_internal_signals (&allset); INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_BLOCK, &allset, set, - _NSIG / 8); + __NSIG_BYTES); } /* Block only SIGTIMER and return the previous set on SET. */ @@ -86,7 +86,7 @@ static inline void __libc_signal_block_sigtimer (sigset_t *set) { INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_BLOCK, &sigtimer_set, set, - _NSIG / 8); + __NSIG_BYTES); } /* Unblock only SIGTIMER and return the previous set on SET. */ @@ -94,7 +94,7 @@ static inline void __libc_signal_unblock_sigtimer (sigset_t *set) { INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_UNBLOCK, &sigtimer_set, set, - _NSIG / 8); + __NSIG_BYTES); } /* Restore current process signal mask. */ @@ -102,7 +102,7 @@ static inline void __libc_signal_restore_set (const sigset_t *set) { INTERNAL_SYSCALL_CALL (rt_sigprocmask, SIG_SETMASK, set, NULL, - _NSIG / 8); + __NSIG_BYTES); } /* Used to communicate with signal handler. */ diff --git a/sysdeps/unix/sysv/linux/ppoll.c b/sysdeps/unix/sysv/linux/ppoll.c index 4ffb23710e..0f15636cce 100644 --- a/sysdeps/unix/sysv/linux/ppoll.c +++ b/sysdeps/unix/sysv/linux/ppoll.c @@ -41,11 +41,12 @@ __ppoll64 (struct pollfd *fds, nfds_t nfds, const struct __timespec64 *timeout, # ifndef __NR_ppoll_time64 # define __NR_ppoll_time64 __NR_ppoll # endif - return SYSCALL_CANCEL (ppoll_time64, fds, nfds, timeout, sigmask, _NSIG / 8); + return SYSCALL_CANCEL (ppoll_time64, fds, nfds, timeout, sigmask, + __NSIG_BYTES); #else # ifdef __NR_ppoll_time64 int ret = SYSCALL_CANCEL (ppoll_time64, fds, nfds, timeout, sigmask, - _NSIG / 8); + __NSIG_BYTES); if (ret >= 0 || errno != ENOSYS) return ret; # endif @@ -62,7 +63,7 @@ __ppoll64 (struct pollfd *fds, nfds_t nfds, const struct __timespec64 *timeout, } return SYSCALL_CANCEL (ppoll, fds, nfds, timeout ? &ts32 : NULL, sigmask, - _NSIG / 8); + __NSIG_BYTES); #endif } diff --git a/sysdeps/unix/sysv/linux/pselect.c b/sysdeps/unix/sysv/linux/pselect.c index d7c6ff8fdb..304db03338 100644 --- a/sysdeps/unix/sysv/linux/pselect.c +++ b/sysdeps/unix/sysv/linux/pselect.c @@ -43,7 +43,7 @@ __pselect (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, } data; data.ss = (__syscall_ulong_t) (uintptr_t) sigmask; - data.ss_len = _NSIG / 8; + data.ss_len = __NSIG_BYTES; return SYSCALL_CANCEL (pselect6, nfds, readfds, writefds, exceptfds, timeout, &data); diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c index 4e6d11a6ae..f27349d552 100644 --- a/sysdeps/unix/sysv/linux/sigaction.c +++ b/sysdeps/unix/sysv/linux/sigaction.c @@ -57,7 +57,8 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact) real size of the user-level sigset_t. */ result = INLINE_SYSCALL_CALL (rt_sigaction, sig, act ? &kact : NULL, - oact ? &koact : NULL, STUB (act, _NSIG / 8)); + oact ? &koact : NULL, STUB (act, + __NSIG_BYTES)); if (oact && result >= 0) { diff --git a/sysdeps/unix/sysv/linux/signalfd.c b/sysdeps/unix/sysv/linux/signalfd.c index 64d7bccba9..71d91fdde5 100644 --- a/sysdeps/unix/sysv/linux/signalfd.c +++ b/sysdeps/unix/sysv/linux/signalfd.c @@ -24,5 +24,5 @@ int signalfd (int fd, const sigset_t *mask, int flags) { - return INLINE_SYSCALL (signalfd4, 4, fd, mask, _NSIG / 8, flags); + return INLINE_SYSCALL (signalfd4, 4, fd, mask, __NSIG_BYTES, flags); } diff --git a/sysdeps/unix/sysv/linux/sigpending.c b/sysdeps/unix/sysv/linux/sigpending.c index 458a3cf99e..8898fe8b34 100644 --- a/sysdeps/unix/sysv/linux/sigpending.c +++ b/sysdeps/unix/sysv/linux/sigpending.c @@ -24,5 +24,5 @@ int sigpending (sigset_t *set) { - return INLINE_SYSCALL (rt_sigpending, 2, set, _NSIG / 8); + return INLINE_SYSCALL_CALL (rt_sigpending, set, __NSIG_BYTES); } diff --git a/sysdeps/unix/sysv/linux/sigsetops.h b/sysdeps/unix/sysv/linux/sigsetops.h index db8f378cf0..3f29ead009 100644 --- a/sysdeps/unix/sysv/linux/sigsetops.h +++ b/sysdeps/unix/sysv/linux/sigsetops.h @@ -20,23 +20,31 @@ #define _SIGSETOPS_H 1 #include +#include +#include /* Return a mask that includes the bit for SIG only. */ -# define __sigmask(sig) \ - (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) +#define __sigmask(sig) \ + (1UL << (((sig) - 1) % ULONG_WIDTH)) /* Return the word index for SIG. */ static inline unsigned long int __sigword (int sig) { - return (sig - 1) / (8 * sizeof (unsigned long int)); + return (sig - 1) / ULONG_WIDTH; } /* Linux sig* functions only handle up to __NSIG_WORDS words instead of full _SIGSET_NWORDS sigset size. The signal numbers are 1-based, and bit 0 of a signal mask is for signal 1. */ - -# define __NSIG_WORDS (_NSIG / (8 * sizeof (unsigned long int ))) +#define __NSIG_WORDS (ALIGN_UP ((_NSIG - 1), ULONG_WIDTH) / ULONG_WIDTH) +_Static_assert (__NSIG_WORDS <= _SIGSET_NWORDS, + "__NSIG_WORDS > _SIGSET_WORDS"); + +/* This macro is used on syscall that takes a sigset_t to specify the expected + size in bytes. As for glibc, kernel sigset is implemented as an array of + unsigned long. */ +#define __NSIG_BYTES (__NSIG_WORDS * (ULONG_WIDTH / UCHAR_WIDTH)) static inline void __sigemptyset (sigset_t *set) diff --git a/sysdeps/unix/sysv/linux/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c index dd5df5af25..b4bf2ec4bc 100644 --- a/sysdeps/unix/sysv/linux/sigsuspend.c +++ b/sysdeps/unix/sysv/linux/sigsuspend.c @@ -23,7 +23,7 @@ int __sigsuspend (const sigset_t *set) { - return SYSCALL_CANCEL (rt_sigsuspend, set, _NSIG / 8); + return SYSCALL_CANCEL (rt_sigsuspend, set, __NSIG_BYTES); } libc_hidden_def (__sigsuspend) weak_alias (__sigsuspend, sigsuspend) diff --git a/sysdeps/unix/sysv/linux/sigtimedwait.c b/sysdeps/unix/sysv/linux/sigtimedwait.c index 6b3d8f705f..f2ef3aad45 100644 --- a/sysdeps/unix/sysv/linux/sigtimedwait.c +++ b/sysdeps/unix/sysv/linux/sigtimedwait.c @@ -26,7 +26,8 @@ __sigtimedwait (const sigset_t *set, siginfo_t *info, { /* XXX The size argument hopefully will have to be changed to the real size of the user-level sigset_t. */ - int result = SYSCALL_CANCEL (rt_sigtimedwait, set, info, timeout, _NSIG / 8); + int result = SYSCALL_CANCEL (rt_sigtimedwait, set, info, timeout, + __NSIG_BYTES); /* The kernel generates a SI_TKILL code in si_code in case tkill is used. tkill is transparently used in raise(). Since having diff --git a/sysdeps/unix/sysv/linux/x86/setjmpP.h b/sysdeps/unix/sysv/linux/x86/setjmpP.h index 1783b8eb78..a5de31bfd6 100644 --- a/sysdeps/unix/sysv/linux/x86/setjmpP.h +++ b/sysdeps/unix/sysv/linux/x86/setjmpP.h @@ -21,6 +21,7 @@ #include #include +#include /* has @@ -113,11 +114,9 @@ typedef union #include -#define _SIGPROCMASK_NSIG_WORDS (_NSIG / (8 * sizeof (unsigned long int))) - typedef struct { - unsigned long int __val[_SIGPROCMASK_NSIG_WORDS]; + unsigned long int __val[__NSIG_WORDS]; } __sigprocmask_sigset_t; extern jmp_buf ___buf;