From: Richard Biener <richard.guenther@gmail.com>
To: Torbjorn SVENSSON <torbjorn.svensson@foss.st.com>
Cc: Hans-Peter Nilsson <hp@axis.com>,
gcc-patches@gcc.gnu.org, mikestump@comcast.net
Subject: Re: [PATCH] testsuite: Fix mistransformed gcov
Date: Wed, 16 Nov 2022 16:38:23 +0100 [thread overview]
Message-ID: <CAFiYyc3pB_VyLJWgOBGiCOnwKpt8GkhOvUnFfmUkY4DJ5DjjBw@mail.gmail.com> (raw)
In-Reply-To: <48c23331-643f-c747-9c6b-09a36938a4aa@foss.st.com>
On Wed, Nov 16, 2022 at 9:00 AM Torbjorn SVENSSON via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Hi,
>
> On 2022-11-16 03:11, Hans-Peter Nilsson wrote:
> > How was r13-2619-g34b9a03353d3fd "gcov: Respect triplet when looking
> > for gcov" tested? I'm having a hard time believing it was tested with
> > a *cross-compiler* *in-build-tree*. I think it was only tested for
> > the special-case of an installed cross-compiler; not even with a
> > native build exercising the false branch (see patch), considering that
> > a breaking typo ("}" vs "]") snuck by in the first revision, before
> > commit.
>
> I was testing this in out-of-tree test with a cross-compiler (built for
> arm-none-eabi) running on Windows and Linux and just noticed the failure
> and (wrongly) assumed that all of the cases needed the transformation
> call as that's how other tools were handled.
> The test systems used is are hosts that does not have any internet
> connection, so that's why I got a typo in the first patch when moving
> the fix to a system that did have an internet connection.
> Sorry for the mess I caused!
>
> Regarding the patch you propose; it looks good to me, but I'm not able
> to approve it.
The patch is OK.
Richard.
> Kind regards,
> Torbjörn
>
> > I guess reviewers forgot to ask that, but it's really on the
> > submitter; it's a general requirement for patches to say how it was
> > tested. Usually no more is needed than "tested with a cross-compiler
> > for ..., no regressions" (implying running twice and comparing results
> > before and after the patch).
> >
> > In this case, when adjusting test-framework bits, a little more care
> > and mentioned details about how it was tested, would have been in
> > order. It's likely it'd have shown that an uninstalled in-tree cross
> > (an IMHO more expected case) wasn't tested, which that patch broke for
> > the one gcov invocation that the testsuite does for cross-builds
> > (IIUC).
> >
> > It can be said like this: I tested *this* patch as follows (all
> > directory names below manually redacted), showing no regressions and
> > fixing the regression for the in-tree cross build;
> >
> > For a native build (x86_64, Debian 11):
> > - In the gcc build directory:
> > make check RUNTESTFLAGS=gcov.exp
> >
> > - In an empty new directory after native installation in /pre.
> > /gccsrc/top/contrib/test_installed --prefix=/pre gcov.exp
> >
> > - Also, for good measure (mentioned somewhere in the installation
> > documentation) native:
> > for tool in gcc g++ ; do env PATH=/pre/bin:$PATH runtest \
> > --tool $tool --srcdir=/gccsrc/top/gcc/testsuite gcov.exp; done
> >
> > For a cris-elf cross:
> > - In the gcc build directory:
> > make check 'RUNTESTFLAGS=--target_board=cris-sim gcov.exp'
> >
> > - In an empty new directory after installation in /pre.
> > /gccsrc/top/contrib/test_installed --with-gcc=/pre/bin/cris-elf-gcc \
> > --with-g++=/pre/bin/cris-elf-g++ --with-gfortran=/pre/bin/cris-elf-gfortran \
> > --target=cris-elf --target_board=cris-sim gcov.exp
> >
> > Ok to commit?
> >
> > brgds, H-P
> > PS. Beware that the proc name may be up for bikeshedding.
> >
> > ---- 8< -------- 8< -------- 8< -------- 8< ----
> >
> > 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.
> > ---
> > gcc/testsuite/g++.dg/gcov/gcov.exp | 4 ++--
> > gcc/testsuite/gcc.misc-tests/gcov.exp | 4 ++--
> > 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 04e7a0164865..c9f20958836b 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 b8e9661aa537..90ceec46e0f0 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 23ec038f41eb..2910c9ce0998 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 ""
prev parent reply other threads:[~2022-11-16 15:38 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-09 12:56 [PATCH v2] gcov: Respect triplet when looking for gcov Torbjörn SVENSSON
2022-09-11 14:34 ` Mikael Morin
2022-09-11 16:04 ` Torbjorn SVENSSON
2022-09-11 19:38 ` Mikael Morin
2022-09-12 7:06 ` Torbjorn SVENSSON
2022-09-12 7:40 ` Mikael Morin
2022-09-12 8:40 ` Martin Liška
2022-09-12 9:39 ` Torbjorn SVENSSON
2022-09-12 9:42 ` Martin Liška
2022-11-16 2:11 ` [PATCH] testsuite: Fix mistransformed gcov Hans-Peter Nilsson
2022-11-16 7:59 ` Torbjorn SVENSSON
2022-11-16 15:38 ` Richard Biener [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAFiYyc3pB_VyLJWgOBGiCOnwKpt8GkhOvUnFfmUkY4DJ5DjjBw@mail.gmail.com \
--to=richard.guenther@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=hp@axis.com \
--cc=mikestump@comcast.net \
--cc=torbjorn.svensson@foss.st.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).