diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2022-11-15 21:11:54 +0100 |
---|---|---|
committer | Hans-Peter Nilsson <hp@bitrange.com> | 2022-11-16 18:19:17 +0100 |
commit | e91d51457532da6c2179b23359435f06d89488e7 (patch) | |
tree | 261ba7e78acb6f3158119e5497e62fd578171f67 | |
parent | 246bbdaa5f536b7a199dda9860c473137f40d622 (diff) | |
download | gcc-e91d51457532da6c2179b23359435f06d89488e7.zip gcc-e91d51457532da6c2179b23359435f06d89488e7.tar.gz gcc-e91d51457532da6c2179b23359435f06d89488e7.tar.bz2 |
testsuite: Fix mistransformed gcov
In commit r13-2619-g34b9a03353d3fd, [transform] was applied to all
invocations of gcov, for both out-of-tree and in-tree testing.
For in-tree cross builds, this means gcov was called as
"/path/to/gccobj/gcc/target-tuple-gcov" gcov-pr94029.c which is
incorrect, as it's there "/path/to/gccobj/gcc/gcov" until it's
installed. This caused a testsuite failure, like:
Running /x/gcc/gcc/testsuite/gcc.misc-tests/gcov.exp ...
FAIL: gcc.misc-tests/gcov-pr94029.c gcov failed: spawn failed
To avoid cumbersome conditionals, use a dedicated new helper function.
gcc/testsuite:
* lib/gcc-dg.exp (gcc-transform-out-of-tree): New proc.
* g++.dg/gcov/gcov.exp, gcc.misc-tests/gcov.exp: Call
gcc-transform-out-of-tree instead of transform.
-rw-r--r-- | gcc/testsuite/g++.dg/gcov/gcov.exp | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.misc-tests/gcov.exp | 4 | ||||
-rw-r--r-- | gcc/testsuite/lib/gcc-dg.exp | 13 |
3 files changed, 17 insertions, 4 deletions
diff --git a/gcc/testsuite/g++.dg/gcov/gcov.exp b/gcc/testsuite/g++.dg/gcov/gcov.exp index 04e7a01..def827d 100644 --- a/gcc/testsuite/g++.dg/gcov/gcov.exp +++ b/gcc/testsuite/g++.dg/gcov/gcov.exp @@ -24,9 +24,9 @@ global GXX_UNDER_TEST # Find gcov in the same directory as $GXX_UNDER_TEST. if { ![is_remote host] && [string match "*/*" [lindex $GXX_UNDER_TEST 0]] } { - set GCOV [file dirname [lindex $GXX_UNDER_TEST 0]]/[transform gcov] + set GCOV [file dirname [lindex $GXX_UNDER_TEST 0]]/[gcc-transform-out-of-tree gcov] } else { - set GCOV [transform gcov] + set GCOV [gcc-transform-out-of-tree gcov] } # Initialize harness. diff --git a/gcc/testsuite/gcc.misc-tests/gcov.exp b/gcc/testsuite/gcc.misc-tests/gcov.exp index b8e9661..bc8e2c9 100644 --- a/gcc/testsuite/gcc.misc-tests/gcov.exp +++ b/gcc/testsuite/gcc.misc-tests/gcov.exp @@ -24,9 +24,9 @@ global GCC_UNDER_TEST # For now find gcov in the same directory as $GCC_UNDER_TEST. if { ![is_remote host] && [string match "*/*" [lindex $GCC_UNDER_TEST 0]] } { - set GCOV [file dirname [lindex $GCC_UNDER_TEST 0]]/[transform gcov] + set GCOV [file dirname [lindex $GCC_UNDER_TEST 0]]/[gcc-transform-out-of-tree gcov] } else { - set GCOV [transform gcov] + set GCOV [gcc-transform-out-of-tree gcov] } # Initialize harness. diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 23ec038..0129b11 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -1429,5 +1429,18 @@ proc scan-symbol-not { args } { } } +# Transform a tool-name to its canonical-target-name by "transform" +# (which may return the original name for native targets) but only if +# testing out-of-tree. When in-tree, the tool is expected to be found +# by its original name, typically with some build-directory prefix +# prepended by the caller. +proc gcc-transform-out-of-tree { args } { + global TESTING_IN_BUILD_TREE + if { [info exists TESTING_IN_BUILD_TREE] } { + return $args; + } + return [transform $args] +} + set additional_prunes "" set dg_runtest_extra_prunes "" |