This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [BUILDROBOT] Selftest failed for i686-wrs-vxworks
- From: David Malcolm <dmalcolm at redhat dot com>
- To: Thomas Schwinge <thomas at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Nathan Sidwell <nathan at acm dot org>, Jan-Benedict Glaw <jbglaw at lug-owl dot de>
- Date: Wed, 05 Oct 2016 10:14:45 -0400
- Subject: Re: [BUILDROBOT] Selftest failed for i686-wrs-vxworks
- Authentication-results: sourceware.org; auth=none
- References: <20160630113937.GT4454@lug-owl.de> <d0aaec0c-e54b-1af2-04e0-c6788533fe74@acm.org> <1467317363.18068.49.camel@redhat.com> <87vax73rg8.fsf@kepler.schwinge.homeip.net>
On Wed, 2016-10-05 at 14:34 +0200, Thomas Schwinge wrote:
> Hi!
>
> I've now also run into this issue, during contrib/config-list.mk
> testing;
> log/arm-wrs-vxworks-make.out, log/i686-wrs-vxworks-make.out,
> log/i686-wrs-vxworksae-make.out, log/mips-wrs-vxworks-make.out,
> log/powerpc-wrs-vxworks-make.out, log/powerpc-wrs-vxworksae-make.out,
> log/powerpc-wrs-vxworksmils-make.out, log/sh-wrs-vxworks-make.out,
> log/sparc-wrs-vxworks-make.out:
>
> [...]/build-multi/arm-wrs-vxworks/./gcc/xgcc -B[...]/build
> -multi/arm-wrs-vxworks/./gcc/ -xc -S -c /dev/null -fself-test
> xgcc: fatal error: environment variable 'WIND_BASE' not defined
> compilation terminated.
> make[2]: *** [s-selftest] Error 1
> [...]
> make[1]: *** [all-gcc] Error 2
>
> On Thu, 30 Jun 2016 16:09:23 -0400, David Malcolm <
> dmalcolm@redhat.com> wrote:
> > On Thu, 2016-06-30 at 08:38 -0400, Nathan Sidwell wrote:
> > > [...] WIND_BASE is expected to point at a vxworks install [...]
>
> > [...]
> >
> > Hence it appears that passing "-nostdinc" as a param will avoid the
> > error: [...]
> >
> > Presumably if you're explicitly building for vxworks you have a
> > vxworks
> > install, so there is a meaningful value to set WIND_BASE to,
> > whereas if
> > you don't have a vxworks install (and are merely building
> > everything as
> > a smoketest), you presumably only want to build the "gcc" subdir,
> > since
> > AFAIK you can't run then driver.
> >
> > So there are at least 2 ways of fixing this:
> >
> > (a) add "-nostdinc" when running the selftests i.e. to the
> > invocations
> > of GCC_FOR_TARGET in the "s-selftest" and "selftest-gdb" clauses of
> > gcc/Makefile.in.
> > I've verified that this fixes the issue for --target=i686-wrs
> > -vxworks.
>
> OK to apply the following two patches? First, a little bit of
> refactoring:
>
> commit 0b124fda378c9dc726bd709f805dd52a7dc7c78a
> Author: Thomas Schwinge <thomas@codesourcery.com>
> Date: Wed Oct 5 08:06:00 2016 +0200
>
> In gcc/Makefile.in, factor out SELFTEST_FLAGS
>
> gcc/
> * Makefile.in (SELFTEST_FLAGS): New variable.
> (s-selftest, selftest-gdb, selftest-valgrind): Use it.
> ---
> gcc/Makefile.in | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git gcc/Makefile.in gcc/Makefile.in
> index 15c48bc..08b96a6 100644
> --- gcc/Makefile.in
> +++ gcc/Makefile.in
> @@ -1876,6 +1876,10 @@ endif
> # This does the things that can't be done on the host machine.
> rest.cross: specs
>
> +# GCC's selftests.
> +# Specify a dummy input file to placate the driver.
> +SELFTEST_FLAGS = -x c /dev/null -S -fself-test
> +
> # Run the selftests during the build once we have a driver and a
> cc1,
> # so that self-test failures are caught as early as possible.
> # Use "s-selftest" to ensure that we only run the selftests if the
> @@ -1883,18 +1887,19 @@ rest.cross: specs
> .PHONY: selftest
> selftest: s-selftest
> s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
> - $(GCC_FOR_TARGET) -xc -S -c /dev/null -fself-test
> + $(GCC_FOR_TARGET) $(SELFTEST_FLAGS)
> $(STAMP) $@
>
> # Convenience method for running selftests under gdb:
> .PHONY: selftest-gdb
> selftest-gdb: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
> - $(GCC_FOR_TARGET) -xc -S -c /dev/null -fself-test -wrapper
> gdb,--args
> + $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \
> + -wrapper gdb,--args
>
> # Convenience method for running selftests under valgrind:
> .PHONY: selftest-valgrind
> selftest-valgrind: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs
> - $(GCC_FOR_TARGET) -xc -S -c /dev/null -fself-test \
> + $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \
> -wrapper valgrind,--leak-check=full
>
> # Recompile all the language-independent object files.
>
> ..., and then the real change:
>
> commit 8ab49582c42809b385eb957c20b84d21a90e041a
> Author: Thomas Schwinge <thomas@codesourcery.com>
> Date: Wed Oct 5 08:08:37 2016 +0200
>
> Make GCC selftests work for *-wrs-vxworks-* targets
>
> gcc/
> Makefile.in (SELFTEST_FLAGS): Add -nostdinc.
> ---
> gcc/Makefile.in | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git gcc/Makefile.in gcc/Makefile.in
> index 08b96a6..23623ac 100644
> --- gcc/Makefile.in
> +++ gcc/Makefile.in
> @@ -1878,7 +1878,9 @@ rest.cross: specs
>
> # GCC's selftests.
> # Specify a dummy input file to placate the driver.
> -SELFTEST_FLAGS = -x c /dev/null -S -fself-test
> +# Specify -nostdinc to work around missing WIND_BASE environment
> variable
> +# required for *-wrs-vxworks-* targets.
> +SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -fself-test
>
> # Run the selftests during the build once we have a driver and a
> cc1,
> # so that self-test failures are caught as early as possible.
Thanks. I'm not able to formally approve these changes, but FWIW these
patches look good to me (assuming usual testing).