[PATCH] libsframe: testsuite: Fix testsuite build on Solaris [PR33168]
Rainer Orth
ro@CeBiTec.Uni-Bielefeld.DE
Fri Aug 15 08:08:38 GMT 2025
As reported in PR libsframe/33168, the libsframe tests don't build on
Solaris. The failure is
In file included from libsframe/testsuite/libsframe.decode/be-flipping.c:28:
/usr/include/dejagnu.h:48:1: error: conflicting types for ‘wait’; have ‘void(void)’
48 | wait (void)
| ^~~~
In file included from /usr/include/stdlib.h:16,
from libsframe/testsuite/libsframe.decode/be-flipping.c:21:
/usr/include/sys/wait.h:85:14: note: previous declaration of ‘wait’ with type ‘pid_t(int *)’ {aka ‘long int(int *)’}
85 | extern pid_t wait(int *);
| ^~~~
We have a combination of two factors here:
* Solaris <stdlib.h> has
#if defined(__EXTENSIONS__) || defined(_XPG4)
#include <sys/wait.h>
#endif
and configure.ac predefines __EXTENSIONS__ due to the use of
AC_USE_SYSTEM_EXTENSIONS.
* This conflicts with <dejagnu.h>'s definition
void
wait (void)
{
...
}
While this version of wait was removed in upstream DejaGnu, the removal
only happened after the latest release, 1.6.3.
To avoid this, this patch just removes AC_USE_SYSTEM_EXTENSIONS which is
responsible for the __EXTENSIONS__ definition.
AC_USE_SYSTEM_EXTENSIONS was initially introduced due to PR
binutils/6526 for the benefit of Interix 3.5 and carried forward from
there to all configure.ac'.s. However, AFAICS Interix isn't supported
by libsframe at all, so removing it seems to be safe.
Tested on {i386,amd64}-pc-solaris2.11, {sparc,sparcv9}-sun-solaris2.11,
{x86_64,i686}-pc-linux-gnu, and amd64-pc-freebsd14.0.
Ok for trunk?
The PR also contains a less intrusive patch which only disables the
__EXTENSIONS__ definition on Solaris. It was meant for inclusion in
binutils 2.45, but this ship has already sailed:
diff --git a/libsframe/configure.ac b/libsframe/configure.ac
--- a/libsframe/configure.ac
+++ b/libsframe/configure.ac
@@ -23,6 +23,13 @@ AC_CONFIG_SRCDIR(sframe.c)
AC_CANONICAL_TARGET
+case "${host}" in
+ # __EXTENSIONS__ includes <sys/wait.h> on Solaris, conflicting with
+ # dejagnu.h's wait definition up to DejaGnu 1.6.3.
+ *-*-solaris*)
+ ac_cv_safe_to_define___extensions__=no
+ ;;
+esac
AC_USE_SYSTEM_EXTENSIONS
AM_INIT_AUTOMAKE
AM_SILENT_RULES([yes])
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2025-08-03 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
libsframe:
PR libsframe/33168
* configure.ac (AC_USE_SYSTEM_EXTENSIONS): Remove.
* configure: Regenerate.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sol2-libsframe-testsuite-dg.patch
Type: text/x-patch
Size: 101542 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20250815/26232069/attachment-0001.bin>
More information about the Binutils
mailing list