build: Fix 32-bit TLS detection with 64-bit-default gas on Solaris/x86
I've recently tested i386-pc-solaris2.11 bootstrap on Solaris 11/x86 with only the bundled tools (using /usr/gnu/bin/as from binutils 2.30 in this case). It failed compiling libgo/runtime/proc.c, creating invalid assembly: proc.s: Assembler messages: proc.s:2092: Error: junk at end of line, first unrecognized character is `*' .globl __emutls_v.*runtime.g and several more errors. This is completely unexpected since Solaris does support TLS. It turned out that 32-bit TLS detection in gcc/configure had failed: configure:25145: checking assembler for thread-local storage support configure:25158: /usr/gnu/bin/as --fatal-warnings -o conftest.o conftest.s >&5 conftest.s: Assembler messages: conftest.s:6: Error: relocated field and relocation type differ in signedness conftest.s:7: Error: @TLSLDM reloc is not supported with 64-bit output format conftest.s:7: Error: junk `@tlsldm' after expression which isn't unexpected given that the bundled gas has been configured for x86_64-pc-solaris2.11, i.e. 64-bit-default. This is easily fixed by explicitly passing --32 for the 32-bit case, matching what is done for the 64-bit test. Tested on i386-pc-solaris2.11 with 32-bit-default and 64-bit-default gas as well as with /usr/bin/as, always correctly detecting TLS support. * configure.ac <i[34567]86-*-*>: Add --32 to tls_as_opt on Solaris. * configure: Regenerate.
This commit is contained in:
parent
308bc49688
commit
700d457295
@ -1,3 +1,8 @@
|
||||
2020-05-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* configure.ac <i[34567]86-*-*>: Add --32 to tls_as_opt on Solaris.
|
||||
* configure: Regenerate.
|
||||
|
||||
2020-05-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/94460
|
||||
|
5
gcc/configure
vendored
5
gcc/configure
vendored
@ -24779,6 +24779,11 @@ $as_echo "#define TLS_SECTION_ASM_FLAG 't'" >>confdefs.h
|
||||
fi
|
||||
case "$target" in
|
||||
i[34567]86-*-*)
|
||||
if test x$on_solaris = xyes; then
|
||||
case $gas_flag in
|
||||
yes) tls_as_opt="$tls_as_opt --32" ;;
|
||||
esac
|
||||
fi
|
||||
conftest_s="$conftest_s
|
||||
foo: .long 25
|
||||
.text
|
||||
|
@ -3544,6 +3544,11 @@ changequote(,)dnl
|
||||
fi
|
||||
case "$target" in
|
||||
i[34567]86-*-*)
|
||||
if test x$on_solaris = xyes; then
|
||||
case $gas_flag in
|
||||
yes) tls_as_opt="$tls_as_opt --32" ;;
|
||||
esac
|
||||
fi
|
||||
conftest_s="$conftest_s
|
||||
foo: .long 25
|
||||
.text
|
||||
|
Loading…
Reference in New Issue
Block a user