[v2,1/5] signal: Add signum-{generic,arch}.h

Message ID 20200507142319.1978172-1-adhemerval.zanella@linaro.org
State Dropped
Delegated to: Carlos O'Donell
Headers
Series [v2,1/5] signal: Add signum-{generic,arch}.h |

Commit Message

Adhemerval Zanella May 7, 2020, 2:23 p.m. UTC
  Changes from previous version:

  - Fixed with tab vs. space after #define consistency.

--

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

Paul E Murphy May 7, 2020, 5:38 p.m. UTC | #1
On 5/7/20 9:23 AM, Adhemerval Zanella via Libc-alpha wrote:


> 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..e3aef44e78
> --- /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_ARHC_H
> +#define _BITS_SIGNUM_ARCH_H 1

A small typo here s/ARHC/ARCH/.


> 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..e21dc332ca
> --- /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_ARHC_H
> +#define _BITS_SIGNUM_ARCH_H 1

Likewise.


> 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..a19b5100cb
> --- /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_ARHC_H
> +#define _BITS_SIGNUM_ARCH_H 1

Likewise.


It looks like this is a correct translation, if my reading is correct 
all now add the following which was previously only included with the 
BSD variant:

+/* 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 */

Is it desirable to add these to everything?  Assuming this isn't 
objectionable, I think the changes look OK assuming I didn't 
accidentally glaze over something.
  
Adhemerval Zanella May 7, 2020, 6:27 p.m. UTC | #2
On 07/05/2020 14:38, Paul E Murphy wrote:
> 
> 
> On 5/7/20 9:23 AM, Adhemerval Zanella via Libc-alpha wrote:
> 
> 
>> 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..e3aef44e78
>> --- /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_ARHC_H
>> +#define _BITS_SIGNUM_ARCH_H 1
> 
> A small typo here s/ARHC/ARCH/.

Ack.

> 
> 
>> 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..e21dc332ca
>> --- /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_ARHC_H
>> +#define _BITS_SIGNUM_ARCH_H 1
> 
> Likewise.
> 

Ack.

> 
>> 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..a19b5100cb
>> --- /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_ARHC_H
>> +#define _BITS_SIGNUM_ARCH_H 1
> 
> Likewise.
> 
Ack.

> 
> It looks like this is a correct translation, if my reading is correct all now add the following which was previously only included with the BSD variant:
> 
> +/* 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 */
> 
> Is it desirable to add these to everything?  Assuming this isn't objectionable, I think the changes look OK assuming I didn't accidentally glaze over something.

These are currently provided by bits/signum-generic.h, used on all
platforms.
  
Carlos O'Donell May 12, 2020, 5:36 p.m. UTC | #3
On 5/7/20 10:23 AM, Adhemerval Zanella via Libc-alpha wrote:
> Changes from previous version:
> 
>   - Fixed with tab vs. space after #define consistency.

I'm reviewing.

In the meantime testing on 64-bit and 32-bit x86 was clean.

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

> --
> 
> 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
> 
> 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 40825e95ec..fa8de963f8 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..e3aef44e78
> --- /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_ARHC_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..e21dc332ca
> --- /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_ARHC_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..a19b5100cb
> --- /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_ARHC_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.  */
>
  
Carlos O'Donell May 12, 2020, 5:38 p.m. UTC | #4
On 5/12/20 1:36 PM, Carlos O'Donell wrote:
> On 5/7/20 10:23 AM, Adhemerval Zanella via Libc-alpha wrote:
>> Changes from previous version:
>>
>>   - Fixed with tab vs. space after #define consistency.
> 
> I'm reviewing.
> 
> In the meantime testing on 64-bit and 32-bit x86 was clean.
> 
> Tesetd-by: Carlos O'Donell <carlos@redhat.com>

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

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 40825e95ec..fa8de963f8 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..e3aef44e78
--- /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_ARHC_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..e21dc332ca
--- /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_ARHC_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..a19b5100cb
--- /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_ARHC_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.  */