* [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot
@ 2020-04-20 13:18 Maciej W. Rozycki
2020-04-22 18:04 ` Jeff Law
0 siblings, 1 reply; 5+ messages in thread
From: Maciej W. Rozycki @ 2020-04-20 13:18 UTC (permalink / raw)
To: gcc-patches
Cc: Jeff Law, Mike Stump, Chung-Lin Tang, Ian Lance Taylor, libffi-discuss
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
This is a combined backport of the relevant parts of upstream libffi
changes as follows:
- commit 8308984e479e ("[PATCH] Make sure we're running dejagnu tests
with the right compiler."),
- commit 2d9b3939751b ("[PATCH] Fix for closures with sunpro compiler"),
- commit 0c3824702d3d ("[PATCH] Always set CC_FOR_TARGET for dejagnu, to
make the testsuite respect $CC"),
- commit 7d698125b1f0 ("[PATCH] Use the proper C++ compiler to run C++
tests"),
- commit 6b6df1a7bb37 ("[PATCH] Adds `local.exp` to CLEANFILES"),
- commit 6cf0dea78a5a ("[PATCH] Change CLEANFILES to DISTCLEANFILES")
libffi/
* Makefile.am (DISTCLEANFILES): New variable.
* configure.ac: Produce `local.exp'.
* Makefile.in: Regenerate.
* configure: Regenerate.
* testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New
variable.
* testsuite/Makefile.in: Regenerate.
---
Hi,
As you may recall I have proposed a clean solution for the problem
discussed here, which I posted for inclusion with upstream libffi, with an
intent to have it backported to GCC as soon as it has been accepted by the
maintainer, as a part of patch series that have been archived here:
<https://sourceware.org/pipermail/libffi-discuss/2020/002502.html>.
I have pinged the series last week:
<https://sourceware.org/pipermail/libffi-discuss/2020/002517.html>,
and then again just now:
<https://sourceware.org/pipermail/libffi-discuss/2020/002518.html>.
I think with the GCC 10 release about to be rolled out we need a
contingency plan, so I propose that, unless my proposed libffi changes
have been accepted upstream real soon now, such as by the end of this
coming Friday AoE, we include this change instead.
Therefore, OK to apply once Friday AoE has passed and the upstream libffi
changes have gone nowhere?
Maciej
[Change log corrected to include history before v4.]
Changes from v4:
- Replace with a backport of the partially complete solution already
present upstream.
Changes from v3:
- Replace with a backport of a change submitted upstream.
Changes from v2:
- Revert to v1.
- Rename testsuite/libffi-test-support.exp.in to
testsuite/libffi-site-extra.exp.in.
Changes from v1:
- Remove testsuite/libffi-test-support.exp.in and the associated changes.
- Pass $(CC) via `--tool_exec' in $(AM_RUNTESTFLAGS).
---
libffi/Makefile.am | 3 +++
libffi/Makefile.in | 4 ++++
libffi/configure | 5 +++++
libffi/configure.ac | 5 +++++
libffi/testsuite/Makefile.am | 2 ++
libffi/testsuite/Makefile.in | 1 +
6 files changed, 20 insertions(+)
gcc-test-libffi-cc-for-target.diff
Index: gcc/libffi/Makefile.am
===================================================================
--- gcc.orig/libffi/Makefile.am
+++ gcc/libffi/Makefile.am
@@ -15,6 +15,9 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
libffi.xcodeproj/project.pbxproj \
libtool-ldflags
+# local.exp is generated by configure
+DISTCLEANFILES = local.exp
+
# Automake Documentation:
# If your package has Texinfo files in many directories, you can use the
# variable TEXINFO_TEX to tell Automake where to find the canonical
Index: gcc/libffi/Makefile.in
===================================================================
--- gcc.orig/libffi/Makefile.in
+++ gcc/libffi/Makefile.in
@@ -454,6 +454,9 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
libtool-ldflags
+# local.exp is generated by configure
+DISTCLEANFILES = local.exp
+
# Automake Documentation:
# If your package has Texinfo files in many directories, you can use the
# variable TEXINFO_TEX to tell Automake where to find the canonical
@@ -1674,6 +1677,7 @@ installcheck: installcheck-recursive
-rm -f src/x86/$(am__dirstamp)
-rm -f src/xtensa/$(DEPDIR)/$(am__dirstamp)
-rm -f src/xtensa/$(am__dirstamp)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
Index: gcc/libffi/configure
===================================================================
--- gcc.orig/libffi/configure
+++ gcc/libffi/configure
@@ -14961,6 +14961,11 @@ _ACEOF
+cat > local.exp <<EOF
+set CC_FOR_TARGET "$CC"
+set CXX_FOR_TARGET "$CXX"
+EOF
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
Index: gcc/libffi/configure.ac
===================================================================
--- gcc.orig/libffi/configure.ac
+++ gcc/libffi/configure.ac
@@ -61,6 +61,11 @@ AC_PROG_LIBTOOL
# Test for 64-bit build.
AC_CHECK_SIZEOF([size_t])
+cat > local.exp <<EOF
+set CC_FOR_TARGET "$CC"
+set CXX_FOR_TARGET "$CXX"
+EOF
+
AM_MAINTAINER_MODE
AC_CHECK_HEADERS(sys/mman.h)
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
@@ -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 \
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot
2020-04-20 13:18 [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot Maciej W. Rozycki
@ 2020-04-22 18:04 ` Jeff Law
2020-04-25 20:33 ` Maciej W. Rozycki
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Law @ 2020-04-22 18:04 UTC (permalink / raw)
To: Maciej W. Rozycki, gcc-patches
Cc: Mike Stump, Chung-Lin Tang, Ian Lance Taylor, libffi-discuss
On Mon, 2020-04-20 at 14:18 +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
>
> This is a combined backport of the relevant parts of upstream libffi
> changes as follows:
>
> - commit 8308984e479e ("[PATCH] Make sure we're running dejagnu tests
> with the right compiler."),
>
> - commit 2d9b3939751b ("[PATCH] Fix for closures with sunpro compiler"),
>
> - commit 0c3824702d3d ("[PATCH] Always set CC_FOR_TARGET for dejagnu, to
> make the testsuite respect $CC"),
>
> - commit 7d698125b1f0 ("[PATCH] Use the proper C++ compiler to run C++
> tests"),
>
> - commit 6b6df1a7bb37 ("[PATCH] Adds `local.exp` to CLEANFILES"),
>
> - commit 6cf0dea78a5a ("[PATCH] Change CLEANFILES to DISTCLEANFILES")
>
> libffi/
> * Makefile.am (DISTCLEANFILES): New variable.
> * configure.ac: Produce `local.exp'.
> * Makefile.in: Regenerate.
> * configure: Regenerate.
> * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New
> variable.
> * testsuite/Makefile.in: Regenerate.
OK
jeff
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot
2020-04-22 18:04 ` Jeff Law
@ 2020-04-25 20:33 ` Maciej W. Rozycki
2020-04-29 17:14 ` Jeff Law
0 siblings, 1 reply; 5+ messages in thread
From: Maciej W. Rozycki @ 2020-04-25 20:33 UTC (permalink / raw)
To: Jeff Law
Cc: gcc-patches, Mike Stump, Chung-Lin Tang, Ian Lance Taylor,
libffi-discuss
On Wed, 22 Apr 2020, Jeff Law wrote:
> > libffi/
> > * Makefile.am (DISTCLEANFILES): New variable.
> > * configure.ac: Produce `local.exp'.
> > * Makefile.in: Regenerate.
> > * configure: Regenerate.
> > * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New
> > variable.
> > * testsuite/Makefile.in: Regenerate.
> OK
> jeff
Committed now then, according to schedule, thanks for your review. We
may revisit the backport of improvements I previously proposed when/if the
upstream libffi maintainer decides to accept them.
Maciej
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot
2020-04-25 20:33 ` Maciej W. Rozycki
@ 2020-04-29 17:14 ` Jeff Law
2020-04-29 20:48 ` Florian Weimer
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Law @ 2020-04-29 17:14 UTC (permalink / raw)
To: Maciej W. Rozycki
Cc: gcc-patches, Mike Stump, Chung-Lin Tang, Ian Lance Taylor,
libffi-discuss
On Sat, 2020-04-25 at 21:33 +0100, Maciej W. Rozycki wrote:
> On Wed, 22 Apr 2020, Jeff Law wrote:
>
> > > libffi/
> > > * Makefile.am (DISTCLEANFILES): New variable.
> > > * configure.ac: Produce `local.exp'.
> > > * Makefile.in: Regenerate.
> > > * configure: Regenerate.
> > > * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): New
> > > variable.
> > > * testsuite/Makefile.in: Regenerate.
> > OK
> > jeff
>
> Committed now then, according to schedule, thanks for your review. We
> may revisit the backport of improvements I previously proposed when/if the
> upstream libffi maintainer decides to accept them.
ACK.
FWIW, I'm expecting Florian to be digging into some libffi stuff relatively soon
and once those issues are ironed out, there'll be a push for a libffi upstream
release -- which seems like a good place to re-sync GCC to the upstream libffi
master.
jeff
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot
2020-04-29 17:14 ` Jeff Law
@ 2020-04-29 20:48 ` Florian Weimer
0 siblings, 0 replies; 5+ messages in thread
From: Florian Weimer @ 2020-04-29 20:48 UTC (permalink / raw)
To: Jeff Law via Libffi-discuss
Cc: Maciej W. Rozycki, law, Mike Stump, gcc-patches,
Ian Lance Taylor, Chung-Lin Tang
* Jeff Law via Libffi-discuss:
> FWIW, I'm expecting Florian to be digging into some libffi stuff
> relatively soon and once those issues are ironed out, there'll be a
> push for a libffi upstream release -- which seems like a good place
> to re-sync GCC to the upstream libffi master.
I'm not going to work on the master branch for now, so this should not
impact the release. The goal is specifically to support more hardware
for legacy binaries with the old libffi.so.6 soname.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-04-29 20:48 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-20 13:18 [PATCH v5 GCC] libffi/test: Fix compilation for build sysroot Maciej W. Rozycki
2020-04-22 18:04 ` Jeff Law
2020-04-25 20:33 ` Maciej W. Rozycki
2020-04-29 17:14 ` Jeff Law
2020-04-29 20:48 ` Florian Weimer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).