X-Original-To: alpine-devel@lists.alpinelinux.org Delivered-To: alpine-devel@mail.alpinelinux.org Received: from brightrain.aerifal.cx (216-12-86-13.cv.mvl.ntelos.net [216.12.86.13]) by mail.alpinelinux.org (Postfix) with ESMTP id 632EADC5B54 for ; Tue, 15 Jul 2014 19:04:09 +0000 (UTC) Received: from dalias by brightrain.aerifal.cx with local (Exim 3.15 #2) id 1X780D-00063c-00; Tue, 15 Jul 2014 19:03:01 +0000 Date: Tue, 15 Jul 2014 15:03:01 -0400 From: Rich Felker To: Isaac Dunham Cc: musl@lists.openwall.com, alpine-devel@lists.alpinelinux.org Subject: [alpine-devel] Re: [musl] what should be done with SA_INTERRUPT? (gpm 1.20.7) Message-ID: <20140715190301.GG17402@brightrain.aerifal.cx> References: <20140716011646.GA1179@newbook> X-Mailinglist: alpine-devel Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140716011646.GA1179@newbook> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Rich Felker On Tue, Jul 15, 2014 at 06:16:47PM -0700, Isaac Dunham wrote: > On alpine, gpm 1.20.7 doesn't build completely, so I've been poking at it. > There were numerous cases of sys/select.h being omitted, but the biggest > issue I've hit so far is the use of SA_INTERRUPT in a call to sigaction(); > the purpose is to break out of select() without it getting restarted. > musl does not define or support SA_INTERRUPT, as far as I can tell (I > seem to recall that musl forces SA_RESTART). No, per POSIX, interrupting is the default behavior of sigaction; SA_RESTART is needed to override this. The default you're thinking about is for the signal() function which should not be used anyway. There is no point at all in SA_INTERRUPT since it's required to be the default for sigaction; I'm assuming it came from some pre-POSIX era when the default was not clear. > This is in src/prog/gpm-root.y, which is the source for the "gpm-root" > utility. > > Any idea what to do about this? > I could build gpm without it, but (a) I'd like to see the whole mess > build, and (b) I'm not sure how to tell make that it can skip gpm-root. > > As a temporary fix, I'm using this patch: > -#if defined(__GLIBC__) > - __sigemptyset(&childaction.sa_mask); > -#else /* __GLIBC__ */ > - childaction.sa_mask=0; > -#endif /* __GLIBC__ */ > + sigemptyset(&childaction.sa_mask); > +#ifdef SA_INTERRUPT > childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */ > +#endif Just remove the SA_INTERRUPT line entirely and (like you're doing) use sigemptyset unconditionally. Rich --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---