diff --git a/configure b/configure index 028839fd88..7f7bc2026c 100755 --- a/configure +++ b/configure @@ -13126,6 +13126,23 @@ fi +# +# Using Solaris linker with gcc on Solaris breaks Thread Local Storage +# +case $host in #( + *-solaris*) : + + if test "$GCC" = "yes"; then : + LDFLAGS="$LDFLAGS -zrelax=transtls" + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: When using GNU C Compiler on Solaris, -zrelax=transtls linker flag is used to fix bug in Thread Local Storage" >&5 +$as_echo "$as_me: WARNING: When using GNU C Compiler on Solaris, -zrelax=transtls linker flag is used to fix bug in Thread Local Storage" >&2;} + +fi + ;; #( + *) : + ;; +esac + # # CCNOOPT defaults to -O0 on gcc and disables optimization when is last # diff --git a/configure.ac b/configure.ac index 858d9a0529..e20cca72cf 100644 --- a/configure.ac +++ b/configure.ac @@ -355,6 +355,17 @@ esac AC_PROG_CC AC_PROG_CC_C99 +# +# Using Solaris linker with gcc on Solaris breaks Thread Local Storage +# +AS_CASE([$host], + [*-solaris*],[ + AS_IF([test "$GCC" = "yes"], + [LDFLAGS="$LDFLAGS -zrelax=transtls" + AC_MSG_WARN([When using GNU C Compiler on Solaris, -zrelax=transtls linker flag is used to fix bug in Thread Local Storage]) + ]) + ]) + # # CCNOOPT defaults to -O0 on gcc and disables optimization when is last #