[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