https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80759
Bug ID: 80759 Summary: gcc.target/x86_64/abi/ms-sysv FAILs Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: testsuite Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org CC: daniel.santos at pobox dot com Target Milestone: --- Target: i?86-*-* The new gcc.target/x86_64/abi/ms-sysv tests FAIL in various e.g. on i386-pc-solaris2.* and i686-pc-linux-gnu: * In those 32-bit-default configurations, the 32-bit multilib is skipped as unsupported as expected (although the UNSUPPORTED entry in gcc.sum occurs e.g. 45 times for -j48 testing instead of only once), but for the 64-bit multilib, I get WARNING: Could not build /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c. WARNING: Could not build /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c. WARNING: Could not build /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c. WARNING: Could not build /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c. FAIL: gcc.target/x86_64/abi/ms-sysv CFLAGS="-O0 -g3" generator_args="-p0-5 --omit-rbp-clobbers" FAIL: gcc.target/x86_64/abi/ms-sysv CFLAGS="-O2" generator_args="-p0-5" FAIL: gcc.target/x86_64/abi/ms-sysv CFLAGS="-mcall-ms2sysv-xlogues -O0 -g3" generator_args="-p0-5 --omit-rbp-clobbers" FAIL: gcc.target/x86_64/abi/ms-sysv CFLAGS="-mcall-ms2sysv-xlogues -O2" generator_args="-p0-5" Looking at gcc.log, I find that both the generator (which seems ok) *and* the testcases are compiled without the 64-bit multlib flag (-m64), leading to a failing 32-bit compilation of the testcase: spawn /var/gcc/regression/trunk/12-gcc/build/gcc/xgcc -B/var/gcc/regression/trunk/12-gcc/build/gcc/ -I/var/gcc/regression/trunk/12-gcc/build/gcc/testsuite/gcc4/ms-sysv -I/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv -O0 -g3 -Wall -c -o /var/gcc/regression/trunk/12-gcc/build/gcc/testsuite/gcc4/ms-sysv/ms-sysv.o /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c^M ^[[01m^[[K/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:62:3:^[[m^[[K ^[[01;31m^[[Kerror: ^[[m^[[K#error Test only valid on x86_64^M # ^[[01;31m^[[Kerror^[[m^[[K Test only valid on x86_64^M ^[[01;31m^[[K^~~~~^[[m^[[K^M ^[[01m^[[K/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:102:5:^[[m^[[K ^[[01;31m^[[Kerror: ^[[m^[[Kunknown type name '^[[01m^[[K__uint128_t^[[m^[[K'^M ^[[01;31m^[[K__uint128_t^[[m^[[K sseregs[10];^M ^[[01;31m^[[K^~~~~~~~~~~^[[m^[[K^M ^[[01m^[[K/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:234:34:^[[m^[[K ^[[01;31m^[[Kerror: ^[[m^[[Kunknown type name '^[[01m^[[K__uint128_t^[[m^[[K'^M static int compare_reg128 (const ^[[01;31m^[[K__uint128_t^[[m^[[K *a, const __uint128_t *b,^M ^[[01;31m^[[K^~~~~~~~~~~^[[m^[[K^M ^[[01m^[[K/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c:234:56:^[[m^[[K ^[[01;31m^[[Kerror: ^[[m^[[Kunknown type name '^[[01m^[[K__uint128_t^[[m^[[K'^M static int compare_reg128 (const __uint128_t *a, const ^[[01;31m^[[K__uint128_t^[[m^[[K *b,^M ^[[01;31m^[[K^~~~~~~~~~~^[[m^[[K^M WARNING: Could not build /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c. Apart from lacking the -m64 flag here, the compiler invocations have lost -fno-diagnostics-show-caret -fdiagnostics-color=never, leading to unreadable log output. * do-test.S only works with gas: if I try to compile it manually with Solaris /bin/as -m64, I get Assembler: "/var/tmp//cce6X86d.s", line 339 : Illegal mnemonic Near line: " .struct 0" "/var/tmp//cce6X86d.s", line 339 : Syntax error Near line: " .struct 0" "/var/tmp//cce6X86d.s", line 341 : Illegal mnemonic Near line: " .struct test_data_save + 224" "/var/tmp//cce6X86d.s", line 341 : Syntax error Near line: " .struct test_data_save + 224" "/var/tmp//cce6X86d.s", line 343 : Illegal mnemonic Near line: " .struct test_data_save + 448" "/var/tmp//cce6X86d.s", line 343 : Syntax error Near line: " .struct test_data_save + 448" "/var/tmp//cce6X86d.s", line 345 : Illegal mnemonic Near line: " .struct test_data_save + 672" "/var/tmp//cce6X86d.s", line 345 : Syntax error Near line: " .struct test_data_save + 672" "/var/tmp//cce6X86d.s", line 347 : Illegal mnemonic Near line: " .struct test_data_save + 680" "/var/tmp//cce6X86d.s", line 347 : Syntax error Near line: " .struct test_data_save + 680" i.e. as doesn't understand the gas .struct extension. It seems to me that ms-sysv.exp is seriously misguided in trying to do all its compilations manually instead of using dg-test/dg-runtest/gcc_target_compile which whould nicely avoid all those issues. Rainer