https://sourceware.org/bugzilla/show_bug.cgi?id=33168
Bug ID: 33168
Summary: libsframe tests don't build on Solaris
Product: binutils
Version: 2.45
Status: NEW
Severity: normal
Priority: P2
Component: libsframe
Assignee: indu.bhagat at oracle dot com
Reporter: ro at gcc dot gnu.org
Target Milestone: ---
Host: *-*-solaris2.11
Target: *-*-solaris2.11
Build: *-*-solaris2.11
I just noticed during make -k check that the libsframe tests don't build at
all on Solaris. Since they aren't even built, the failures don't show up in
libsframe.sum and are easily missed.
The actual failure is
In file included from
/vol/src/gnu/binutils/hg/binutils-2.45-branch/local/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
/vol/src/gnu/binutils/hg/binutils-2.45-branch/local/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 was removed in upstream DejaGnu, the removal only happened after
the latest release, 1.6.3.
To fix this, I see two (non-intrusive) options:
* Remove AC_USE_SYSTEM_EXTENSIONS if it's not actually needed and just a
copy&paste artefact.
* A patch like the following:
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])
I used this successfully to test libsframe on i386-pc-solaris2.11:
=== libsframe Summary ===
# of expected passes 129
--
You are receiving this mail because:
You are on the CC list for the bug.