[v4,2/5] libffi/test: Fix compilation for build sysroot

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
Related show

Commit Message

Christophe Lyon via Gcc-patches April 3, 2020, 11:01 p.m.
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.
---
This is a backport of upstream libffi change as recorded here: 
<https://sourceware.org/pipermail/libffi-discuss/2020/002503.html>.

New change in v4.
---
 libffi/configure              |    3 ++-
 libffi/configure.ac           |    2 +-
 libffi/testsuite/Makefile.am  |    2 ++
 libffi/testsuite/Makefile.in  |    5 ++++-
 libffi/testsuite/local.exp.in |    2 ++
 5 files changed, 11 insertions(+), 3 deletions(-)

gcc-test-libffi-cc-for-target-template.diff

Comments

Christophe Lyon via Gcc-patches April 6, 2020, 6:06 p.m. | #1
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
>
Christophe Lyon via Gcc-patches April 6, 2020, 8:21 p.m. | #2
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

Patch

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