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 <r...@cebitec.uni-bielefeld.de> 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