mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-26 18:56:15 +08:00
Work around Solaris ld bug linking __tls_get_addr on 64-bit x86
* m4/druntime/os.m4 (DRUNTIME_OS_LINK_SPEC): New macro. * configure.ac: Call it. * configure: Regenerate. * Makefile.in, libdruntime/Makefile.in, src/Makefile.in, testsuite/Makefile.in: Regenerate. * src/libgphobos.spec.in (*link): Append OS_LINK_SPEC. From-SVN: r270346
This commit is contained in:
parent
4d51312053
commit
ba838aa6c3
@ -1,5 +1,12 @@
|
||||
2019-04-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* m4/druntime/os.m4 (DRUNTIME_OS_LINK_SPEC): New macro.
|
||||
* configure.ac: Call it.
|
||||
* configure: Regenerate.
|
||||
* Makefile.in, libdruntime/Makefile.in, src/Makefile.in,
|
||||
testsuite/Makefile.in: Regenerate.
|
||||
* src/libgphobos.spec.in (*link): Append OS_LINK_SPEC.
|
||||
|
||||
PR d/88150
|
||||
* libdruntime/gcc/sections/elf_shared.d [Solaris] (SharedELF): Set
|
||||
to true.
|
||||
|
@ -252,6 +252,7 @@ NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OS_LINK_SPEC = @OS_LINK_SPEC@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
22
libphobos/configure
vendored
22
libphobos/configure
vendored
@ -650,6 +650,7 @@ DCFG_HAVE_LIBATOMIC
|
||||
DCFG_HAVE_64BIT_ATOMICS
|
||||
DCFG_HAVE_ATOMIC_BUILTINS
|
||||
DCFG_HAVE_QSORT_R
|
||||
OS_LINK_SPEC
|
||||
DRUNTIME_OS_MINFO_BRACKETING_FALSE
|
||||
DRUNTIME_OS_MINFO_BRACKETING_TRUE
|
||||
DCFG_MINFO_BRACKETING
|
||||
@ -11495,7 +11496,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 11498 "configure"
|
||||
#line 11499 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -11601,7 +11602,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 11604 "configure"
|
||||
#line 11605 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@ -14118,6 +14119,23 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
|
||||
case $target in
|
||||
i?86-*-solaris2.* | x86_64-*-solaris2.*)
|
||||
# 64-bit Solaris/x86 ld breaks calls to __tls_get_addr with non-TLS
|
||||
# relocs. Work around by disabling TLS transitions. Not necessary
|
||||
# on 32-bit x86, but cannot be distinguished reliably in specs.
|
||||
druntime_ld_prog=`$CC -print-prog-name=ld`
|
||||
if test -n "$druntime_ld_prog" \
|
||||
&& $druntime_ld_prog -v 2>&1 | grep GNU > /dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
OS_LINK_SPEC='-z relax=transtls'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
|
@ -125,6 +125,7 @@ DRUNTIME_OS_SOURCES
|
||||
DRUNTIME_OS_THREAD_MODEL
|
||||
DRUNTIME_OS_ARM_EABI_UNWINDER
|
||||
DRUNTIME_OS_MINFO_BRACKETING
|
||||
DRUNTIME_OS_LINK_SPEC
|
||||
DRUNTIME_LIBRARIES_CLIB
|
||||
|
||||
WITH_LOCAL_DRUNTIME([
|
||||
|
@ -566,6 +566,7 @@ NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OS_LINK_SPEC = @OS_LINK_SPEC@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
@ -183,3 +183,25 @@ AC_DEFUN([DRUNTIME_OS_MINFO_BRACKETING],
|
||||
AM_CONDITIONAL([DRUNTIME_OS_MINFO_BRACKETING], [test "$DCFG_MINFO_BRACKETING" = "true"])
|
||||
AC_LANG_POP([C])
|
||||
])
|
||||
|
||||
# DRUNTIME_OS_LINK_SPEC
|
||||
# ---------------------
|
||||
# Add target-specific link options to link_spec.
|
||||
AC_DEFUN([DRUNTIME_OS_LINK_SPEC],
|
||||
[
|
||||
case $target in
|
||||
i?86-*-solaris2.* | x86_64-*-solaris2.*)
|
||||
# 64-bit Solaris/x86 ld breaks calls to __tls_get_addr with non-TLS
|
||||
# relocs. Work around by disabling TLS transitions. Not necessary
|
||||
# on 32-bit x86, but cannot be distinguished reliably in specs.
|
||||
druntime_ld_prog=`$CC -print-prog-name=ld`
|
||||
if test -n "$druntime_ld_prog" \
|
||||
&& $druntime_ld_prog -v 2>&1 | grep GNU > /dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
OS_LINK_SPEC='-z relax=transtls'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(OS_LINK_SPEC)
|
||||
])
|
||||
|
@ -323,6 +323,7 @@ NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OS_LINK_SPEC = @OS_LINK_SPEC@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
@ -6,5 +6,8 @@
|
||||
|
||||
@DRTSTUFF_SPEC@
|
||||
|
||||
%rename link linkorig_gdc_renamed
|
||||
*link: %(linkorig_gdc_renamed) @OS_LINK_SPEC@
|
||||
|
||||
%rename lib liborig_gdc_renamed
|
||||
*lib: %{debuglib|defaultlib|nophoboslib: ; :@SPEC_PHOBOS_DEPS@} %(liborig_gdc_renamed)
|
||||
|
@ -196,6 +196,7 @@ NM = @NM@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
OS_LINK_SPEC = @OS_LINK_SPEC@
|
||||
OTOOL = @OTOOL@
|
||||
OTOOL64 = @OTOOL64@
|
||||
PACKAGE = @PACKAGE@
|
||||
|
Loading…
Reference in New Issue
Block a user