[v4,1/5] libatomic/test: Fix compilation for build sysroot

Message ID alpine.LFD.2.21.2004031734460.461@redsun52.ssa.fujisawa.hgst.com
State New
Headers show
Series
  • Fix library testsuite compilation for build sysroot
Related show

Commit Message

Fix a problem with the libatomic testsuite using a method to determine 
the compiler to use resulting in the tool being different from one the 
library has been built with, and causing a catastrophic failure from the 
lack of a suitable `--sysroot=' option where the `--with-build-sysroot=' 
configuration option has been used to build the compiler resulting in 
the inability to link executables.

Address this problem by providing a DejaGNU configuration file defining 
the compiler to use, via the GCC_UNDER_TEST TCL variable, set from $CC 
by autoconf, which will have all the required options set for the target 
compiler to build executables in the environment configured, removing 
failures like:

.../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
.../bin/riscv64-linux-gnu-ld: cannot find -lm
collect2: error: ld returned 1 exit status
compiler exited with status 1
FAIL: libatomic.c/atomic-compare-exchange-1.c (test for excess errors)
Excess errors:
.../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory
.../bin/riscv64-linux-gnu-ld: cannot find -lm

UNRESOLVED: libatomic.c/atomic-compare-exchange-1.c compilation failed to produce executable

and bringing overall test results for the `riscv64-linux-gnu' target 
(here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user 
emulation mode as the target board) from:

		=== libatomic Summary ===

# of unexpected failures	27
# of unresolved testcases	27

to:

		=== libatomic Summary ===

# of expected passes		54

	libatomic/
	* configure.ac: Add testsuite/libatomic-site-extra.exp to output 
	files.
	* configure: Regenerate.
	* libatomic/testsuite/libatomic-site-extra.exp.in: New file.
	* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New 
	variable.
	* testsuite/Makefile.in: Regenerate.
---
No change from v3.

Changes from v2:

- Revert to v1.

- Rename testsuite/libatomic-test-support.exp.in to 
  testsuite/libatomic-site-extra.exp.in.

Changes from v1:

- Remove testsuite/libatomic-test-support.exp.in and the associated
  changes.

- Pass $(CC) via `--tool_exec' in $(AM_RUNTESTFLAGS).
---
 libatomic/configure                             |    3 +++
 libatomic/configure.ac                          |    1 +
 libatomic/testsuite/Makefile.am                 |    2 ++
 libatomic/testsuite/Makefile.in                 |    5 ++++-
 libatomic/testsuite/libatomic-site-extra.exp.in |    1 +
 5 files changed, 11 insertions(+), 1 deletion(-)

gcc-test-libatomic-gcc-under-test.diff

Comments

On Sat, 2020-04-04 at 00:00 +0100, Maciej W. Rozycki wrote:
> Fix a problem with the libatomic testsuite using a method to determine 

> the compiler to use resulting in the tool being different from one the 

> library has been built with, and causing a catastrophic failure from the 

> lack of a suitable `--sysroot=' option where the `--with-build-sysroot=' 

> configuration option has been used to build the compiler resulting in 

> the inability to link executables.

> 

> Address this problem by providing a DejaGNU configuration file defining 

> the compiler to use, via the GCC_UNDER_TEST TCL variable, set from $CC 

> by autoconf, which will have all the required options set for the target 

> compiler to build executables in the environment configured, removing 

> failures like:

> 

> .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory

> .../bin/riscv64-linux-gnu-ld: cannot find -lm

> collect2: error: ld returned 1 exit status

> compiler exited with status 1

> FAIL: libatomic.c/atomic-compare-exchange-1.c (test for excess errors)

> Excess errors:

> .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory

> .../bin/riscv64-linux-gnu-ld: cannot find -lm

> 

> UNRESOLVED: libatomic.c/atomic-compare-exchange-1.c compilation failed to

> produce executable

> 

> and bringing overall test results for the `riscv64-linux-gnu' target 

> (here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user 

> emulation mode as the target board) from:

> 

> 		=== libatomic Summary ===

> 

> # of unexpected failures	27

> # of unresolved testcases	27

> 

> to:

> 

> 		=== libatomic Summary ===

> 

> # of expected passes		54

> 

> 	libatomic/

> 	* configure.ac: Add testsuite/libatomic-site-extra.exp to output 

> 	files.

> 	* configure: Regenerate.

> 	* libatomic/testsuite/libatomic-site-extra.exp.in: New file.

> 	* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New 

> 	variable.

> 	* testsuite/Makefile.in: Regenerate.

OK
jeff
>
On Mon, 6 Apr 2020, Jeff Law wrote:

> > 	libatomic/

> > 	* configure.ac: Add testsuite/libatomic-site-extra.exp to output 

> > 	files.

> > 	* configure: Regenerate.

> > 	* libatomic/testsuite/libatomic-site-extra.exp.in: New file.

> > 	* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New 

> > 	variable.

> > 	* testsuite/Makefile.in: Regenerate.

> OK

> jeff


 Committed now, thanks for your review.

  Maciej

Patch

Index: gcc/libatomic/configure
===================================================================
--- gcc.orig/libatomic/configure
+++ gcc/libatomic/configure
@@ -15728,6 +15728,8 @@  fi
 
 ac_config_files="$ac_config_files Makefile testsuite/Makefile"
 
+ac_config_files="$ac_config_files testsuite/libatomic-site-extra.exp"
+
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -16799,6 +16801,7 @@  do
     "gstdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS gstdint.h" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
+    "testsuite/libatomic-site-extra.exp") CONFIG_FILES="$CONFIG_FILES testsuite/libatomic-site-extra.exp" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
Index: gcc/libatomic/configure.ac
===================================================================
--- gcc.orig/libatomic/configure.ac
+++ gcc/libatomic/configure.ac
@@ -288,4 +288,5 @@  else
 fi
 
 AC_CONFIG_FILES(Makefile testsuite/Makefile)
+AC_CONFIG_FILES(testsuite/libatomic-site-extra.exp)
 AC_OUTPUT
Index: gcc/libatomic/testsuite/Makefile.am
===================================================================
--- gcc.orig/libatomic/testsuite/Makefile.am
+++ gcc/libatomic/testsuite/Makefile.am
@@ -11,3 +11,5 @@  EXPECT = $(shell if test -f $(top_buildd
 _RUNTEST = $(shell if test -f $(top_srcdir)/../dejagnu/runtest; then \
 	     echo $(top_srcdir)/../dejagnu/runtest; else echo runtest; fi)
 RUNTEST = $(_RUNTEST) $(AM_RUNTESTFLAGS)
+
+EXTRA_DEJAGNU_SITE_CONFIG = libatomic-site-extra.exp
Index: gcc/libatomic/testsuite/Makefile.in
===================================================================
--- gcc.orig/libatomic/testsuite/Makefile.in
+++ gcc/libatomic/testsuite/Makefile.in
@@ -109,7 +109,7 @@  am__configure_deps = $(am__aclocal_m4_de
 DIST_COMMON = $(srcdir)/Makefile.am
 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/auto-config.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = libatomic-site-extra.exp
 CONFIG_CLEAN_VPATH_FILES =
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -278,6 +278,7 @@  _RUNTEST = $(shell if test -f $(top_srcd
 	     echo $(top_srcdir)/../dejagnu/runtest; else echo runtest; fi)
 
 RUNTEST = $(_RUNTEST) $(AM_RUNTESTFLAGS)
+EXTRA_DEJAGNU_SITE_CONFIG = libatomic-site-extra.exp
 all: all-am
 
 .SUFFIXES:
@@ -310,6 +311,8 @@  $(top_srcdir)/configure: @MAINTAINER_MOD
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+libatomic-site-extra.exp: $(top_builddir)/config.status $(srcdir)/libatomic-site-extra.exp.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 mostlyclean-libtool:
 	-rm -f *.lo
Index: gcc/libatomic/testsuite/libatomic-site-extra.exp.in
===================================================================
--- /dev/null
+++ gcc/libatomic/testsuite/libatomic-site-extra.exp.in
@@ -0,0 +1 @@ 
+set GCC_UNDER_TEST {@CC@}