Richard Henderson <[email protected]> writes:
> On 10/22/2014 04:43 AM, Rainer Orth wrote:
>> 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.
>
> Hum.
>
> Does it hurt us to simply update to 600 everywhere? If we can, I'd prefer
> that
> as a solution. But if that causes more problems than it solves, I'm ok with
> this as a solution.
This certainly depends on what the oldest systems we still support are.
E.g. in Solaris 8 (no longer supported on mainline, just serving as
illustration) <sys/feature_test.h> we have for XPG5/UNIX 98:
#if (_XOPEN_SOURCE - 0 == 500)
#define _XPG5
Changing _XOPEN_SOURCE to 600 loses this completely. Same on Solaris 9
(equally no longer supported), and at least some pre-XPG6 systems, I fear.
I cannot tell if we still support any of those, though.
This might not even an issue for the cases as hand: e.g. even Solaris 8
<pthread.h> defines PTHREAD_MUTEX_RECURSIVE (the reason to define
_XOPEN_SOURCE in libgomp/config/posix/lock.c) unconditionally.
We might as well try and watch out for breakage, given that we are still
in stage1.
> I would like the comments updated to mention the reason for XPG6; just saying
> that Solaris requires it for C99 and later seems sufficient.
Sure, will do once we've decided which route to follow.
And even with the _XOPEN_SOURCE business out of the way, there's still
the question what to do about _POSIX_SOURCE in libiberty/sigsetmask.c.
Given that it was introduced almost 20 years ago, it may well be
unnecessary for the systems we still care about.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University