Fix sigevent namespace (bug 21543)

Message ID alpine.DEB.2.20.1706021707100.29125@digraph.polyomino.org.uk
State New, archived
Headers

Commit Message

Joseph Myers June 2, 2017, 5:07 p.m. UTC
  signal.h defines the sigevent structure and constants if defined
__USE_POSIX199309 || defined __USE_XOPEN_EXTENDED.  The
__USE_XOPEN_EXTENDED condition is incorrect; this structure does not
appear in XSI standards before Unix98 (which implies
__USE_POSIX199309).  This patch fixes the conditionals accordingly
(the existing conditional is correct for siginfo_t, just not for
sigevent).

Tested for x86_64.  This does not allow any conform/ XFAILs to be
removed because of other signal.h namespace bugs.

2017-06-02  Joseph Myers  <joseph@codesourcery.com>

	[BZ #21543]
	* signal/signal.h: Only include <bits/types/sigevent_t.h> and
	<bits/sigevent-consts.h> if [__USE_POSIX199309], not if
	[__USE_XOPEN_EXTENDED].
  

Comments

Zack Weinberg June 2, 2017, 6:24 p.m. UTC | #1
On Fri, Jun 2, 2017 at 1:07 PM, Joseph Myers <joseph@codesourcery.com> wrote:
>         [BZ #21543]
>         * signal/signal.h: Only include <bits/types/sigevent_t.h> and
>         <bits/sigevent-consts.h> if [__USE_POSIX199309], not if
>         [__USE_XOPEN_EXTENDED].

LGTM.

Do you think you'll be able to fix signal.h namespace-wise all the way for 2.26?

zw
  
Joseph Myers June 2, 2017, 7:45 p.m. UTC | #2
On Fri, 2 Jun 2017, Zack Weinberg wrote:

> On Fri, Jun 2, 2017 at 1:07 PM, Joseph Myers <joseph@codesourcery.com> wrote:
> >         [BZ #21543]
> >         * signal/signal.h: Only include <bits/types/sigevent_t.h> and
> >         <bits/sigevent-consts.h> if [__USE_POSIX199309], not if
> >         [__USE_XOPEN_EXTENDED].
> 
> LGTM.
> 
> Do you think you'll be able to fix signal.h namespace-wise all the way 
> for 2.26?

I don't know.  There are two patches pending review 
<https://sourceware.org/ml/libc-alpha/2017-05/msg00744.html> 
<https://sourceware.org/ml/libc-alpha/2017-06/msg00042.html>, but the big 
part (for XPG42 and later) is the ucontext issues.
  

Patch

diff --git a/signal/signal.h b/signal/signal.h
index 947873e..21d628d 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -55,8 +55,11 @@  typedef __uid_t uid_t;
 
 #if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED
 # include <bits/types/siginfo_t.h>
-# include <bits/types/sigevent_t.h>
 # include <bits/siginfo-consts.h>
+#endif
+
+#ifdef __USE_POSIX199309
+# include <bits/types/sigevent_t.h>
 # include <bits/sigevent-consts.h>
 #endif