From patchwork Fri Oct 24 03:21:19 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carlos O'Donell X-Patchwork-Id: 3353 Received: (qmail 12607 invoked by alias); 24 Oct 2014 03:21:32 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 12597 invoked by uid 89); 24 Oct 2014 03:21:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS, UNSUBSCRIBE_BODY autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Message-ID: <5449C5AF.3000702@redhat.com> Date: Thu, 23 Oct 2014 23:21:19 -0400 From: "Carlos O'Donell" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 MIME-Version: 1.0 To: GNU C Library , Helge Deller , John David Anglin Subject: [COMMITED] hppa: Make __SIGRTMIN 32 (ABI break). This is a conscious ABI break for hppa. We find ourselves unable to run systemd because it expects SIGRTMIN+29 signals to be available and with hppa starting at 37 that exceeds the 64 signals available. It is arguable that the systemd code could compact their signal usage (the have a gap and don't check SIGRTMAX to see if they are over). However, that would require pursuing this upstream with systemd. The least work option is to make hppa more like other arches. The best option is to free up 3 signals for use with SIGXCPU, SIGXFSZ and SIGSTKFLT, and move those below 31. We make SIGSYS equal to SIGUNUSED as is expected. We remove SIGEMT and SIGLOST as HPUX signal we won't ever use. With that change we match all other machines. Given that these signals are so esoteric, testing by other users building minimal systems from scratch showed no problems. In fact Tcl fails to build if you make SIGEMT == SIGABRT, so we just removed SIGEMT (they use a large switch statement in C to handle signals, and I don't think it's valid to assume they will all have distinct values to fit into a switch). Committed as the only solution we possibly have here. Signed-off-by: Carlos O'Donell Signed-off-by: Helge Deller 2014-10-23 Carlos O'Donell Helge Deller [BZ #17508] * sysdeps/unix/sysv/linux/hppa/bits/signum.h: Remove SIGEMT. Define SIGSTKFLT as 7. Define SIGSYS as 31. Define SIGXCPU as 12. Remove SIGLOST. Define SIGXFSZ as 30. Define __SIGRTMIN as 32. --- Cheers, Carlos. diff --git a/sysdeps/unix/sysv/linux/hppa/bits/signum.h b/sysdeps/unix/sysv/linux/hppa/bits/signum.h index 7f935c5..4d76cfe 100644 --- a/sysdeps/unix/sysv/linux/hppa/bits/signum.h +++ b/sysdeps/unix/sysv/linux/hppa/bits/signum.h @@ -36,12 +36,12 @@ #define SIGTRAP 5 /* Trace trap (POSIX). */ #define SIGABRT 6 /* Abort (ANSI). */ #define SIGIOT 6 /* IOT trap (4.2 BSD). */ -#define SIGEMT 7 +#define SIGSTKFLT 7 /* Stack fault. */ #define SIGFPE 8 /* Floating-point exception (ANSI). */ #define SIGKILL 9 /* Kill, unblockable (POSIX). */ #define SIGBUS 10 /* BUS error (4.2 BSD). */ #define SIGSEGV 11 /* Segmentation violation (ANSI). */ -#define SIGSYS 12 /* Bad system call. */ +#define SIGXCPU 12 /* CPU limit exceeded (4.2 BSD). */ #define SIGPIPE 13 /* Broken pipe (POSIX). */ #define SIGALRM 14 /* Alarm clock (POSIX). */ #define SIGTERM 15 /* Termination (ANSI). */ @@ -61,11 +61,9 @@ #define SIGTTIN 27 /* Background read from tty (POSIX). */ #define SIGTTOU 28 /* Background write to tty (POSIX). */ #define SIGURG 29 /* Urgent condition on socket (4.2 BSD). */ -#define SIGLOST 30 /* Operating System Has Lost (HP/UX). */ +#define SIGXFSZ 30 /* File size limit exceeded (4.2 BSD). */ +#define SIGSYS 31 /* Bad system call. */ #define SIGUNUSED 31 -#define SIGXCPU 33 /* CPU limit exceeded (4.2 BSD). */ -#define SIGXFSZ 34 /* File size limit exceeded (4.2 BSD). */ -#define SIGSTKFLT 36 /* Stack fault. */ #define _NSIG 65 /* Biggest signal number + 1 (including real-time signals). */ @@ -75,7 +73,17 @@ /* These are the hard limits of the kernel. These values should not be used directly at user level. */ -#define __SIGRTMIN 37 +/* In the Linux kernel version 3.17, and glibc 2.21, the signal numbers + were rearranged in order to make hppa like every other arch. Previously + we started __SIGRTMIN at 37, and that meant several pieces of important + software, including systemd, would fail to build. To support systemd we + removed SIGEMT and SIGLOST, and rearranged the others according to + expected values. This is technically an ABI incompatible change, but + because zero applications use SIGSTKFLT, SIGXCPU, SIGXFSZ and SIGSYS + nothing broke. Nothing uses SIGEMT and SIGLOST, and they were present + for HPUX compatibility which is no longer supported. Thus because + nothing breaks we don't do any compatibility work here. */ +#define __SIGRTMIN 32 /* Kernel > 3.17. */ #define __SIGRTMAX (_NSIG - 1) #endif /* included. */