Message ID | alpine.LFD.2.21.2004031738160.461@redsun52.ssa.fujisawa.hgst.com |
---|---|
State | New |
Headers | show |
Series | Fix library testsuite compilation for build sysroot | expand |
On Sat, 2020-04-04 at 00:01 +0100, Maciej W. Rozycki wrote: > Fix a problem with the libffi 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 > inability to actually choose any compiler at all in a cross-compilation > configuration. > > Address this problem by providing a DejaGNU configuration file defining > the compiler to use, via the CC_FOR_TARGET 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: > > FAIL: libffi.call/closure_fn0.c -W -Wall -Wno-psabi -O0 (test for excess > errors) > Excess errors: > default_target_compile: No compiler to compile with > UNRESOLVED: libffi.call/closure_fn0.c -W -Wall -Wno-psabi -O0 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: > > === libffi Summary === > > # of unexpected failures 708 > # of unresolved testcases 708 > # of unsupported tests 30 > > to: > > === libffi Summary === > > # of expected passes 1934 > # of unsupported tests 28 > > libffi/ > * configure.ac: Add testsuite/local.exp to output files. > * configure: Regenerate. > * testsuite/local.exp.in: New file. > * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New > variable. > * testsuite/Makefile.in: Regenerate. Oh, I see it now. THe patches I ack'd were actually for upstream libffi. You should actually wait for a libffi maintainer to ack those, not me :-) Sorry for the confusion. Both backports are OK once they're upstreamed. jeff >
On Mon, 6 Apr 2020, Jeff Law wrote: > > libffi/ > > * configure.ac: Add testsuite/local.exp to output files. > > * configure: Regenerate. > > * testsuite/local.exp.in: New file. > > * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New > > variable. > > * testsuite/Makefile.in: Regenerate. > Oh, I see it now. THe patches I ack'd were actually for upstream libffi. > > You should actually wait for a libffi maintainer to ack those, not me :-) Sorry > for the confusion. Sorry to make it unclear. I chose to cc the other mailing list with the libffi part of both submissions so as to give a chance to chime in to members of both communities. We are quite tightly coupled with each other here after all and my experience over the many years I have been involved has been that the bits related to Autotools are often quite tricky and hard to get right (Autotools are fine tools in my experience, it's just you need to be thorough with them as they tend not to forgive a cursory approach). > Both backports are OK once they're upstreamed. Thanks for your ack; it was my intent to get these upstream first, and I realise there can be changes requested that will require the GCC backport to be adjusted accordingly (and reviewed again). Maciej
Index: gcc/libffi/configure =================================================================== --- gcc.orig/libffi/configure +++ gcc/libffi/configure @@ -16662,7 +16662,7 @@ ac_config_commands="$ac_config_commands ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h" -ac_config_files="$ac_config_files include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc" +ac_config_files="$ac_config_files include/Makefile include/ffi.h Makefile testsuite/Makefile testsuite/local.exp man/Makefile libffi.pc" cat >confcache <<\_ACEOF @@ -17829,6 +17829,7 @@ do "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;; + "testsuite/local.exp") CONFIG_FILES="$CONFIG_FILES testsuite/local.exp" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "libffi.pc") CONFIG_FILES="$CONFIG_FILES libffi.pc" ;; Index: gcc/libffi/configure.ac =================================================================== --- gcc.orig/libffi/configure.ac +++ gcc/libffi/configure.ac @@ -377,6 +377,6 @@ test -d src/$TARGETDIR || mkdir src/$TAR AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h) -AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile man/Makefile libffi.pc) +AC_CONFIG_FILES(include/Makefile include/ffi.h Makefile testsuite/Makefile testsuite/local.exp man/Makefile libffi.pc) AC_OUTPUT Index: gcc/libffi/testsuite/Makefile.am =================================================================== --- gcc.orig/libffi/testsuite/Makefile.am +++ gcc/libffi/testsuite/Makefile.am @@ -13,6 +13,8 @@ RUNTEST = `if [ -f $(top_srcdir)/../deja AM_RUNTESTFLAGS = +EXTRA_DEJAGNU_SITE_CONFIG = local.exp + CLEANFILES = *.exe core* *.log *.sum EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \ Index: gcc/libffi/testsuite/Makefile.in =================================================================== --- gcc.orig/libffi/testsuite/Makefile.in +++ gcc/libffi/testsuite/Makefile.in @@ -106,7 +106,7 @@ am__configure_deps = $(am__aclocal_m4_de DIST_COMMON = $(srcdir)/Makefile.am mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = $(top_builddir)/fficonfig.h -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = local.exp CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -279,6 +279,7 @@ RUNTEST = `if [ -f $(top_srcdir)/../deja echo $(top_srcdir)/../dejagnu/runtest ; \ else echo runtest; fi` +EXTRA_DEJAGNU_SITE_CONFIG = local.exp CLEANFILES = *.exe core* *.log *.sum EXTRA_DIST = config/default.exp libffi.call/cls_19byte.c \ libffi.call/cls_align_longdouble_split.c \ @@ -390,6 +391,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): +local.exp: $(top_builddir)/config.status $(srcdir)/local.exp.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo Index: gcc/libffi/testsuite/local.exp.in =================================================================== --- /dev/null +++ gcc/libffi/testsuite/local.exp.in @@ -0,0 +1,2 @@ +set CC_FOR_TARGET "@CC@" +set CXX_FOR_TARGET "@CXX@"