On Fri, 16 Nov 2018 at 17:16, Matthew Malcomson <matthew.malcom...@arm.com> wrote: > > On 16/11/18 16:04, Jeff Law wrote: > > On 11/15/18 12:06 PM, Martin Sebor wrote: > >> On 11/15/2018 02:39 AM, Matthew Malcomson wrote: > >>> If not we could add an > >>> { dg-require-effective-target unwrapped } > >>> directive in the testcases to stop the failure complaints. > >> I'm not familiar with this directive or really know what > >> a status wrapper is but as long as it doesn't change the I/O > >> the test does I think it should be fine. > > Wrapping in this context refers to the dejagnu harness wrapping to > > facilitate testing of remote and embedded targets where getting the real > > exit status of an execution test is painful. > > > > We wrap main, exit and abort. The wrappers print info to stdout to > > indicate exit status which can reliably be read by the harness. > > > > At least that's my recollection of the wrapper bits. > > > > jeff > > That's my understanding too -- since the wrappers print to stdout they > are affected by the freopen call the test made and hence the exit status > is not printed where DejaGNU is looking. > Hence DejaGNU can't read the exit status and defaults to a status of 2, > FAILing the test. > > This directive just skips the testcase completely when the status > wrapper is being used, so we get an UNSUPPORTED instead of FAIL test result. > > > Suggested change below. > ======= > > When running the testsuite on boards that can't report an error status > DejaGNU uses a special wrapper to print the exit code on stdout and > parses stdout to find whether an execution failed or passed. > > In testcases that use "freopen (..., ..., stdout)" this special line is > printed to the alternate location described in the freopen call and > DejaGNU can't find the error code. > > This results in DejaGNU using a default return status of 2 and the test > failing. > > This patch skips the two testcases that use freopen on stdout when > testing a board that requires the status wrapper. > > Testing done by running these two tests on arm-none-eabi cross build and > observing that they are now unsupported. > > gcc/testsuite/ChangeLog: > > 2018-11-16 Matthew Malcomson <matthew.malcom...@arm.com> > > * gcc.c-torture/execute/printf-2.c: Skip on wrapped boards. > * gcc.c-torture/execute/user-printf.c: Likewise. >
Looks OK for me. Thanks for the analysis, which I guess was a bit painful :) > > > ############### Attachment also inlined for ease of reply > ############### > > > diff --git a/gcc/testsuite/gcc.c-torture/execute/printf-2.c > b/gcc/testsuite/gcc.c-torture/execute/printf-2.c > index > 50741101bbd64fb301e3069b01d423b4d007f575..2e9f2a2bb755221ec49baccccad0737e51f579bf > 100644 > --- a/gcc/testsuite/gcc.c-torture/execute/printf-2.c > +++ b/gcc/testsuite/gcc.c-torture/execute/printf-2.c > @@ -1,6 +1,7 @@ > /* Verify that calls to printf don't get eliminated even if their > result on success can be computed at compile time (they can fail). > The calls can still be transformed into those of other functions. > + { dg-require-effective-target unwrapped } > { dg-skip-if "requires io" { freestanding } } */ > > #include <stdio.h> > diff --git a/gcc/testsuite/gcc.c-torture/execute/user-printf.c > b/gcc/testsuite/gcc.c-torture/execute/user-printf.c > index > e5784ed8e961e87c8f2d8ba85bbee6bb1b432155..11c61fa3949e962595ca7142bbcecb774fb8231f > 100644 > --- a/gcc/testsuite/gcc.c-torture/execute/user-printf.c > +++ b/gcc/testsuite/gcc.c-torture/execute/user-printf.c > @@ -1,6 +1,7 @@ > /* Verify that calls to a function declared wiith attribute format > (printf) > don't get eliminated even if their result on success can be computed at > compile time (they can fail). > + { dg-require-effective-target unwrapped } > { dg-skip-if "requires io" { freestanding } } */ > > #include <stdarg.h> >