Files
binutils-gdb/libsframe/Makefile.am
Rainer Orth 13793e3983 libsframe: testsuite: Fix testsuite build on Solaris [PR33168]
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

  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, I've moved all testsuite includes into a new
sframe-test.h, adding a workaround for the wait conflict.

-Wall and -I$(srcdir) have been removed from AM_CPPFLAGS since they
don't seem to be needed.  To fix the Makefile fragment duplication, the
local.mk files now use $(testsuite_LDADD) and $(testsuite_CPPFLAGS)
throughout.

Tested on {i386,amd64}-pc-solaris2.11, {sparc,sparcv9}-sun-solaris2.11,
{x86_64,i686}-pc-linux-gnu, and amd64-pc-freebsd14.0.

Coauthored-By: Alan Modra <amodra@gmail.com>

2025-08-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
	    Alan Modra  <amodra@gmail.com>

	libsframe:
	PR libsframe/33168
	* testsuite/sframe-test.h: New file.
	* testsuite/libsframe.decode/be-flipping.c: Replace includes by
	sframe-test.h.
	* testsuite/libsframe.decode/frecnt-1.c: Likewise.
	* testsuite/libsframe.decode/frecnt-2.c: Likewise.
	* testsuite/libsframe.encode/encode-1.c: Likewise.
	* testsuite/libsframe.find/findfre-1.c: Likewise.
	* testsuite/libsframe.find/findfunc-1.c: Likewise.
	* testsuite/libsframe.find/plt-findfre-1.c: Likewise.
	* testsuite/libsframe.find/plt-findfre-2.c: Likewise.

	* Makefile.am (AM_CPPFLAGS): Remove -I$(srcdir).
	* Makefile.in: Regenerate.
	* testsuite/local.mk (testsuite_LDADD): New variable.
	(testsuite_CPPFLAGS): Likewise.
	* testsuite/libsframe.decode/local.mk: Use $(testsuite_LDADD),
	$(testsuite_CPPFLAGS).
	* testsuite/libsframe.encode/local.mk: Likewise.
	* testsuite/libsframe.find/local.mk: Likewise.
2025-09-12 09:50:34 +02:00

62 lines
2.1 KiB
Makefile

## Process this file with automake to produce Makefile.in.
#
# Copyright (C) 2022-2025 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING. If not see
# <http://www.gnu.org/licenses/>.
#
ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
AUTOMAKE_OPTIONS = dejagnu foreign no-texinfo.tex info-in-builddir subdir-objects
# Variables that we might accumulate conditionally or in subdirs.
info_TEXINFOS =
DISTCLEANFILES =
MAINTAINERCLEANFILES =
INCDIR = $(srcdir)/../include
# include libctf for swap.h
AM_CPPFLAGS = -I$(srcdir)/../include -I$(srcdir)/../libctf
AM_CFLAGS = @ac_libsframe_warn_cflags@
libsframe_version_info = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
# libsframe does not restrict the set of exported symbols. So, if linker does
# not support symbol versioning, there is no need to fall back on libtool's
# -export-symbols option.
if HAVE_LD_VERSION_SCRIPT
if HAVE_SOLARIS_LD
libsframe_version_script = -Wl,-M -Wl,$(srcdir)/libsframe.ver
else
libsframe_version_script = -Wl,--version-script=$(srcdir)/libsframe.ver
endif
endif
if INSTALL_LIBBFD
lib_LTLIBRARIES = libsframe.la
include_HEADERS = $(INCDIR)/sframe.h $(INCDIR)/sframe-api.h
else
include_HEADERS =
noinst_LTLIBRARIES = libsframe.la
endif
libsframe_la_SOURCES = sframe.c sframe-dump.c sframe-error.c
libsframe_la_CPPFLAGS = $(AM_CPPFLAGS)
libsframe_la_LDFLAGS = $(libsframe_version_info) $(libsframe_version_script)
EXTRA_DIST = libtool-version libsframe.ver
diststuff: $(EXTRA_DIST) info
include doc/local.mk
include testsuite/local.mk