Hi Bin,
On 07/01/16 14:15, Bin.Cheng wrote:
Hi,
Below test is supposed to be compiled and run, but we failed to link
the binary with tiny memory model.
spawn
/data/work/build-aarch64_be-none-elf/obj/gcc2/gcc/testsuite/g++14/../../xg++
-B/data/work/build-aarch64_be-none-elf/obj/gcc2/gcc/testsuite/g++14/../../
/data/work/src/gcc/gcc/testsuite/g++.dg/torture/pr67600.C
-fno-diagnostics-show-caret -fdiagnostics-color=never -nostdinc++
-I/data/work/build-aarch64_be-none-elf/obj/gcc2/aarch64_be-none-elf/libstdc++-v3/include/aarch64_be-none-elf
-I/data/work/build-aarch64_be-none-elf/obj/gcc2/aarch64_be-none-elf/libstdc++-v3/include
-I/data/work/src/gcc/libstdc++-v3/libsupc++
-I/data/work/src/gcc/libstdc++-v3/include/backward
-I/data/work/src/gcc/libstdc++-v3/testsuite/util -fmessage-length=0
-O2 -flto -fuse-linker-plugin -fno-fat-lto-objects
-specs=aem-validation.specs
-L/data/work/build-aarch64_be-none-elf/obj/gcc2/aarch64_be-none-elf/./libstdc++-v3/src/.libs
-B/data/work/build-aarch64_be-none-elf/obj/gcc2/aarch64_be-none-elf/./libstdc++-v3/src/.libs
-lm -mcmodel=tiny -o ./pr67600.exe
/tmp/ccd32hub.ltrans0.ltrans.o: In function `main':
<artificial>:(.text.startup+0x68): relocation truncated to fit:
R_AARCH64_ADR_PREL_LO21 against symbol `std::cout' defined in
.bss._ZSt4cout section in
/data/work/build-aarch64_be-none-elf/obj/gcc2/aarch64_be-none-elf/./libstdc++-v3/src/.libs/libstdc++.a(globals_io.o)
collect2: error: ld returned 1 exit status
compiler exited with status 1
output is:
/tmp/ccd32hub.ltrans0.ltrans.o: In function `main':
<artificial>:(.text.startup+0x68): relocation truncated to fit:
R_AARCH64_ADR_PREL_LO21 against symbol `std::cout' defined in
.bss._ZSt4cout section in
/data/work/build-aarch64_be-none-elf/obj/gcc2/aarch64_be-none-elf/./libstdc++-v3/src/.libs/libstdc++.a(globals_io.o)
collect2: error: ld returned 1 exit status
UNSUPPORTED: g++.dg/torture/pr67600.C -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects : memory full
In my understanding, dg-do run test case should be marked as
FAIL&UNRESOLVED if binary file can't be generated. But here it's
categorized as an UNSUPPORTED test. This could be mis-leading
sometimes since unsupported test could be ignored.
The problem is that many of these libstdc++ tests got too big for the tiny
memory model
and the whole testsuite got very noisy due to these relocation truncation
errors.
That's why we try to mark them as unsupported. I tried doing it in the past and
Szabolcs fixed it properly with
https://gcc.gnu.org/ml/libstdc++/2015-10/msg00037.html
Thanks,
Kyrill
Any idea why it acts in this way?
Thanks,
bin