[v5,01/13] signal: Add signum-{generic,arch}.h

Message ID 20200619134352.297146-1-adhemerval.zanella@linaro.org
State Committed
Headers
Series [v5,01/13] signal: Add signum-{generic,arch}.h |

Commit Message

Adhemerval Zanella June 19, 2020, 1:43 p.m. UTC
  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 values 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                         | 27 +------
 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 --------------
 .../unix/sysv/linux/hppa/bits/signum-arch.h   | 69 +++++++++++++++++
 sysdeps/unix/sysv/linux/hppa/bits/signum.h    | 75 -------------------
 sysdeps/unix/sysv/linux/ia64/vfork.S          |  2 +-
 .../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 ----------
 18 files changed, 461 insertions(+), 374 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
 create mode 100644 sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h
 delete mode 100644 sysdeps/unix/sysv/linux/hppa/bits/signum.h
 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
  

Comments

Carlos O'Donell July 2, 2020, 6:26 p.m. UTC | #1
On 6/19/20 9:43 AM, Adhemerval Zanella wrote:
> 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 values 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.

I agree that starting with a common definition and then adding to that
results in fewer mistakes. There is no case where the common definition
got updated and the arch then forgot to undef the non-default.

I agree that having a single signum-arch.h for new generic ports is a
good idea and makes porting easier.

In general we've been following the generic concept that we start with
smaller headers and build up to more complex headers.

Therefore on the fact of it this refactor looks like an improvement so
I'm going to agree with it, given that you did the work and subsequent
patches follow on from this patch, and *those* patches have even more
value.

OK for master.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> ---
>  bits/signum-arch.h                            | 59 +++++++++++++++
>  bits/signum-generic.h                         | 27 +------
>  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 --------------
>  .../unix/sysv/linux/hppa/bits/signum-arch.h   | 69 +++++++++++++++++
>  sysdeps/unix/sysv/linux/hppa/bits/signum.h    | 75 -------------------
>  sysdeps/unix/sysv/linux/ia64/vfork.S          |  2 +-
>  .../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 ----------
>  18 files changed, 461 insertions(+), 374 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
>  create mode 100644 sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h
>  delete mode 100644 sysdeps/unix/sysv/linux/hppa/bits/signum.h
>  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..abecff2345
> --- /dev/null
> +++ b/bits/signum-arch.h
> @@ -0,0 +1,59 @@
> +/* Signal number constants.  Specific architecture definitions.
> +   Copyright (C) 2020 Free Software Foundation, Inc.

OK.

> +   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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef	_BITS_SIGNUM_ARCH_H
> +#define _BITS_SIGNUM_ARCH_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum-generic.h> directly; use <signal.h> 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

OK.

> +
> +#endif
> diff --git a/bits/signum-generic.h b/bits/signum-generic.h
> index 504e5fb8c8..67131853c2 100644
> --- a/bits/signum-generic.h
> +++ b/bits/signum-generic.h
> @@ -57,31 +57,9 @@
>  #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.  */
> @@ -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 <bits/signum-arch.h>

OK.

>  
>  /* 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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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.  */

OK.

> 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 \

OK.

>  	   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 2c57f90e20..db325bde16 100644
> --- a/signal/signal.h
> +++ b/signal/signal.h
> @@ -27,7 +27,7 @@
>  __BEGIN_DECLS
>  
>  #include <bits/types.h>
> -#include <bits/signum.h>
> +#include <bits/signum-generic.h>

OK.

>  
>  #include <bits/types/sig_atomic_t.h>
>  
> diff --git a/sysdeps/mach/hurd/bits/signum-arch.h b/sysdeps/mach/hurd/bits/signum-arch.h
> new file mode 100644
> index 0000000000..bfcb37a47c
> --- /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.

OK.

> +   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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _BITS_SIGNUM_ARCH_H
> +#define _BITS_SIGNUM_ARCH_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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

OK.

> +
> +#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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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.  */

OK.

> 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..47200d7337
> --- /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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _BITS_SIGNUM_ARCH_H
> +#define _BITS_SIGNUM_ARCH_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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	/* <signal.h> included.  */

OK.

> 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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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	/* <signal.h> included.  */

OK.

> 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..de5ee4af14
> --- /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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _BITS_SIGNUM_ARCH_H
> +#define _BITS_SIGNUM_ARCH_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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	/* <signal.h> included.  */

OK.

> 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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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	/* <signal.h> included.  */

OK.

> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h
> new file mode 100644
> index 0000000000..364e57ec4a
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h
> @@ -0,0 +1,69 @@
> +/* Signal number definitions.  Linux/HPPA 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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _BITS_SIGNUM_ARCH_H
> +#define _BITS_SIGNUM_ARCH_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum-arch.h> directly; use <signal.h> instead."
> +#endif
> +
> +/* 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
> +   to accommodate software (notably systemd) that assumed at least 29
> +   real-time signal numbers would be available.  SIGEMT and SIGLOST
> +   were removed, and the values of SIGSTKFLT, SIGXCPU, XIGXFSZ, and
> +   SIGSYS were changed, enabling __SIGRTMIN to be 32.  */
> +
> +#define SIGSTKFLT	 7	/* Stack fault (obsolete).  */
> +#define SIGPWR		19	/* Power failure imminent.  */
> +
> +/* 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 */
> +
> +#define __SIGRTMIN	32
> +#define __SIGRTMAX	64
> +
> +#endif	/* <signal.h> included.  */

OK.

> diff --git a/sysdeps/unix/sysv/linux/hppa/bits/signum.h b/sysdeps/unix/sysv/linux/hppa/bits/signum.h
> deleted file mode 100644
> index 2210304e37..0000000000
> --- a/sysdeps/unix/sysv/linux/hppa/bits/signum.h
> +++ /dev/null
> @@ -1,75 +0,0 @@
> -/* Signal number definitions.  Linux/HPPA 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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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
> -   to accommodate software (notably systemd) that assumed at least 29
> -   real-time signal numbers would be available.  SIGEMT and SIGLOST
> -   were removed, and the values of SIGSTKFLT, SIGXCPU, XIGXFSZ, and
> -   SIGSYS were changed, enabling __SIGRTMIN to be 32.  */
> -
> -#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
> -
> -#undef	__SIGRTMAX
> -#define __SIGRTMAX	64
> -
> -#endif	/* <signal.h> included.  */

OK.

> diff --git a/sysdeps/unix/sysv/linux/ia64/vfork.S b/sysdeps/unix/sysv/linux/ia64/vfork.S
> index a8ceea8ea7..843bf7683c 100644
> --- a/sysdeps/unix/sysv/linux/ia64/vfork.S
> +++ b/sysdeps/unix/sysv/linux/ia64/vfork.S
> @@ -18,7 +18,7 @@
>  
>  #include <sysdep.h>
>  #define _SIGNAL_H
> -#include <bits/signum.h>
> +#include <bits/signum-arch.h>

OK.

>  #include <tcb-offsets.h>
>  
>  /* The following are defined in linux/sched.h, which unfortunately	*/
> 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..c500d38322
> --- /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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _BITS_SIGNUM_H
> +#define _BITS_SIGNUM_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum.h> directly; use <signal.h> 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	/* <signal.h> included.  */

OK.

> 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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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	/* <signal.h> included.  */

OK.

> 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..0cece9a6c4
> --- /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
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#ifndef _BITS_SIGNUM_ARCH_H
> +#define _BITS_SIGNUM_ARCH_H 1
> +
> +#ifndef _SIGNAL_H
> +#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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	/* <signal.h> included.  */

OK.

> 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
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#ifndef _BITS_SIGNUM_H
> -#define _BITS_SIGNUM_H 1
> -
> -#ifndef _SIGNAL_H
> -#error "Never include <bits/signum.h> directly; use <signal.h> instead."
> -#endif
> -
> -#include <bits/signum-generic.h>
> -
> -/* 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	/* <signal.h> included.  */
> 

OK.
  

Patch

diff --git a/bits/signum-arch.h b/bits/signum-arch.h
new file mode 100644
index 0000000000..abecff2345
--- /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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef	_BITS_SIGNUM_ARCH_H
+#define _BITS_SIGNUM_ARCH_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum-generic.h> directly; use <signal.h> 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..67131853c2 100644
--- a/bits/signum-generic.h
+++ b/bits/signum-generic.h
@@ -57,31 +57,9 @@ 
 #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.  */
@@ -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 <bits/signum-arch.h>
 
 /* 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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 2c57f90e20..db325bde16 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -27,7 +27,7 @@ 
 __BEGIN_DECLS
 
 #include <bits/types.h>
-#include <bits/signum.h>
+#include <bits/signum-generic.h>
 
 #include <bits/types/sig_atomic_t.h>
 
diff --git a/sysdeps/mach/hurd/bits/signum-arch.h b/sysdeps/mach/hurd/bits/signum-arch.h
new file mode 100644
index 0000000000..bfcb37a47c
--- /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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGNUM_ARCH_H
+#define _BITS_SIGNUM_ARCH_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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..47200d7337
--- /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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGNUM_ARCH_H
+#define _BITS_SIGNUM_ARCH_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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	/* <signal.h> 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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	/* <signal.h> 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..de5ee4af14
--- /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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGNUM_ARCH_H
+#define _BITS_SIGNUM_ARCH_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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	/* <signal.h> 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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	/* <signal.h> included.  */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h
new file mode 100644
index 0000000000..364e57ec4a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/bits/signum-arch.h
@@ -0,0 +1,69 @@ 
+/* Signal number definitions.  Linux/HPPA 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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGNUM_ARCH_H
+#define _BITS_SIGNUM_ARCH_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum-arch.h> directly; use <signal.h> instead."
+#endif
+
+/* 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
+   to accommodate software (notably systemd) that assumed at least 29
+   real-time signal numbers would be available.  SIGEMT and SIGLOST
+   were removed, and the values of SIGSTKFLT, SIGXCPU, XIGXFSZ, and
+   SIGSYS were changed, enabling __SIGRTMIN to be 32.  */
+
+#define SIGSTKFLT	 7	/* Stack fault (obsolete).  */
+#define SIGPWR		19	/* Power failure imminent.  */
+
+/* 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 */
+
+#define __SIGRTMIN	32
+#define __SIGRTMAX	64
+
+#endif	/* <signal.h> included.  */
diff --git a/sysdeps/unix/sysv/linux/hppa/bits/signum.h b/sysdeps/unix/sysv/linux/hppa/bits/signum.h
deleted file mode 100644
index 2210304e37..0000000000
--- a/sysdeps/unix/sysv/linux/hppa/bits/signum.h
+++ /dev/null
@@ -1,75 +0,0 @@ 
-/* Signal number definitions.  Linux/HPPA 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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
-   to accommodate software (notably systemd) that assumed at least 29
-   real-time signal numbers would be available.  SIGEMT and SIGLOST
-   were removed, and the values of SIGSTKFLT, SIGXCPU, XIGXFSZ, and
-   SIGSYS were changed, enabling __SIGRTMIN to be 32.  */
-
-#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
-
-#undef	__SIGRTMAX
-#define __SIGRTMAX	64
-
-#endif	/* <signal.h> included.  */
diff --git a/sysdeps/unix/sysv/linux/ia64/vfork.S b/sysdeps/unix/sysv/linux/ia64/vfork.S
index a8ceea8ea7..843bf7683c 100644
--- a/sysdeps/unix/sysv/linux/ia64/vfork.S
+++ b/sysdeps/unix/sysv/linux/ia64/vfork.S
@@ -18,7 +18,7 @@ 
 
 #include <sysdep.h>
 #define _SIGNAL_H
-#include <bits/signum.h>
+#include <bits/signum-arch.h>
 #include <tcb-offsets.h>
 
 /* The following are defined in linux/sched.h, which unfortunately	*/
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..c500d38322
--- /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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGNUM_H
+#define _BITS_SIGNUM_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum.h> directly; use <signal.h> 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	/* <signal.h> 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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	/* <signal.h> 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..0cece9a6c4
--- /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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_SIGNUM_ARCH_H
+#define _BITS_SIGNUM_ARCH_H 1
+
+#ifndef _SIGNAL_H
+#error "Never include <bits/signum-arch.h> directly; use <signal.h> 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	/* <signal.h> 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
-   <https://www.gnu.org/licenses/>.  */
-
-#ifndef _BITS_SIGNUM_H
-#define _BITS_SIGNUM_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include <bits/signum.h> directly; use <signal.h> instead."
-#endif
-
-#include <bits/signum-generic.h>
-
-/* 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	/* <signal.h> included.  */