* [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
@ 2014-10-22 11:57 Rainer Orth
2014-10-23 19:03 ` Richard Henderson
2014-10-23 19:59 ` Andrew Pinski
0 siblings, 2 replies; 7+ messages in thread
From: Rainer Orth @ 2014-10-22 11:57 UTC (permalink / raw)
To: gcc-patches
Cc: Richard Henderson, Jakub Jelinek, Ian Lance Taylor, Andrew Pinski
[-- Attachment #1: Type: text/plain, Size: 1850 bytes --]
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 <ro@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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol2-gnu11-fallout.patch --]
[-- Type: text/x-patch, Size: 1399 bytes --]
# 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"
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
2014-10-22 11:57 [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+ Rainer Orth
@ 2014-10-23 19:03 ` Richard Henderson
2014-10-24 9:01 ` Rainer Orth
2014-10-23 19:59 ` Andrew Pinski
1 sibling, 1 reply; 7+ messages in thread
From: Richard Henderson @ 2014-10-23 19:03 UTC (permalink / raw)
To: Rainer Orth, gcc-patches; +Cc: Jakub Jelinek, Ian Lance Taylor, Andrew Pinski
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.
I would like the comments updated to mention the reason for XPG6; just saying
that Solaris requires it for C99 and later seems sufficient.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
2014-10-22 11:57 [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+ Rainer Orth
2014-10-23 19:03 ` Richard Henderson
@ 2014-10-23 19:59 ` Andrew Pinski
1 sibling, 0 replies; 7+ messages in thread
From: Andrew Pinski @ 2014-10-23 19:59 UTC (permalink / raw)
To: Rainer Orth
Cc: GCC Patches, Richard Henderson, Jakub Jelinek, Ian Lance Taylor
On Wed, Oct 22, 2014 at 4:43 AM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> 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.
>
> 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 <ro@CeBiTec.Uni-Bielefeld.DE>
>
> libobjc:
> * thr.c (_XOPEN_SOURCE) [__sun__ && __svr4__]: Define as 600.
This is fine.
Thanks,
Andrew
>
> 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.
>
>
>
> --
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
2014-10-23 19:03 ` Richard Henderson
@ 2014-10-24 9:01 ` Rainer Orth
2014-10-27 15:13 ` Richard Henderson
0 siblings, 1 reply; 7+ messages in thread
From: Rainer Orth @ 2014-10-24 9:01 UTC (permalink / raw)
To: Richard Henderson
Cc: gcc-patches, Jakub Jelinek, Ian Lance Taylor, Andrew Pinski
Richard Henderson <rth@redhat.com> 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
2014-10-24 9:01 ` Rainer Orth
@ 2014-10-27 15:13 ` Richard Henderson
2014-11-03 16:22 ` Rainer Orth
0 siblings, 1 reply; 7+ messages in thread
From: Richard Henderson @ 2014-10-27 15:13 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, Jakub Jelinek, Ian Lance Taylor, Andrew Pinski
On 10/24/2014 01:56 AM, Rainer Orth wrote:
> 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.
Probably.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
2014-10-27 15:13 ` Richard Henderson
@ 2014-11-03 16:22 ` Rainer Orth
2014-11-04 8:36 ` Richard Henderson
0 siblings, 1 reply; 7+ messages in thread
From: Rainer Orth @ 2014-11-03 16:22 UTC (permalink / raw)
To: Richard Henderson
Cc: gcc-patches, Jakub Jelinek, Ian Lance Taylor, Andrew Pinski
[-- Attachment #1: Type: text/plain, Size: 968 bytes --]
Richard Henderson <rth@redhat.com> writes:
> On 10/24/2014 01:56 AM, Rainer Orth wrote:
>> 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.
>
> Probably.
I've included the following patch in my Solaris 10, 11, and Linux/x86_64
bootstraps for some time now. I guess the risk of just defining
_XOPEN_SOURCE to 600 is manageable and eventual fallout restricted to
GCC; not sure about the libiberty change, given that it probably
supports far more and older systems than GCC does.
Anyway: ok for mainline?
Thanks.
Rainer
2014-10-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
libobjc:
* thr.c (_XOPEN_SOURCE): Define as 600.
libiberty:
* sigsetmask.c (_POSIX_SOURCE): Remove.
libgomp:
* config/posix/lock.c (_XOPEN_SOURCE) Define as 600.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol2-gnu11-fallout.patch --]
[-- Type: text/x-patch, Size: 1491 bytes --]
# HG changeset patch
# Parent 0ae9b18fcb6f31523dd31f1825a3bb540ad84289
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
@@ -30,8 +30,9 @@
to do better and streamline the locking as well as reduce the size
of the types exported. */
-/* We need Unix98 extensions to get recursive locks. */
-#define _XOPEN_SOURCE 500
+/* We need UNIX98/XPG5 extensions to get recursive locks. Request XPG6 since
+ Solaris requires this for C99 and later. */
+#define _XOPEN_SOURCE 600
#include "libgomp.h"
diff --git a/libiberty/sigsetmask.c b/libiberty/sigsetmask.c
--- a/libiberty/sigsetmask.c
+++ b/libiberty/sigsetmask.c
@@ -15,7 +15,6 @@ be the value @code{1}).
*/
-#define _POSIX_SOURCE
#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
@@ -27,8 +27,9 @@ see the files COPYING3 and COPYING.RUNTI
#define _LIBOBJC
/* 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. */
-#define _XOPEN_SOURCE 500
+ compile within libobjc. While we only need XPG5 for this, Solaris
+ requires XPG6 for C99 and later. */
+#define _XOPEN_SOURCE 600
#include "config.h"
#include "tconfig.h"
#include "coretypes.h"
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+
2014-11-03 16:22 ` Rainer Orth
@ 2014-11-04 8:36 ` Richard Henderson
0 siblings, 0 replies; 7+ messages in thread
From: Richard Henderson @ 2014-11-04 8:36 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, Jakub Jelinek, Ian Lance Taylor, Andrew Pinski
On 11/03/2014 05:22 PM, Rainer Orth wrote:
> 2014-10-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
>
> libobjc:
> * thr.c (_XOPEN_SOURCE): Define as 600.
>
> libiberty:
> * sigsetmask.c (_POSIX_SOURCE): Remove.
>
> libgomp:
> * config/posix/lock.c (_XOPEN_SOURCE) Define as 600.
Ok.
r~
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2014-11-04 8:36 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-22 11:57 [libgomp, libiberty, libobjc] Fix gnu11 fallout on Solaris 10+ Rainer Orth
2014-10-23 19:03 ` Richard Henderson
2014-10-24 9:01 ` Rainer Orth
2014-10-27 15:13 ` Richard Henderson
2014-11-03 16:22 ` Rainer Orth
2014-11-04 8:36 ` Richard Henderson
2014-10-23 19:59 ` Andrew Pinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).