Excerpts from Olivier Hainque's message of August 18, 2020 10:01 am:
> Hello Iain,
> 
>> On 17 Aug 2020, at 10:08, Iain Buclaw <ibuc...@gdcproject.org> wrote:
>> 
>> Hi,
>> 
>> Currently when building a cross-compiler targeting arm-wrs-vxworks7, the
>> selftests fail unless the VSB_DIR environment variable is set.
> 
>> The same !nostdinc condition is used for VXWORKS_ADDITIONAL_CPP_SPEC.
>> 
>> OK for mainline?
> 
> Thanks for proposing this patch.
> 
> I'd rather remove the self-tests -> -nostdinc thing, apparently
> introduced explicitly for VxWorks and this dependency on environment
> variables in specs.
> 
> Can you please just test for fself-test instead, in both cases, with
> a comment like
> 
> "Self-tests may be run in contexts where the VxWorks environment
> isn't available.  Prevent attempts at designating the location of
> runtime header files, libraries or startfiles, which would fail
> on unset environment variables and aren't needed for such tests."
> 

Hi Oliver,

Attached is the change as per your proposal.

Iain.

---
gcc/ChangeLog:

        * Makefile.in (SELFTEST_FLAGS): Remove -nostdinc.
        * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Replace -nostdinc
        with -fself-tests.
        (STARTFILE_PREFIX_SPEC): Avoid using VSB_DIR if -fself-tests is used.

---
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 79e854aa938..a71585239da 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1995,8 +1995,6 @@ rest.cross: specs
 
 # GCC's selftests.
 # Specify a dummy input file to placate the driver.
-# Specify -nostdinc to work around missing WIND_BASE environment variable
-# required for *-wrs-vxworks-* targets.
 # Specify -o /dev/null so the output of -S is discarded. More importantly
 # It does not try to create a file with the name "null.s" on POSIX and
 # "nul.s" on Windows. Because on Windows "nul" is a reserved file name.
@@ -2005,7 +2003,7 @@ rest.cross: specs
 # Specify the path to gcc/testsuite/selftests within the srcdir
 # as an argument to -fself-test.
 DEVNULL=$(if $(findstring mingw,$(build)),nul,/dev/null)
-SELFTEST_FLAGS = -nostdinc $(DEVNULL) -S -o $(DEVNULL) \
+SELFTEST_FLAGS = $(DEVNULL) -S -o $(DEVNULL) \
        -fself-test=$(srcdir)/testsuite/selftests
 
 # Run the selftests during the build once we have a driver and the frontend,
diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h
index d648d2f23cb..4aa1e320743 100644
--- a/gcc/config/vxworks.h
+++ b/gcc/config/vxworks.h
@@ -36,11 +36,16 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Since we provide a default -isystem, expand -isystem on the command
    line early.  */
+
+/* Self-tests may be run in contexts where the VxWorks environment isn't
+   available.  Prevent attempts at designating the location of runtime header
+   files, libraries or startfiles, which would fail on unset environment
+   variables and aren't needed for such tests.  */
 #if TARGET_VXWORKS7
 
 #undef VXWORKS_ADDITIONAL_CPP_SPEC
 #define VXWORKS_ADDITIONAL_CPP_SPEC                     \
- "%{!nostdinc:                                          \
+ "%{!fself-test=*:                                      \
     %{isystem*}                                         \
     %{mrtp: -idirafter %:getenv(VSB_DIR /h)             \
             -idirafter %:getenv(VSB_DIR /share/h)       \
@@ -55,7 +60,7 @@ along with GCC; see the file COPYING3.  If not see
 
 #undef VXWORKS_ADDITIONAL_CPP_SPEC
 #define VXWORKS_ADDITIONAL_CPP_SPEC            \
- "%{!nostdinc:                                 \
+ "%{!fself-test=*:                             \
     %{isystem*}                                        \
     %{mrtp: -idirafter %:getenv(WIND_USR /h)   \
            -idirafter %:getenv(WIND_USR /h/wrn/coreip) \
@@ -108,7 +113,8 @@ along with GCC; see the file COPYING3.  If not see
 
 #if TARGET_VXWORKS7
 #undef  STARTFILE_PREFIX_SPEC
-#define STARTFILE_PREFIX_SPEC "%:getenv(VSB_DIR /usr/lib/common)"
+#define STARTFILE_PREFIX_SPEC \
+  "%{!fself-test=*:%:getenv(VSB_DIR /usr/lib/common)}"
 #define TLS_SYM "-u __tls__"
 #else
 #define TLS_SYM ""

Reply via email to