diff mbox

[BUILDROBOT] Selftest failed for i686-wrs-vxworks

Message ID 87vax73rg8.fsf@kepler.schwinge.homeip.net
State New
Headers show

Commit Message

Thomas Schwinge Oct. 5, 2016, 12:34 p.m. UTC
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(-)



Grüße
 Thomas

Comments

David Malcolm Oct. 5, 2016, 2:14 p.m. UTC | #1
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).
Bernd Schmidt Oct. 5, 2016, 2:36 p.m. UTC | #2
On 10/05/2016 04:14 PM, David Malcolm wrote:
> Thanks.  I'm not able to formally approve these changes, but FWIW these
> patches look good to me (assuming usual testing).

LGTM too, so OK.


Bernd
diff mbox

Patch

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.