[PATCH] build: Fix ax_pthread.m4 on Solaris 11.4

Rainer Orth <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
As uncovered by PR testsuite/125310, libcaf_shmem isn't built on
Solaris.  This happens because the AX_PTHREAD autoconf macro erroneously
thinks that Solaris lacks pthreads support.

The problem is that the macros expects _REENTRANT to be defined in
multithreaded programs.  However, as described in
https://gcc.gnu.org/gcc-16/porting_to.html#solaris the Solaris 11.4
system headers no longer reference _REENTRANT, so GCC 16 doesn't define
it any longer.

The issue is still present in current ax_pthread.m4 (serial 31) in the
autoconf archive.  This patch fixes this by only requiring _REENTRANT in
older Solaris versions that still need it by checking for pre-XPG7
system headers.

Bootstrapped without regressions on i386-pc-solaris2.11 and
sparc-sun-solaris2.11.  Also tested manually on Solaris 11.3.

Ok for trunk?

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2026-05-14  Rainer Orth  <[email protected]>

	config:
	* ax_pthread.m4 (ax_pthread_check_macro) <solaris*>: Only require
	_REENTRANT before Solaris 11.4

	libgfortran:
	* configure: Regenerate.
sol2-config-ax_pthread.patch (text/x-patch, 1.9 KB)
# HG changeset patch
# Parent  8ee4b3f549ede67c2b3e8c7e5c6cf3e1ec99fd7f
config: Fix ax_pthread.m4 on Solaris 11.4

diff --git a/config/ax_pthread.m4 b/config/ax_pthread.m4
--- a/config/ax_pthread.m4
+++ b/config/ax_pthread.m4
@@ -208,7 +208,22 @@ AS_IF([test "x$GCC" = "xyes"],
 # correctly enabled
 
 case $host_os in
-        darwin* | hpux* | linux* | osf* | solaris*)
+        solaris*)
+        # Solaris 11.4 introduced XPG7 support and did away with the need for
+        # _REENTRANT.
+
+        AC_EGREP_CPP([AX_PTHREAD_SOLARIS__REENTRANT],
+            [
+#            undef _XOPEN_SOURCE
+#            include <sys/feature_tests.h>
+#            if _XOPEN_VERSION < 700
+             AX_PTHREAD_SOLARIS__REENTRANT
+#            endif
+            ],
+            [ax_pthread_check_macro="_REENTRANT"],
+            [ax_pthread_check_macro="--"])
+        ;;
+        darwin* | hpux* | linux* | osf*)
         ax_pthread_check_macro="_REENTRANT"
         ;;
 
diff --git a/libgfortran/configure b/libgfortran/configure
--- a/libgfortran/configure
+++ b/libgfortran/configure
@@ -17917,7 +17917,30 @@ fi
 # correctly enabled
 
 case $host_os in
-        darwin* | hpux* | linux* | osf* | solaris*)
+        solaris*)
+        # Solaris 11.4 introduced XPG7 support and did away with the need for
+        # _REENTRANT.
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#            undef _XOPEN_SOURCE
+#            include <sys/feature_tests.h>
+#            if _XOPEN_VERSION < 700
+             AX_PTHREAD_SOLARIS__REENTRANT
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_SOLARIS__REENTRANT" >/dev/null 2>&1; then :
+  ax_pthread_check_macro="_REENTRANT"
+else
+  ax_pthread_check_macro="--"
+fi
+rm -f conftest*
+
+        ;;
+        darwin* | hpux* | linux* | osf*)
         ax_pthread_check_macro="_REENTRANT"
         ;;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.