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 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@}