This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [BUILDROBOT] Selftest failed for i686-wrs-vxworks


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).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]