From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/8986 Path: news.gmane.org!not-for-mail From: Rich Felker Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH] Separate siginfo_t for MIPS Date: Tue, 15 Dec 2015 23:34:28 -0500 Message-ID: <20151216043428.GC238@brightrain.aerifal.cx> References: <20151210124712.3b4b811fd0d99a5b482b4ee3@ubnt.com> <20151210123633.GD23362@port70.net> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1450240487 32757 80.91.229.3 (16 Dec 2015 04:34:47 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 16 Dec 2015 04:34:47 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-8999-gllmg-musl=m.gmane.org@lists.openwall.com Wed Dec 16 05:34:46 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1a93nZ-0003oP-VI for gllmg-musl@m.gmane.org; Wed, 16 Dec 2015 05:34:46 +0100 Original-Received: (qmail 16013 invoked by uid 550); 16 Dec 2015 04:34:42 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 15992 invoked from network); 16 Dec 2015 04:34:41 -0000 Content-Disposition: inline In-Reply-To: <20151210123633.GD23362@port70.net> User-Agent: Mutt/1.5.21 (2010-09-15) Original-Sender: Rich Felker Xref: news.gmane.org gmane.linux.lib.musl.general:8986 Archived-At: On Thu, Dec 10, 2015 at 01:36:33PM +0100, Szabolcs Nagy wrote: > * Dmitry Ivanov [2015-12-10 12:47:12 +0200]: > > MIPS has non-default siginfo_t structure. Also, some si_code values are > > different. This patch is required for POSIX timers to work. > > > > --- > > arch/aarch64/bits/siginfo.h | 0 > > arch/arm/bits/siginfo.h | 0 > > arch/i386/bits/siginfo.h | 0 > > arch/microblaze/bits/siginfo.h | 0 > > arch/mips/bits/siginfo.h | 52 ++++++++++++++++++++++++++++++++++++++++++ > > arch/or1k/bits/siginfo.h | 0 > > arch/powerpc/bits/siginfo.h | 0 > > arch/sh/bits/siginfo.h | 0 > > arch/x32/bits/siginfo.h | 0 > > arch/x86_64/bits/siginfo.h | 0 > > include/signal.h | 7 ++++++ > > 11 files changed, 59 insertions(+) > > create mode 100644 arch/aarch64/bits/siginfo.h > > create mode 100644 arch/arm/bits/siginfo.h > > create mode 100644 arch/i386/bits/siginfo.h > > create mode 100644 arch/microblaze/bits/siginfo.h > > create mode 100644 arch/mips/bits/siginfo.h > > create mode 100644 arch/or1k/bits/siginfo.h > > create mode 100644 arch/powerpc/bits/siginfo.h > > create mode 100644 arch/sh/bits/siginfo.h > > create mode 100644 arch/x32/bits/siginfo.h > > create mode 100644 arch/x86_64/bits/siginfo.h > > > > diff --git a/arch/aarch64/bits/siginfo.h b/arch/aarch64/bits/siginfo.h > > new file mode 100644 > > index 0000000..e69de29 > > diff --git a/arch/arm/bits/siginfo.h b/arch/arm/bits/siginfo.h > > new file mode 100644 > > index 0000000..e69de29 > > diff --git a/arch/i386/bits/siginfo.h b/arch/i386/bits/siginfo.h > > new file mode 100644 > > index 0000000..e69de29 > > diff --git a/arch/microblaze/bits/siginfo.h b/arch/microblaze/bits/siginfo.h > > new file mode 100644 > > index 0000000..e69de29 > > diff --git a/arch/mips/bits/siginfo.h b/arch/mips/bits/siginfo.h > > new file mode 100644 > > index 0000000..42dbdf5 > > --- /dev/null > > +++ b/arch/mips/bits/siginfo.h > > @@ -0,0 +1,52 @@ > > +#define HAVE_ARCH_SIGINFO_T > > + > > HAVE_... is not in the reserved namespace of the implementation > > > +#undef SI_ASYNCIO > > +#undef SI_TIMER > > +#undef SI_MESGQ > > +#define SI_ASYNCIO -2 /* sent by AIO completion */ > > +#define SI_TIMER -3 /* sent by timer expiration */ > > +#define SI_MESGQ -4 /* sent by real time mesq state change */ > > + > > negative numbers must be parethesized. > > and musl doesn't use such comments in public headers > (they might be copyrightable). > > > +/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */ > > +typedef struct { > > + int si_signo, si_code, si_errno; > > is this reordering the only change? > (other than the SI_ macros) > > the ifdef and empty siginfo.h files are not nice, > there are some plans to change bits/* to make > this kind of arch specific changes less painful. Either way there's no need to add a new bits header. bits/signal.h would be a perfectly good place for this. > until then i think it's enough to fix it in signal.h > with some dirty ifdef around these members. Indeed, I think a makeshift solution could work okay here and avoid moving this large, redundant structure into bits/signal.h. However I'd rather not depend on compiler-predefined macros (like __mips__ in Dmitry's second patch) in public headers, since we don't assume particular compilers for compiling applications. Ideally bits/signal.h would define something in the reserved namespace to change the behavior of the top-level signal.h. However bits/signal.h needs to be towards the bottom of signal.h for other reasons, so I don't see a really clean solution. Ideas? One principle this is suggesting to me for the bits deduplication & refactoring is that perhaps _all_ ABI-level definitions should be in bits/*.h rather than the top-level headers. Although if we go this way, we need a way for bits/%.h to be generated from multiple templates since some parts of a given bits file will be fairly generic while others vary on almost every arch. Rich