The gnu11 patch broke Solaris 10 and 11 bootstrap: <sys/feature_test.h>
has
/*
* It is invalid to compile an XPG3, XPG4, XPG4v2, or XPG5 application
* using c99. The same is true for POSIX.1-1990, POSIX.2-1992, POSIX.1b,
* and POSIX.1c applications. Likewise, it is invalid to compile an XPG6
* or a POSIX.1-2001 application with anything other than a c99 or later
* compiler. Therefore, we force an error in both cases.
*/
#if defined(_STDC_C99) && (defined(__XOPEN_OR_POSIX) && !defined(_XPG6))
#error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
and pre-2001 POSIX applications"
#elif !defined(_STDC_C99) && \
(defined(__XOPEN_OR_POSIX) && defined(_XPG6))
#error "Compiler or options invalid; UNIX 03 and POSIX.1-2001 applications \
require the use of c99"
#endif
so the headers now error out for any definition of (say) _XOPEN_SOURCE < 600.
Obviously, the gnu11 patch is going to cause lots of trouble once GCC 5
is released.
The following patch handles this situation, using the most conservative
(and most ugly since using platform-specific code) approach of defining
the necessary feature test macros only for Solaris. I suppose the two
_XOPEN_SOURCE defines (both present from when the code was added) could
easily be changed to 600 instead; not sure why _POSIX_SOURCE would be
necessary in sigsetmask.c (also present from day one).
Anyway, this patch restores bootstrap, as verified on
i386-pc-solaris2.11 and sparc-sun-solaris2.11.
Ok for mainline?
Rainer
2014-10-22 Rainer Orth <[email protected]>
libobjc:
* thr.c (_XOPEN_SOURCE) [__sun__ && __svr4__]: Define as 600.
libiberty:
* sigsetmask.c (_POSIX_C_SOURCE) [__sun__ && __svr4__ &&
__STDC_VERSION__ >= 200112L]: Define as 200112L.
libgomp:
* config/posix/lock.c (_XOPEN_SOURCE) [__sun__ && __svr4__]:
Define as 600.
# HG changeset patch
# Parent 0dac6e8c4aa188f94c5502cf106a5aa12e266d5b
Fix gnu11 fallout on Solaris 10+
diff --git a/libgomp/config/posix/lock.c b/libgomp/config/posix/lock.c
--- a/libgomp/config/posix/lock.c
+++ b/libgomp/config/posix/lock.c
@@ -31,7 +31,11 @@
of the types exported. */
/* We need Unix98 extensions to get recursive locks. */
+#if defined __sun__ && defined __svr4__
+#define _XOPEN_SOURCE 600
+#else
#define _XOPEN_SOURCE 500
+#endif
#include "libgomp.h"
diff --git a/libiberty/sigsetmask.c b/libiberty/sigsetmask.c
--- a/libiberty/sigsetmask.c
+++ b/libiberty/sigsetmask.c
@@ -15,7 +15,12 @@ be the value @code{1}).
*/
+#if defined __sun__ && defined __svr4__ && __STDC_VERSION__ >= 200112L
+#define _POSIX_C_SOURCE 200112L
+#else
#define _POSIX_SOURCE
+#endif
+
#include <ansidecl.h>
/* Including <sys/types.h> seems to be needed by ISC. */
#include <sys/types.h>
diff --git a/libobjc/thr.c b/libobjc/thr.c
--- a/libobjc/thr.c
+++ b/libobjc/thr.c
@@ -28,7 +28,11 @@ see the files COPYING3 and COPYING.RUNTI
/* The line below is needed for declarations of functions such as
pthread_mutexattr_settype, without which gthr-posix.h may fail to
compile within libobjc. */
+#if defined __sun__ && defined __svr4__
+#define _XOPEN_SOURCE 600
+#else
#define _XOPEN_SOURCE 500
+#endif
#include "config.h"
#include "tconfig.h"
#include "coretypes.h"
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University