Hello,

In order to run regression test on simulator, the testglue.c will be
compiled and linked to return the return status of cases executed on
simulator. In my recent work, I built a cross compiler for arm-none-eabi.
When run regression test for libstdc++-v3 using command "make check-target
"RUNTESTFLAGS=--target_board=arm-none-eabi-qemu/-mthumb/-mcpu=cortex-m3", I
got the below errors:

Test Run By build on Thu Aug 11 14:30:04 2011
Target is arm-none-eabi
Host   is arm-none-eabi
Build  is i686-pc-linux-gnu

                === libstdc++ tests ===

Schedule of variations:
    arm-none-eabi-qemu/-mthumb/-mcpu=cortex-m3

Running target arm-none-eabi-qemu/-mthumb/-mcpu=cortex-m3
Using
/home/build/work/jenkins-daily-build/src/oban-scripts/dejagnu/boards/arm-non
e-eabi-qemu.exp as board description file for target.
Using
/home/build/work/jenkins-daily-build/src/oban-scripts/dejagnu/boards/qemu.ex
p as generic interface file for target.
Using
/home/build/work/jenkins-daily-build/src/gcc/libstdc++-v3/testsuite/config/d
efault.exp as tool-and-target-specific interface file.
Running
/home/build/work/jenkins-daily-build/src/gcc/libstdc++-v3/testsuite/libstdc+
+-abi/abi.exp ...
LD_LIBRARY_PATH = 
Executing on host:
/home/build/work/jenkins-daily-build/build-linux/gcc-final/gcc/xgcc
-B/home/build/work/jenkins-daily-build/build-linux/gcc-final/gcc/   -w
-fexceptions -c    -mthumb -mcpu=cortex-m3 -o
/home/build/work/jenkins-daily-build/build-linux/gcc-final/arm-none-eabi/lib
stdc++-v3/testsuite/testglue.o /usr/share/dejagnu/testglue.c    (timeout =
300)
/usr/share/dejagnu/testglue.c:1:19: fatal error: stdio.h: No such file or
directory

compilation terminated.

compiler exited with status 1
output is:
/usr/share/dejagnu/testglue.c:1:19: fatal error: stdio.h: No such file or
directory

compilation terminated.


After investigated how the gcc regression test works, I thought the above
fail is due to missing "set TEST_GCC_EXEC_PREFIX ...." in
gcc-build/arm-none-eabi/libstdc++-v3/testsuite/site.exp. The
TEST_GCC_EXEC_PREFIX impacts the value of GCC_EXEC_PREFIX which impacts the
way GCC to find header files. The GCC regression test defines this variable,
I don't know why libstdc++ doesn't define. After add this variable, the
testglue.c can be built and the regression test works fine.

If run this regression test natively or doesn't set need_status_wrapper in
board description file, the testglue.c won't be involved and thus no such
failure.

Here is the patch to define TEST_GCC_EXEC_PREFIX in site.exp of libstdc++
regression test. Tested for arm-none-eabi using QEMU with different GCC
options Os/O0/O2/O3. No regression found. OK to commit?

libstdc++-v3/ChangLog:

2011-08-11  Terry Guo  <terry....@arm.com>

        * testsuite/Makefile.in (TEST_GCC_EXEC_PREFIX): New.

diff --git a/libstdc++-v3/testsuite/Makefile.in
b/libstdc++-v3/testsuite/Makefile.in
index 37e8a3c..52c3431 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -504,6 +504,7 @@ site.exp: Makefile
        @echo 'set libiconv "$(LIBICONV)"' >>site.tmp
        @echo 'set baseline_dir "$(baseline_dir)"' >> site.tmp
        @echo 'set baseline_subdir_switch "$(baseline_subdir_switch)"' >>
site.tmp
+       @echo 'set TEST_GCC_EXEC_PREFIX "$(libdir)/gcc/"' >> site.tmp
        @echo '## All variables above are generated by configure. Do Not
Edit ##' >>site.tmp
        @test ! -f site.exp || \
          sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp



BR,
Terry



Reply via email to