From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 28955 invoked from network); 21 May 2020 19:21:19 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 21 May 2020 19:21:19 -0000 Received: (qmail 17852 invoked by uid 550); 21 May 2020 19:21:17 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 17831 invoked from network); 21 May 2020 19:21:16 -0000 Date: Thu, 21 May 2020 15:21:03 -0400 From: Rich Felker To: enh Cc: musl@lists.openwall.com Message-ID: <20200521192102.GF1079@brightrain.aerifal.cx> References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Izn7cH1Com+I3R9J" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] remove SIGSTKFLT on mips? --Izn7cH1Com+I3R9J Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, May 21, 2020 at 09:51:29AM -0700, enh wrote: > (context: https://github.com/landley/toybox/issues/194) > > seems like musl defines SIGSTKFLT for mips as signal 7. the kernel > disagrees and says SIGEMT is 7, and that mips doesn't have a > SIGSTKFLT: > > arch/mips/include/uapi/asm/signal.h:#define SIGEMT 7 > > git blame says SIGSTKFLT was introduced in the original commit: > > commit 6315004f6102dca44c4ba50654a36967b8b9c2a6 > Author: Rich Felker > Date: Wed Jul 11 04:22:13 2012 -0400 > > initial version of mips (o32) port, based on work by Richard > Pennington (rdp) > > basically, this version of the code was obtained by starting with > rdp's work from his ellcc source tree, adapting it to musl's build > system and coding style, auditing the bits headers for discrepencies > with kernel definitions or glibc/LSB ABI or large file issues, fixing > up incompatibility with the old binutils from aboriginal linux, and > adding some new special cases to deal with the oddities of sigaction > and pipe syscall interfaces on mips. > > at present, minimal test programs work, but some interfaces are broken > or missing. threaded programs probably will not link. I have the two attached patches pending push if there's no objection. Rich --Izn7cH1Com+I3R9J Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-handle-possibility-that-SIGEMT-replaces-SIGSTKFLT-in.patch" >From a19640a8912e9876f293267986875742867faa54 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 21 May 2020 13:14:40 -0400 Subject: [PATCH 1/2] handle possibility that SIGEMT replaces SIGSTKFLT in strsignal presently all archs define SIGSTKFLT but this is not correct. change strsignal as a prerequisite for fixing that. --- src/string/strsignal.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/string/strsignal.c b/src/string/strsignal.c index 96bfe841..922d3271 100644 --- a/src/string/strsignal.c +++ b/src/string/strsignal.c @@ -31,7 +31,11 @@ static const char map[] = { [SIGPIPE] = 13, [SIGALRM] = 14, [SIGTERM] = 15, +#if defined(SIGSTKFLT) [SIGSTKFLT] = 16, +#elif defined(SIGEMT) + [SIGEMT] = 16, +#endif [SIGCHLD] = 17, [SIGCONT] = 18, [SIGSTOP] = 19, @@ -70,7 +74,11 @@ static const char strings[] = "Broken pipe\0" "Alarm clock\0" "Terminated\0" +#if defined(SIGSTKFLT) "Stack fault\0" +#elif defined(SIGEMT) + "Emulator trap\0" +#endif "Child process status\0" "Continued\0" "Stopped (signal)\0" -- 2.21.0 --Izn7cH1Com+I3R9J Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0002-fix-incorrect-SIGSTKFLT-on-all-mips-archs.patch" >From 8a9b96b328f084cc7a824174378643d2402b8dfb Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 21 May 2020 13:06:21 -0400 Subject: [PATCH 2/2] fix incorrect SIGSTKFLT on all mips archs signal 7 is SIGEMT on Linux mips* ABI according to the man pages and kernel. it's not clear where the wrong name came from but it dates back to original mips commit. --- arch/mips/bits/signal.h | 2 +- arch/mips64/bits/signal.h | 2 +- arch/mipsn32/bits/signal.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/mips/bits/signal.h b/arch/mips/bits/signal.h index e1d97ac7..1b69e762 100644 --- a/arch/mips/bits/signal.h +++ b/arch/mips/bits/signal.h @@ -93,7 +93,7 @@ typedef struct __ucontext { #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT SIGABRT -#define SIGSTKFLT 7 +#define SIGEMT 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGBUS 10 diff --git a/arch/mips64/bits/signal.h b/arch/mips64/bits/signal.h index c31ad07e..4f91c9fc 100644 --- a/arch/mips64/bits/signal.h +++ b/arch/mips64/bits/signal.h @@ -112,7 +112,7 @@ typedef struct __ucontext { #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT SIGABRT -#define SIGSTKFLT 7 +#define SIGEMT 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGBUS 10 diff --git a/arch/mipsn32/bits/signal.h b/arch/mipsn32/bits/signal.h index c31ad07e..4f91c9fc 100644 --- a/arch/mipsn32/bits/signal.h +++ b/arch/mipsn32/bits/signal.h @@ -112,7 +112,7 @@ typedef struct __ucontext { #define SIGTRAP 5 #define SIGABRT 6 #define SIGIOT SIGABRT -#define SIGSTKFLT 7 +#define SIGEMT 7 #define SIGFPE 8 #define SIGKILL 9 #define SIGBUS 10 -- 2.21.0 --Izn7cH1Com+I3R9J--