]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
testsuite: Enable cross testing for gcov tests
authorJoseph Myers <josmyers@redhat.com>
Fri, 23 Jan 2026 21:14:31 +0000 (21:14 +0000)
committerJoseph Myers <josmyers@redhat.com>
Fri, 23 Jan 2026 21:14:31 +0000 (21:14 +0000)
Tests of gcov are generally restricted to { target native }.  The
issue for these tests is the need to transfer .gcda files from the
target to the host before running gcov.  Implement that support and
remove the { target native } restrictions for these tests.

Note that by default code built to generate coverage data expects to
be able to write .gcda files to the same directory name in which the
compiler generated its output, so if that path cannot be created by
the tests on the target then they may still not work in a cross setup.
Other options involving -fprofile-dir are possible but involve their
own complications such as mangling of the .gcda file name (the
mangling logic would then need replicating in gcov.exp).  Copying
files from the target using such absolute directory paths is what
already happens with gcc.dg/tree-prof tests using profopt.exp (and
those already work in a cross configuration except for a few using
dg-additional-sources), so this change is effectively making the gcov
tests work more like the tree-prof ones.

Note also that [remote_file host absolute ...] may require appropriate
support in your host board file for the case of a remote host (this
isn't an operation DejaGnu knows about doing remotely by default).
The logic for determining .gcda paths does mean it's the absolute path
on host, not on build, that is relevant.

Tested for x86_64-pc-linux-gnu to make sure native testing isn't
broken, and with cross to aarch64-linux.

* g++.dg/gcov/gcov-1.C, g++.dg/gcov/gcov-10.C,
g++.dg/gcov/gcov-11.C, g++.dg/gcov/gcov-12.C,
g++.dg/gcov/gcov-13.C, g++.dg/gcov/gcov-14.C,
g++.dg/gcov/gcov-15.C, g++.dg/gcov/gcov-16.C,
g++.dg/gcov/gcov-17.C, g++.dg/gcov/gcov-18.C,
g++.dg/gcov/gcov-19.C, g++.dg/gcov/gcov-2.C,
g++.dg/gcov/gcov-20.C, g++.dg/gcov/gcov-21.C,
g++.dg/gcov/gcov-23.C, g++.dg/gcov/gcov-3.C, g++.dg/gcov/gcov-4.C,
g++.dg/gcov/gcov-5.C, g++.dg/gcov/gcov-7.C, g++.dg/gcov/gcov-8.C,
g++.dg/gcov/gcov-dump-1.C, g++.dg/gcov/gcov-dump-2.C,
g++.dg/gcov/gcov-threads-1.C, g++.dg/gcov/loop.C,
g++.dg/gcov/pr16855-priority.C, g++.dg/gcov/pr16855.C,
g++.dg/gcov/pr84548.C, g++.dg/gcov/pr86109.C,
g++.dg/gcov/pr88045.C, g++.dg/gcov/pr88263-2.C,
g++.dg/gcov/pr88263.C, g++.dg/gcov/pr97069.C,
g++.dg/gcov/pr98273.C, g++.dg/gcov/ternary.C,
gcc.misc-tests/gcov-1.c, gcc.misc-tests/gcov-10.c,
gcc.misc-tests/gcov-10b.c, gcc.misc-tests/gcov-11.c,
gcc.misc-tests/gcov-12.c, gcc.misc-tests/gcov-13.c,
gcc.misc-tests/gcov-14.c, gcc.misc-tests/gcov-15.c,
gcc.misc-tests/gcov-16.c, gcc.misc-tests/gcov-17.c,
gcc.misc-tests/gcov-18.c, gcc.misc-tests/gcov-19.c,
gcc.misc-tests/gcov-1a.c, gcc.misc-tests/gcov-2.c,
gcc.misc-tests/gcov-20.c, gcc.misc-tests/gcov-22.c,
gcc.misc-tests/gcov-24.c, gcc.misc-tests/gcov-25.c,
gcc.misc-tests/gcov-26.c, gcc.misc-tests/gcov-27.c,
gcc.misc-tests/gcov-28.c, gcc.misc-tests/gcov-29.c,
gcc.misc-tests/gcov-3.c, gcc.misc-tests/gcov-30.c,
gcc.misc-tests/gcov-33.c, gcc.misc-tests/gcov-34.c,
gcc.misc-tests/gcov-4.c, gcc.misc-tests/gcov-4b.c,
gcc.misc-tests/gcov-5b.c, gcc.misc-tests/gcov-6.c,
gcc.misc-tests/gcov-7.c, gcc.misc-tests/gcov-8.c,
gcc.misc-tests/gcov-9.c, gcc.misc-tests/gcov-pr83813.c,
gcc.misc-tests/gcov-pr84758.c, gcc.misc-tests/gcov-pr85217.c,
gcc.misc-tests/gcov-pr85332.c, gcc.misc-tests/gcov-pr85338.c,
gcc.misc-tests/gcov-pr85350.c, gcc.misc-tests/gcov-pr85372.c,
gcc.misc-tests/gcov-pr86536.c, gcc.misc-tests/gcov-pr90574-1.c,
gcc.misc-tests/gcov-pr90574-2.c, gdc.dg/gcov1.d,
gnat.dg/gcov/check.adb: Do not restrict to { target native }.
* lib/gcov.exp (transfer-gcda): New.
(clean-gcov-file): Delete .gcda file on target.
(run-gcov): Transfer .gcda files from target.

80 files changed:
gcc/testsuite/g++.dg/gcov/gcov-1.C
gcc/testsuite/g++.dg/gcov/gcov-10.C
gcc/testsuite/g++.dg/gcov/gcov-11.C
gcc/testsuite/g++.dg/gcov/gcov-12.C
gcc/testsuite/g++.dg/gcov/gcov-13.C
gcc/testsuite/g++.dg/gcov/gcov-14.C
gcc/testsuite/g++.dg/gcov/gcov-15.C
gcc/testsuite/g++.dg/gcov/gcov-16.C
gcc/testsuite/g++.dg/gcov/gcov-17.C
gcc/testsuite/g++.dg/gcov/gcov-18.C
gcc/testsuite/g++.dg/gcov/gcov-19.C
gcc/testsuite/g++.dg/gcov/gcov-2.C
gcc/testsuite/g++.dg/gcov/gcov-20.C
gcc/testsuite/g++.dg/gcov/gcov-21.C
gcc/testsuite/g++.dg/gcov/gcov-23.C
gcc/testsuite/g++.dg/gcov/gcov-3.C
gcc/testsuite/g++.dg/gcov/gcov-4.C
gcc/testsuite/g++.dg/gcov/gcov-5.C
gcc/testsuite/g++.dg/gcov/gcov-7.C
gcc/testsuite/g++.dg/gcov/gcov-8.C
gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
gcc/testsuite/g++.dg/gcov/loop.C
gcc/testsuite/g++.dg/gcov/pr16855-priority.C
gcc/testsuite/g++.dg/gcov/pr16855.C
gcc/testsuite/g++.dg/gcov/pr84548.C
gcc/testsuite/g++.dg/gcov/pr86109.C
gcc/testsuite/g++.dg/gcov/pr88045.C
gcc/testsuite/g++.dg/gcov/pr88263-2.C
gcc/testsuite/g++.dg/gcov/pr88263.C
gcc/testsuite/g++.dg/gcov/pr97069.C
gcc/testsuite/g++.dg/gcov/pr98273.C
gcc/testsuite/g++.dg/gcov/ternary.C
gcc/testsuite/gcc.misc-tests/gcov-1.c
gcc/testsuite/gcc.misc-tests/gcov-10.c
gcc/testsuite/gcc.misc-tests/gcov-10b.c
gcc/testsuite/gcc.misc-tests/gcov-11.c
gcc/testsuite/gcc.misc-tests/gcov-12.c
gcc/testsuite/gcc.misc-tests/gcov-13.c
gcc/testsuite/gcc.misc-tests/gcov-14.c
gcc/testsuite/gcc.misc-tests/gcov-15.c
gcc/testsuite/gcc.misc-tests/gcov-16.c
gcc/testsuite/gcc.misc-tests/gcov-17.c
gcc/testsuite/gcc.misc-tests/gcov-18.c
gcc/testsuite/gcc.misc-tests/gcov-19.c
gcc/testsuite/gcc.misc-tests/gcov-1a.c
gcc/testsuite/gcc.misc-tests/gcov-2.c
gcc/testsuite/gcc.misc-tests/gcov-20.c
gcc/testsuite/gcc.misc-tests/gcov-22.c
gcc/testsuite/gcc.misc-tests/gcov-24.c
gcc/testsuite/gcc.misc-tests/gcov-25.c
gcc/testsuite/gcc.misc-tests/gcov-26.c
gcc/testsuite/gcc.misc-tests/gcov-27.c
gcc/testsuite/gcc.misc-tests/gcov-28.c
gcc/testsuite/gcc.misc-tests/gcov-29.c
gcc/testsuite/gcc.misc-tests/gcov-3.c
gcc/testsuite/gcc.misc-tests/gcov-30.c
gcc/testsuite/gcc.misc-tests/gcov-33.c
gcc/testsuite/gcc.misc-tests/gcov-34.c
gcc/testsuite/gcc.misc-tests/gcov-4.c
gcc/testsuite/gcc.misc-tests/gcov-4b.c
gcc/testsuite/gcc.misc-tests/gcov-5b.c
gcc/testsuite/gcc.misc-tests/gcov-6.c
gcc/testsuite/gcc.misc-tests/gcov-7.c
gcc/testsuite/gcc.misc-tests/gcov-8.c
gcc/testsuite/gcc.misc-tests/gcov-9.c
gcc/testsuite/gcc.misc-tests/gcov-pr83813.c
gcc/testsuite/gcc.misc-tests/gcov-pr84758.c
gcc/testsuite/gcc.misc-tests/gcov-pr85217.c
gcc/testsuite/gcc.misc-tests/gcov-pr85332.c
gcc/testsuite/gcc.misc-tests/gcov-pr85338.c
gcc/testsuite/gcc.misc-tests/gcov-pr85350.c
gcc/testsuite/gcc.misc-tests/gcov-pr85372.c
gcc/testsuite/gcc.misc-tests/gcov-pr86536.c
gcc/testsuite/gcc.misc-tests/gcov-pr90574-1.c
gcc/testsuite/gcc.misc-tests/gcov-pr90574-2.c
gcc/testsuite/gdc.dg/gcov1.d
gcc/testsuite/gnat.dg/gcov/check.adb
gcc/testsuite/lib/gcov.exp

index ee383b480a877beffa8ed37c3463c60fa784fa9b..40fee7992a6d048695ac4abda986c169b8c030dc 100644 (file)
@@ -2,7 +2,7 @@
    constructs are reported correctly by gcov. */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 extern "C" void abort (void);
 
index 4c91be94ee46ee40e53108fc1a1cec1bb605714c..d3942ceabd18c5d03b77085e2273985c9b10382c 100644 (file)
@@ -1,7 +1,7 @@
 /* Ensure PIC sequence used for comdat functions */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -fpic" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-effective-target fpic } */
 
 inline int __attribute__ ((noinline)) Foo ()
index fa0890206f3acbc37f6b0ea333a32d5d40d6b428..243c112506ae85b7c00d05889edf8e97926124d1 100644 (file)
@@ -2,7 +2,7 @@
    distinct from  unexecuted normal regions.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void Baz (int i)
 {
index 9f2b29b4da501fe5cd35bd67145b6491a6cb447e..da694bc7c91bbb5e65dd893b0ad6d7574c59885c 100644 (file)
@@ -1,6 +1,6 @@
 /* PR 51113 */
 /* { dg-options "-fprofile-arcs -ftest-coverage -fpic -fno-implicit-constexpr" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-additional-sources "gcovpart-12b.C" } */
 
 struct Foo {
index c262a71f536472f940a5280fed394454eb241e76..45668f65cd3a92435b70706caa5867b6ae2cd8c2 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void Baz (int i)
 {
index 68f3ab4305587d16c67393a234aa06df19e07e97..f76d8bb603f991f9155090f36cb1f49466b24f32 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage -Ofast" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
index fcd16b00b1c40dc084a97eb52b6ea2bc6ca643e4..53752449b73f0791dddb3b70dd112a8170f6d475 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/64634
 // { dg-options "-fprofile-arcs -ftest-coverage" }
-// { dg-do run { target native } }
+// { dg-do run }
 
 void catchEx ()                // count(1)
 {
index f09d4060cbdbea03d883b6e9a6d93afc9eda20f0..beea2e55e1ae6f9a78da4a3ed6a09513fecafbc8 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/64634
 // { dg-options "-fprofile-arcs -ftest-coverage" }
-// { dg-do run { target native } }
+// { dg-do run }
 
 int main()
 {
index efe019599a5959382c76cab0734dd111691a5309..19d0197ba77679bb61447a6e17b17b54f7c6fef5 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "--coverage -std=c++11" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 template <class T> class Foo
 {
index 063440c881c42cfbc2d3c93c6612f14c76a5cad1..10578ec18655dd86a1b14a02f480b6504cf95584 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "--coverage -fcondition-coverage -std=c++11" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
index 3f898cfae4b4224b5c1a13208236286852400f5b..90e7a8eed27866f819529394b5932058ad24c7f9 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Filtering on the function base name generally works well, because it becomes
    an unadultered part of the symbol.  */
index 05db15de7cc5896dfb96739efd3dd8c0f8b51ec7..9fdcfa84fbddf50e9a15ece1d9ab9217a01879b0 100644 (file)
@@ -1,7 +1,7 @@
 /* Verify line coverage counts for simple member functions. */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -fno-implicit-constexpr" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 class C {
 public:
index fb33f7ecbddab50a99532d8ed039c8ed7cae5f7f..74507f55eb599c7918590e82bb54474a04f869a8 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Filtering also works by targeting the mangled symbol directly, but the
    subtlety is not really caught by the test framework.  Matching on fn1I[df]
index 67f6d79dbf1131091f9458b14a753888f4479082..8caf6be495b579d7f6e5df6856f4da76649599d1 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Filters can be applied to demangled names. This support matching on
    types and class hierarchies as well as function names.  */
index 60fe9e04e3b5252f31489fdbeae4d27233d0be70..587a75430ac160a7f837140084ede13b24c54e71 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fpath-coverage --coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 #include "gcov-23-1.h"
 #include "gcov-23-2.h"
index aff063a4b90f4ba631828f9afb965f7688779027..c128757f281b891e5aae6968a5214945142a80de 100644 (file)
@@ -2,7 +2,7 @@
    within a header file.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 #include "gcov-3.h"
 
index 2f83ff1becc68a5131423ae7050704faa978dc9e..e148d5c95538bf4bd45c2d32aafc3bdd865745d5 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdio.h>
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -fno-exceptions" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 class foo {
 public:
index 9ada41802caa18381b7c90cb384b2d3cfcd3f5bb..fc70b3bee6f74e2dd1b08b7f7b8fe0b7f316df7e 100644 (file)
@@ -5,7 +5,7 @@
 #include <stdlib.h>
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -fno-inline" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 class A {
   int count;
index 334db1837c85266e00ce2e555b861fb668be4b18..6240a8fb4278cdf3b92cb0bec75869c798544466 100644 (file)
@@ -3,7 +3,7 @@
    declaration.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 struct foo
 {
index 1c97c35d8c1e3d2aad97d124d3be8865b56d0338..bbb075ccea6b71cac822359951a054fda10b3159 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 class C {
 public:
index 774a7269ff2c53b969fb2aa5eb814960d65a6f59..8aba2afadcd3eebda019d306c8e7f92de43042ef 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-generate -ftest-coverage " } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int value;
 
index e748989d2c0b478a3b1f7ef0e0d3b9638fb93d15..f50451cf0769c7e370e55a38e57e3ad938a1bbcd 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-generate -ftest-coverage " } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int value;
 
index 3ae00789439b3d95df68212e1c7f05f21d9cdf49..54fcdcab39c2ce4e25146ae863cd58056b2ba861 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage -pthread -fprofile-update=atomic" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-effective-target profile_update_atomic } */
 
 #include <stdint.h>
index e63cb92e6e6d966f9109722131cbd16122259fa2..6d5e4a8632a45c26263ac89f70cb770e219f27cd 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 unsigned
 loop (unsigned n, int value)             /* count(14.0k) */
index ebdcad5d94fb01eec7fca446ed607d8cf58f68cf..cf0e7949ae97387b21010a09a6162ca279222a68 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-effective-target init_priority } */
 
 #include <stdlib.h>
index 724ee02813a929e996e4077945dbd09f16feb1db..74e2e57550ffdb158657b2ed13b3e82adde0f4cb 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* See PR91087 for information on Darwin xfails.  Also PR81337 for Solaris
    ones.*/
index 3b60b90e2a260af777784a14531bff010a1fc7b6..a83f4cc8b1afd49c3abc07d8ca279926bc528d51 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/84548
 // { dg-options "-fprofile-arcs -ftest-coverage" }
-// { dg-do run { target native } }
+// { dg-do run }
 // TODO: add support for groups to gcov.exp script
 
 struct A { static int foo () { return 1; }; static int bar () {
index 9052d2e5a042d1026b688c7a808975663e7f05ab..63549d68509cd4dcce1b36892bb6e933beea4b62 100644 (file)
@@ -1,6 +1,6 @@
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -std=c++11" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main()
 {
index 329c74fb93dbbc888ea6e626f98b851e3b60d9b1..2bd0473635b59eb4eb058cc392a54317a8a5c1ca 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/88045
 // { dg-options "-fprofile-arcs -ftest-coverage -std=c++11" }
-// { dg-do run { target native } }
+// { dg-do run }
 /* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <numeric>
index cc0a08e9026cf79efdd63b85d25b60739252ab95..50a1aecd71a6be5fb748a99c7d3eda975d1376b2 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/88263
 // { dg-options "-fprofile-arcs -ftest-coverage -std=c++11" }
-// { dg-do run { target native } }
+// { dg-do run }
 /* { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } } */
 
 #include <sstream>
index 4318a26abac52933b235679e2c4a572b4576c931..91c58d6f182743afa1237510e62803f96c1df01d 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/88263
 // { dg-options "-fprofile-arcs -ftest-coverage -std=c++11" }
-// { dg-do run { target native } }
+// { dg-do run }
 /* { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } } */
 
 #include <sstream>
index 040e336662a9f5578a6efc2d493d95e68d52c2a0..9171399235e1c87914e7cbe24e4910f14ac370fd 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/97069
 // { dg-options "--coverage" }
-// { dg-do run { target native } }
+// { dg-do run }
 
 # 0 "pr97069.C"
 # 0 "<built-in>"
index bfa83cbe4d00fbaa7c185e45c3c5a07a5d1012dd..45cd476ed24d649cfa47f050c2a11f2e0b8cb5f0 100644 (file)
@@ -1,7 +1,7 @@
 /* PR gcov-profile/98273 */
 
 /* { dg-options "--coverage -std=c++11" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int
 main ()
index 9b8e34644b46162cd01949b4d88377540458ed12..5ad2b2c6a4e1344a032ade7cf8206ea664bb38b8 100644 (file)
@@ -1,5 +1,5 @@
 // { dg-options "-fprofile-arcs -ftest-coverage" }
-// { dg-do run { target native } }
+// { dg-do run }
 
 int b, c, d, e;
 
index 99a02790dee81763cdbe10bf6c644a3f285066a1..e6606f99ffae08f8ac63cb8a408d483ba94a7452 100644 (file)
@@ -1,7 +1,7 @@
 /* Test Gcov basics.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void noop ()
 {
index bd1d418f378a9cc9482b581205416fa2bd80c313..8a8370228b99a5e12d45580eb3537a462ac2676a 100644 (file)
@@ -1,7 +1,7 @@
 /* Test gcov block mode.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main ()
 {
index 148d779fdb354039e5e1886c34cfa83a8d840101..2a4f7a3b25cef2d063df39f2221923e621c86bba 100644 (file)
@@ -1,7 +1,7 @@
 /* Test gcov block mode.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main ()
 {
index a1037a552a94edcaab53228d849c0413185313b9..153a8d2e396544fd1f04b6bc79010840d7cc11cc 100644 (file)
@@ -1,7 +1,7 @@
 /* Test gcov block mode.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int one = 1; /* subvert constant folder. */
 int zero = 0;
index f3d6924c9803eaca2dbf5da65b28feba696bf62f..2428b8f990e844c70e82c661cd79f99db4ab3144 100644 (file)
@@ -1,6 +1,6 @@
 /* Test gcov weak ellision.  */
 
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-weak "" } */
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
 
index b42b904ef3e2b75f042b966d48e71ec84758cbf3..b1f0d79ddff448b25a4005ff1425f8bbadb4bb30 100644 (file)
@@ -1,6 +1,6 @@
 /* Test gcov weak ellision.  */
 
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
 /* { dg-require-weak "" } */
 /* { dg-additional-sources "gcovpart-13b.c" } */
index 61a9191c0687a45f6324cf30ef8b4301f2070e3d..847b09cc13bfe13740a3bb54d54fff4f43b3e9df 100644 (file)
@@ -1,6 +1,6 @@
 /* Test gcov extern inline.  */
 
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-options "-O2 -fprofile-arcs -ftest-coverage -fgnu89-inline" } */
 /* The following line arranges that Darwin has behavior like elf weak import.  */
 /* { dg-additional-options "-Wl,-U,_Foo" { target *-*-darwin* }  } */
index 04273fcec4257f9f004a77010a651a2343d67aa2..d1a66b2ccc1fc8ef168c0d208e5b5cc404d8a4da 100644 (file)
@@ -1,7 +1,7 @@
 /* Test gcov multiple paths to file.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 #if !RECURSIVE
 #define RECURSIVE 1
index 738113c92cb801610cac484179aec6906a579463..5a6a723364f6fb9860ec8dc808f64007e4202d1a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void
 bar (void)
index e38860808445381275c13d959e8521932884f26f..c937facf1f2cc08bd26e9f2d242880893dc823ae 100644 (file)
@@ -22,7 +22,7 @@ by both branches of the condition in <bb 3>.
 */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 unsigned int
 UuT (void)
index ae1017866db9f906f60ae83c947a8a68ff2f056f..8c42e63a6f968f6e5cb0f6b5838cd219b8b45a7e 100644 (file)
@@ -3,7 +3,7 @@
    just once.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int a = 0;
 
index 44e2f135e2aeddf083e0cbdf480cf5382bcee35b..17d6dde87c682b68d5c84cfca35f6d4b36dc4fa3 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fcondition-coverage -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Some side effect to stop branches from being pruned.  */
 int x = 0;
index 2b9fabce66c925060d179d971bf5062aa326e330..9279b78559454ea3df4c641f6b4e3ef35ddbaf11 100644 (file)
@@ -1,7 +1,7 @@
 /* Test Gcov basics.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -fprofile-abs-path" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void noop ()
 {
index aa3e4b74e9025bf95ed1ccecdd8f734d5153582b..dde8f8b7926ab48f5a3da0b5c4286728f41cf6ae 100644 (file)
@@ -1,7 +1,7 @@
 /* Test Gcov basics.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage -g" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void noop ()
 {
index ca8c12aad2bc555a5c7a04331d488f8a0de023d6..b1357ca47f3f7a76f587b088b30c21d1d36b5180 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fcondition-coverage -ftest-coverage -fprofile-update=atomic" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-effective-target profile_update_atomic } */
 
 /* Some side effect to stop branches from being pruned */
index 7ca78467ca318ad89d342c4cfa39deeeec0874ce..0c8aba6996daa193d612019d626e94971e1ee763 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fcondition-coverage -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 #include <setjmp.h>
 jmp_buf buf;
index 395099bd7ae33133af0d2d0a02bf8afe4a090448..335857da30cc2bb9db21ac63d139f0c411e29a53 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main()
 {
index 658f375e055d53841e024d8e23cfa46a053d350a..85c4f2c3105b9e25f21c4ea3bc9f1bc95e7d8269 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Filters are considered in order with latest-wins, so if a function is
    included and later excluded it should not show up.  */
index d204cd3c72b100695d776551b925a45a64573e27..796eb38021f3fec16079c5a12dba5ae8fb4606c4 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Filters are considered in order with latest-wins, so if a function is
    excluded and later included it should show up.  */
index e01a2c794a78748d4dbca5390d1fe53791160efa..0c30625ba3e36ff295d9d0b3fdc8aa44aec00d52 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* If only --exclude is used, other functions should be used by default.  */
 
index 26f5b15e06fcfd2ea3eb3c1d18737e37ece89c11..5e4a9af18d5698ebfd8692533108db08f7cbfa38 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int
 once (int x)
index 320570ec300d94b6d2a767747b4e2ce87f9fb158..efbd305b3842f3b4a1145315ad067c78abab12bf 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "--coverage -fpath-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void
 pathcov001a ()
index 5b07dd74bd1bb019cca698603b0dfec7bf37ffa9..5107f89d324aeb7f0ba8b42c60229dcd6aabc056 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-effective-target label_values } */
 
 /* Test Gcov with computed gotos.
index dbc168186b7347af29cf2f7f8e842a644d8bb957..e7a4a2870abbf711c5202658909527eabc400678 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "--coverage -fpath-coverage -fprofile-update=atomic" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void
 pathcov001a ()
index ecfa8c23d327ecea61d62e77bb181f2b2dd2ec80..5b06ae1377cf7f8ca2d543e8e2c74d0342140904 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "--coverage -fpath-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* BEGIN paths
    summary: 1/2
index e3c04e08903af8dc610139db8eb3cf421d32cc7c..b77eb1661e3ce44ef0f96cd1b89535ca7b29a0e9 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "--coverage -fpath-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* BEGIN paths
    summary: 1/2
index da7929ef7fcd30f00d0c68a451e95c3d8ee4a587..f792538e1f54e7ad6b451db942ac36fc864041b2 100644 (file)
@@ -2,7 +2,7 @@
    correctly by gcov. */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 extern void abort (void);
 
index da98749f719a868d9465391d90906332a4dbf785..3a67b2f6bb5c2cfb38ada02e70ba12f60d137a2c 100644 (file)
@@ -2,7 +2,7 @@
    correctly by gcov. */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 extern void abort (void);
 
index cbd3958718ccc4758b19d894580f89cf270d4d0c..da53879bd33b603e5e6e36a881aa8c12b57d798d 100644 (file)
@@ -2,7 +2,7 @@
    that are large enough to hold the count. */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 #define LIMIT1 7000
 #define LIMIT2 7000
index aefab3ed33a79dc53b534b455510b1e1ea10f500..9b46d64214a79536701aeac636c2432b7b72354f 100644 (file)
@@ -4,7 +4,7 @@
    for call return percentages was added.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 extern void exit (int);
 
index 2e0f6e8b03c1854942ddbe9d0afc3f54968bea33..a5a20a0a3cd2fd542676d35c61f166f4770052ed 100644 (file)
@@ -2,7 +2,7 @@
  * and call return percentages for functions that call longjmp. */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 #include <setjmp.h>
 
index 7223bde8374cd9172efbed749fc7bbb6f1e27b15..6e0eb918d5e4e5c604adaa4b6968c1a3f19b9002 100644 (file)
@@ -6,7 +6,7 @@
 */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int proxy (int i)
 {
index 6e1b4a85c0c507195bbdf9a8c370a95c53fe548f..ed8d57aa9342cadfbbe0d6d6214b2933a295c6af 100644 (file)
@@ -1,7 +1,7 @@
 /* Test gcov block mode.  */
 
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main ()
 {
index ac935b969f841e413e38d22b0e0860204b22290d..8604f1f72f0601f2eddcec10a868c9eadf463dff 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 union U
 {
index 2ae6900375fa45523db7bd5d35ef3d3e2cb1b936..a9530a14e24b5c5813c1db9c4682e0cf6b3bb359 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int x, y;
 
index 86a3c4b5a129d88f8606df53254520acdd1e30d2..cdc2b6fb91ef5d97b46f008407731f5b44ea4100 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int a=0;
 
index 73e50b19fc709d85f6b80b29ae3a5f2b9ef0b835..081afdcb0f9089d2bf61be1a06785e02ff1a140d 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int doit(int sel, int n, void *p)
 {
index d1e16d29c7a81191b72c007f63e3e0f2a78c15ec..8416f478348b72ac3e8e0e2f40ffa5ad3ba819e8 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 void Test(long long Val, int Amt)
 {
index 0383b81fdfb6c3d101e940d3ff9fea80ad9f21c2..7bb8b0a359ca4fdf5c9dfb4ed0bdda1eb68e13d9 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main (void)
 {
index 7c90e68b0dcedae259df2eaa64cf85719ec0bc91..10409bd490c4f2d5710eab08eddd8d91d0eac1bc 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 /* { dg-require-effective-target indirect_jumps } */
 
 void *buf[5];
index 4817773599955cf2f6b97b8182f802628d85759f..febfacd9243180272f9100340e46cc976f2fcf8f 100644 (file)
@@ -1,6 +1,6 @@
 // PR gcov-profile/86536
 // { dg-options "-fprofile-arcs -ftest-coverage" }
-// { dg-do run { target native } }
+// { dg-do run }
 // { dg-require-fork "" }
 
 #include <stdlib.h>
index 41ac9bb3eccbc645189363eb701e2ced135c40f4..8a6fb09b831dfbc93f443da697bc40730c136c4a 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main(int argc, char **argv)
 {
index 2db70c96f71538f4c2e172d64f6c5159612fee9a..1b6f4517b3ebd24db469858210cd862eea7ad135 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fprofile-arcs -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 int main(int argc, char **argv)
 {
index 10ffa4a0e308a21c6642fbb104d19afd5bffd31c..048001663d5f7b4bc016f779762403da16f8e166 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-options "-fcondition-coverage -ftest-coverage" } */
-/* { dg-do run { target native } } */
+/* { dg-do run } */
 
 /* Some side effect to stop branches from being pruned.  */
 int x = 0;
index b3cb8e36b92d69c1f960f6c951798739cf3273bc..737272b01c310cdf5f111e046fe7736e2fc68ebf 100644 (file)
@@ -1,5 +1,5 @@
 -- { dg-options "-fprofile-arcs -ftest-coverage" }
--- { dg-do run { target native } } */
+-- { dg-do run } */
 
 procedure Check is
 
index 9a999f43eafc8fe3ae129434fe01b6b9dc08ae02..e62a39e7ed574de39aa592b07f2b2e051c43e0e9 100644 (file)
@@ -31,6 +31,23 @@ proc clean-gcov-file { testcase suffix } {
     set basename [file tail $testcase]
     set base [file rootname $basename]
     remote_file host delete $base.$suffix
+    # The absolute path to the output when building on the host is
+    # used by the compiled program on the target to determine where
+    # the .gcda file goes there.
+    remote_file target delete [remote_file host absolute $base.$suffix]
+}
+
+# Transfer the .gcda file for a test from the target to the host.
+
+proc transfer-gcda { testcase } {
+    set basename [file tail $testcase]
+    set base [file rootname $basename]
+    # The absolute path to the output when building on the host is
+    # used by the compiled program on the target to determine where
+    # the .gcda file goes there.
+    set gcda [remote_file host absolute "$base.gcda"]
+    set gcda [remote_upload target $gcda]
+    remote_download host $gcda
 }
 
 #
@@ -763,6 +780,14 @@ proc run-gcov { args } {
     if { $gcov_remove_gcda } {
        verbose "Removing $testcase.gcda"
        clean-gcov-file $testcase "gcda"
+    } else {
+       transfer-gcda $testcase
+       global additional_sources_used
+       if [info exists additional_sources_used] {
+           foreach srcfile $additional_sources_used {
+               transfer-gcda $srcfile
+           }
+       }
     }
 
     verbose "Running $GCOV $testcase" 2