re PR target/18788 ("-pthreads" option with "-shared" does not cause libpthread.so to be linked in.)

libjava:
	* configure.ac (*-*-solaris2.8): Use alternate thread library.
	Add libthread.
	(*-*-solaris2.9): Use libthread.
	* configure: Regenerate.

	libgomp:
	* configure.tgt (*-*-solaris2.[56]*): Removed.

	gcc:
	* configure.ac: Don't disable TLS on Solaris 8/9 by default
	Set tga_func for Solaris 2/x86 resp. SPARC.
	Remove duplicate parts of sparc*-sun-solaris2.* TLS check.
	(LIB_THREAD_LDFLAGS_SPEC): Define.
	(LIB_TLS_SPEC): Define.
	Check for required Sun ld version.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/sol2.h (LIB_SPEC): Use LIB_THREAD_LDFLAGS_SPEC with
	-pthread, -threads, LIB_TLS_SPEC with -pthread.
	* doc/install.texi (Specific, *-*-solaris2*): Document use of
	alternate thread libraries on Solaris 8.
	Document TLS patch requirements.
	* doc/sourcebuild.texi (Add Options): Sort alphabetically.
	Document tls.

	PR target/18788
	* config/sol2.h (LIB_SPEC): Link with thread libraries even with
	-shared.

	gcc/testsuite:
	* lib/target-supports.exp (add_options_for_tls): New proc.
	* g++.dg/tls/static-1.C: Use dg-add-options tls.
	* g++.dg/tls/static-1a.cc: Likewise.
	* gcc.dg/tls/emutls-1.c: Likewise.
	* gcc.dg/tls/opt-11.c: Likewise.
	* gcc.dg/tls/opt-12.c: Likewise.
	* gcc.dg/tls/pr24428-2.c: Likewise.
	* gcc.dg/tls/pr24428.c: Likewise.
	* obj-c++.dg/tls/static-1.mm: Likewise.
	* obj-c++.dg/torture/tls/thr-init-1.mm: Likewise.
	* obj-c++.dg/torture/tls/thr-init-2.mm: Likewise.
	* obj-c++.dg/torture/tls/thr-init-3.mm: Likewise.
	* objc.dg/torture/tls/thr-init-2.m: Likewise.
	* objc.dg/torture/tls/thr-init-3.m: Likewise.
	* objc.dg/torture/tls/thr-init.m: Likewise.
	* gcc.dg/lto/20090210_0.c: Add -pthread for *-*-solaris2.[89].

From-SVN: r162478
This commit is contained in:
Rainer Orth 2010-07-23 17:58:57 +00:00 committed by Rainer Orth
parent 7a6faad6e7
commit 16c9d3b171
29 changed files with 431 additions and 112 deletions

View File

@ -1,3 +1,25 @@
2010-07-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac: Don't disable TLS on Solaris 8/9 by default
Set tga_func for Solaris 2/x86 resp. SPARC.
Remove duplicate parts of sparc*-sun-solaris2.* TLS check.
(LIB_THREAD_LDFLAGS_SPEC): Define.
(LIB_TLS_SPEC): Define.
Check for required Sun ld version.
* configure: Regenerate.
* config.in: Regenerate.
* config/sol2.h (LIB_SPEC): Use LIB_THREAD_LDFLAGS_SPEC with
-pthread, -threads, LIB_TLS_SPEC with -pthread.
* doc/install.texi (Specific, *-*-solaris2*): Document use of
alternate thread libraries on Solaris 8.
Document TLS patch requirements.
* doc/sourcebuild.texi (Add Options): Sort alphabetically.
Document tls.
PR target/18788
* config/sol2.h (LIB_SPEC): Link with thread libraries even with
-shared.
2010-07-23 Jakub Jelinek <jakub@redhat.com>
* tree.h (struct tree_base): Add nameless_flag bitfield.

View File

@ -449,7 +449,7 @@
#endif
/* Define if your assembler supports thread-local storage. */
/* Define if your assembler and linker support thread-local storage. */
#ifndef USED_FOR_TARGET
#undef HAVE_AS_TLS
#endif
@ -1537,6 +1537,18 @@
#endif
/* Define to the linker flags to use for -pthread. */
#ifndef USED_FOR_TARGET
#undef LIB_THREAD_LDFLAGS_SPEC
#endif
/* Define to the library containing __tls_get_addr/___tls_get_addr. */
#ifndef USED_FOR_TARGET
#undef LIB_TLS_SPEC
#endif
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#ifndef USED_FOR_TARGET

View File

@ -124,11 +124,12 @@ along with GCC; see the file COPYING3. If not see
#undef LIB_SPEC
#define LIB_SPEC \
"%{compat-bsd:-lucb -lsocket -lnsl -lelf -laio} \
%{!shared:\
%{!symbolic:\
%{pthreads|pthread:-lpthread} \
%{!pthreads:%{!pthread:%{threads:-lthread}}} \
%{p|pg:-ldl} -lc}}"
%{!symbolic:\
%{pthreads|pthread:" \
LIB_THREAD_LDFLAGS_SPEC " -lpthread " LIB_TLS_SPEC "} \
%{!pthreads:%{!pthread:%{threads:" \
LIB_THREAD_LDFLAGS_SPEC " -lthread}}} \
%{p|pg:-ldl} -lc}"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend.o%s crtn.o%s"

212
gcc/configure vendored
View File

@ -22108,17 +22108,9 @@ foo: .long 25
;;
i[34567]86-*-*)
case "$target" in
i[34567]86-*-solaris2.[89]*)
# TLS was introduced in the Solaris 9 4/04 release but
# we do not enable it by default on Solaris 9 either.
if test "x$enable_tls" = xyes ; then
on_solaris=yes
else
enable_tls=no;
fi
;;
i[34567]86-*-solaris2.*)
on_solaris=yes
tga_func=___tls_get_addr
;;
*)
on_solaris=no
@ -22333,17 +22325,9 @@ foo: .long 25
;;
sparc*-*-*)
case "$target" in
sparc*-sun-solaris2.[89]*)
# TLS was introduced in the Solaris 9 4/04 release but
# we do not enable it by default on Solaris 9 either.
if test "x$enable_tls" = xyes ; then
on_solaris=yes
else
enable_tls=no;
fi
;;
sparc*-sun-solaris2.*)
on_solaris=yes
tga_func=__tls_get_addr
;;
*)
on_solaris=no
@ -22351,32 +22335,17 @@ foo: .long 25
esac
if test x$on_solaris = xyes && test x$gas_flag = xno; then
conftest_s='
.section ".tdata",#alloc,#write,#tls
foo: .long 25
.text
sethi %tgd_hi22(foo), %o0
add %o0, %tgd_lo10(foo), %o1
add %l7, %o1, %o0, %tgd_add(foo)
call __tls_get_addr, %tgd_call(foo)
sethi %tldm_hi22(foo), %l1
add %l1, %tldm_lo10(foo), %l2
add %l7, %l2, %o0, %tldm_add(foo)
call __tls_get_addr, %tldm_call(foo)
sethi %tldo_hix22(foo), %l3
xor %l3, %tldo_lox10(foo), %l4
add %o0, %l4, %l5, %tldo_add(foo)
sethi %tie_hi22(foo), %o3
add %o3, %tie_lo10(foo), %o3
ld [%l7 + %o3], %o2, %tie_ld(foo)
add %g7, %o2, %o4, %tie_add(foo)
sethi %tle_hix22(foo), %l1
xor %l1, %tle_lox10(foo), %o5
ld [%g7 + %o5], %o1'
.section ".tdata",#alloc,#write,#tls'
tls_first_major=0
tls_first_minor=0
else
conftest_s='
.section ".tdata","awT",@progbits
.section ".tdata","awT",@progbits'
tls_first_major=2
tls_first_minor=14
tls_as_opt="-32 --fatal-warnings"
fi
conftest_s="$conftest_s
foo: .long 25
.text
sethi %tgd_hi22(foo), %o0
@ -22396,11 +22365,7 @@ foo: .long 25
add %g7, %o2, %o4, %tie_add(foo)
sethi %tle_hix22(foo), %l1
xor %l1, %tle_lox10(foo), %o5
ld [%g7 + %o5], %o1'
tls_first_major=2
tls_first_minor=14
tls_as_opt="-32 --fatal-warnings"
fi
ld [%g7 + %o5], %o1"
;;
xtensa*-*-*)
conftest_s='
@ -22455,6 +22420,163 @@ if test $gcc_cv_as_tls = yes; then
set_have_as_tls=yes
fi
fi
case "$target" in
# TLS was introduced in the Solaris 9 FCS release and backported to
# Solaris 8 patches. Support for GNU-style TLS on x86 was only
# introduced in Solaris 9 4/04, replacing the earlier Sun style that Sun
# ld and GCC don't support any longer.
*-*-solaris2.*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker and ld.so.1 TLS support" >&5
$as_echo_n "checking linker and ld.so.1 TLS support... " >&6; }
ld_tls_support=no
# Check ld and ld.so.1 TLS support.
if echo "$ld_ver" | grep GNU > /dev/null; then
# Assume all interesting versions of GNU ld have TLS support.
# FIXME: still need ld.so.1 support, i.e. ld version checks below.
ld_tls_support=yes
else
case "$target" in
# Solaris 8/x86 ld has GNU style TLS support since version 1.280.
i?86-*-solaris2.8)
min_tls_ld_vers_minor=280
;;
# Solaris 8/SPARC ld has TLS support since version 1.272.
sparc*-*-solaris2.8)
min_tls_ld_vers_minor=272
;;
# Solaris 9/x86 ld has GNU style TLS support since version 1.374.
i?86-*-solaris2.9)
min_tls_ld_vers_minor=374
;;
# Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
sparc*-*-solaris2.9 | *-*-solaris2.1[0-9]*)
min_tls_ld_vers_minor=343
;;
esac
if test "$ls_vers_major" -gt 1 || \
test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
ld_tls_support=yes
else
set_have_as_tls=no
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_tls_support" >&5
$as_echo "$ld_tls_support" >&6; }
save_LIBS="$LIBS"
save_LDFLAGS="$LDFLAGS"
LIBS=
LDFLAGS=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alternate thread library" >&5
$as_echo_n "checking alternate thread library... " >&6; }
case "$target" in
# TLS support was backported to Solaris 8 patches, but only lives in
# the alternate thread library which became the default in Solaris 9.
# We want to always use that, irrespective of TLS support.
*-*-solaris2.8)
# Take multilib subdir into account. There's no spec to handle
# this. The 64 symlink exists since Solaris 8.
lwp_dir=/usr/lib/lwp
lwp_spec="-L$lwp_dir%{m64:/64} -R$lwp_dir%{m64:/64}"
LDFLAGS="-L$lwp_dir -R$lwp_dir"
;;
*-*-solaris2*)
lwp_dir="none"
lwp_spec=""
;;
esac
# Always define LIB_THREAD_LDFLAGS_SPEC, even without TLS support.
cat >>confdefs.h <<_ACEOF
#define LIB_THREAD_LDFLAGS_SPEC "$lwp_spec"
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lwp_dir" >&5
$as_echo "$lwp_dir" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking library containing $tga_func" >&5
$as_echo_n "checking library containing $tga_func... " >&6; }
# Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
# (32-bit x86) only lived in libthread, so check for that. Keep
# set_have_as_tls if found, disable if not.
as_ac_Search=`$as_echo "ac_cv_search_$tga_func" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $tga_func" >&5
$as_echo_n "checking for library containing $tga_func... " >&6; }
if { as_var=$as_ac_Search; eval "test \"\${$as_var+set}\" = set"; }; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char $tga_func ();
int
main ()
{
return $tga_func ();
;
return 0;
}
_ACEOF
for ac_lib in '' thread; do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
if ac_fn_c_try_link "$LINENO"; then :
eval "$as_ac_Search=\$ac_res"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
if { as_var=$as_ac_Search; eval "test \"\${$as_var+set}\" = set"; }; then :
break
fi
done
if { as_var=$as_ac_Search; eval "test \"\${$as_var+set}\" = set"; }; then :
else
eval "$as_ac_Search=no"
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
eval ac_res=\$$as_ac_Search
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
eval ac_res=\$$as_ac_Search
if test "$ac_res" != no; then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
else
set_have_as_tls=no
fi
# Clear LIBS if we cannot support TLS.
if test $set_have_as_tls = no; then
LIBS=
fi
# Always define LIB_TLS_SPEC, even without TLS support.
cat >>confdefs.h <<_ACEOF
#define LIB_TLS_SPEC "$LIBS"
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBS" >&5
$as_echo "$LIBS" >&6; }
LIBS="$save_LIBS"
LDFLAGS="$save_LDFLAGS"
;;
esac
if test $set_have_as_tls = yes ; then
$as_echo "#define HAVE_AS_TLS 1" >>confdefs.h

View File

@ -2687,17 +2687,9 @@ foo: .long 25
;;
i[34567]86-*-*)
case "$target" in
i[34567]86-*-solaris2.[89]*)
# TLS was introduced in the Solaris 9 4/04 release but
# we do not enable it by default on Solaris 9 either.
if test "x$enable_tls" = xyes ; then
on_solaris=yes
else
enable_tls=no;
fi
;;
i[34567]86-*-solaris2.*)
on_solaris=yes
tga_func=___tls_get_addr
;;
*)
on_solaris=no
@ -2913,17 +2905,9 @@ foo: .long 25
;;
sparc*-*-*)
case "$target" in
sparc*-sun-solaris2.[89]*)
# TLS was introduced in the Solaris 9 4/04 release but
# we do not enable it by default on Solaris 9 either.
if test "x$enable_tls" = xyes ; then
on_solaris=yes
else
enable_tls=no;
fi
;;
sparc*-sun-solaris2.*)
on_solaris=yes
tga_func=__tls_get_addr
;;
*)
on_solaris=no
@ -2931,32 +2915,17 @@ foo: .long 25
esac
if test x$on_solaris = xyes && test x$gas_flag = xno; then
conftest_s='
.section ".tdata",#alloc,#write,#tls
foo: .long 25
.text
sethi %tgd_hi22(foo), %o0
add %o0, %tgd_lo10(foo), %o1
add %l7, %o1, %o0, %tgd_add(foo)
call __tls_get_addr, %tgd_call(foo)
sethi %tldm_hi22(foo), %l1
add %l1, %tldm_lo10(foo), %l2
add %l7, %l2, %o0, %tldm_add(foo)
call __tls_get_addr, %tldm_call(foo)
sethi %tldo_hix22(foo), %l3
xor %l3, %tldo_lox10(foo), %l4
add %o0, %l4, %l5, %tldo_add(foo)
sethi %tie_hi22(foo), %o3
add %o3, %tie_lo10(foo), %o3
ld [%l7 + %o3], %o2, %tie_ld(foo)
add %g7, %o2, %o4, %tie_add(foo)
sethi %tle_hix22(foo), %l1
xor %l1, %tle_lox10(foo), %o5
ld [%g7 + %o5], %o1'
.section ".tdata",#alloc,#write,#tls'
tls_first_major=0
tls_first_minor=0
else
conftest_s='
.section ".tdata","awT",@progbits
.section ".tdata","awT",@progbits'
tls_first_major=2
tls_first_minor=14
tls_as_opt="-32 --fatal-warnings"
fi
conftest_s="$conftest_s
foo: .long 25
.text
sethi %tgd_hi22(foo), %o0
@ -2976,11 +2945,7 @@ foo: .long 25
add %g7, %o2, %o4, %tie_add(foo)
sethi %tle_hix22(foo), %l1
xor %l1, %tle_lox10(foo), %o5
ld [%g7 + %o5], %o1'
tls_first_major=2
tls_first_minor=14
tls_as_opt="-32 --fatal-warnings"
fi
ld [%g7 + %o5], %o1"
;;
xtensa*-*-*)
conftest_s='
@ -3007,9 +2972,95 @@ else
[$tls_first_major,$tls_first_minor,0], [$tls_as_opt], [$conftest_s],,
[set_have_as_tls=yes])
fi
case "$target" in
# TLS was introduced in the Solaris 9 FCS release and backported to
# Solaris 8 patches. Support for GNU-style TLS on x86 was only
# introduced in Solaris 9 4/04, replacing the earlier Sun style that Sun
# ld and GCC don't support any longer.
*-*-solaris2.*)
AC_MSG_CHECKING(linker and ld.so.1 TLS support)
ld_tls_support=no
# Check ld and ld.so.1 TLS support.
if echo "$ld_ver" | grep GNU > /dev/null; then
# Assume all interesting versions of GNU ld have TLS support.
# FIXME: still need ld.so.1 support, i.e. ld version checks below.
ld_tls_support=yes
else
case "$target" in
# Solaris 8/x86 ld has GNU style TLS support since version 1.280.
i?86-*-solaris2.8)
min_tls_ld_vers_minor=280
;;
# Solaris 8/SPARC ld has TLS support since version 1.272.
sparc*-*-solaris2.8)
min_tls_ld_vers_minor=272
;;
# Solaris 9/x86 ld has GNU style TLS support since version 1.374.
i?86-*-solaris2.9)
min_tls_ld_vers_minor=374
;;
# Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS.
sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*)
min_tls_ld_vers_minor=343
;;
esac
if test "$ls_vers_major" -gt 1 || \
test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then
ld_tls_support=yes
else
set_have_as_tls=no
fi
fi
AC_MSG_RESULT($ld_tls_support)
save_LIBS="$LIBS"
save_LDFLAGS="$LDFLAGS"
LIBS=
LDFLAGS=
AC_MSG_CHECKING(alternate thread library)
case "$target" in
# TLS support was backported to Solaris 8 patches, but only lives in
# the alternate thread library which became the default in Solaris 9.
# We want to always use that, irrespective of TLS support.
*-*-solaris2.8)
# Take multilib subdir into account. There's no spec to handle
# this. The 64 symlink exists since Solaris 8.
lwp_dir=/usr/lib/lwp
lwp_spec="-L$lwp_dir%{m64:/64} -R$lwp_dir%{m64:/64}"
LDFLAGS="-L$lwp_dir -R$lwp_dir"
;;
*-*-solaris2*)
lwp_dir="none"
lwp_spec=""
;;
esac
# Always define LIB_THREAD_LDFLAGS_SPEC, even without TLS support.
AC_DEFINE_UNQUOTED(LIB_THREAD_LDFLAGS_SPEC, "$lwp_spec",
[Define to the linker flags to use for -pthread.])
AC_MSG_RESULT($lwp_dir)
AC_MSG_CHECKING(library containing $tga_func)
# Before Solaris 10, __tls_get_addr (SPARC/x64) resp. ___tls_get_addr
# (32-bit x86) only lived in libthread, so check for that. Keep
# set_have_as_tls if found, disable if not.
AC_SEARCH_LIBS([$tga_func], [thread],, [set_have_as_tls=no])
# Clear LIBS if we cannot support TLS.
if test $set_have_as_tls = no; then
LIBS=
fi
# Always define LIB_TLS_SPEC, even without TLS support.
AC_DEFINE_UNQUOTED(LIB_TLS_SPEC, "$LIBS",
[Define to the library containing __tls_get_addr/___tls_get_addr.])
AC_MSG_RESULT($LIBS)
LIBS="$save_LIBS"
LDFLAGS="$save_LDFLAGS"
;;
esac
if test $set_have_as_tls = yes ; then
AC_DEFINE(HAVE_AS_TLS, 1,
[Define if your assembler supports thread-local storage.])
[Define if your assembler and linker support thread-local storage.])
fi
# Target-specific assembler checks.

View File

@ -4165,6 +4165,29 @@ There are patches for Solaris 8 (117350-12 or newer for SPARC,
117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
SPARC, 117172-11 or newer for Intel) that address this problem.
Solaris~8 provides an alternate implementation of the thread libraries,
@samp{libpthread} and @samp{libthread}. They are required for TLS
support and have been made the default in Solaris~9, so they are always
used on Solaris~8.
Thread-local storage (TLS) is supported in Solaris~8 and 9, but requires
some patches. The @samp{libthread} patches provide the
@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr}
(32-bit x86) functions. On Solaris~8, you need 108993-26 or newer on
SPARC, 108994-26 or newer on Intel. On Solaris~9, the necessary support
on SPARC is present since FCS, while 114432-05 or newer is reqired on
Intel. Additionally, on Solaris~8, patch 109147-14 or newer on SPARC or
109148-22 or newer on Intel are required for the Sun @command{ld} and
runtime linker (@command{ld.so.1}) support. Again, Solaris~9/SPARC
works since FCS, while 113986-02 is required on Intel. The linker
patches must be installed even if GNU @command{ld} is used. Sun
@command{as} in Solaris~8 and 9 doesn't support the necessary
relocations, so GNU @command{as} must be used. The @command{configure}
script checks for those prerequisites and automatically enables TLS
support if they are met. Although those minimal patch versions should
work, it is recommended to use the latest patch versions which include
additional bug fixes.
@html
<hr />
@end html

View File

@ -1879,6 +1879,16 @@ The supported values of @var{feature} for directive @code{dg-add-options}
are:
@table @code
@item arm_neon
NEON support. Only ARM targets support this feature, and only then
in certain modes; see the @ref{arm_neon_ok,,arm_neon_ok effective target
keyword}.
@item arm_neon_fp16
NEON and half-precision floating point support. Only ARM targets
support this feature, and only then in certain modes; see
the @ref{arm_neon_ok,,arm_neon_fp16_ok effective target keyword}.
@item bind_pic_locally
Add the target-specific flags needed to enable functions to bind
locally when using pic/PIC passes in the testsuite.
@ -1894,15 +1904,8 @@ compliance mode.
@code{mips16} function attributes.
Only MIPS targets support this feature, and only then in certain modes.
@item arm_neon
NEON support. Only ARM targets support this feature, and only then
in certain modes; see the @ref{arm_neon_ok,,arm_neon_ok effective target
keyword}.
@item arm_neon_fp16
NEON and half-precision floating point support. Only ARM targets
support this feature, and only then in certain modes; see
the @ref{arm_neon_ok,,arm_neon_fp16_ok effective target keyword}.
@item tls
Add the target-specific flags needed to use thread-local storage.
@end table
@node Require Support

View File

@ -1,3 +1,22 @@
2010-07-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* lib/target-supports.exp (add_options_for_tls): New proc.
* g++.dg/tls/static-1.C: Use dg-add-options tls.
* g++.dg/tls/static-1a.cc: Likewise.
* gcc.dg/tls/emutls-1.c: Likewise.
* gcc.dg/tls/opt-11.c: Likewise.
* gcc.dg/tls/opt-12.c: Likewise.
* gcc.dg/tls/pr24428-2.c: Likewise.
* gcc.dg/tls/pr24428.c: Likewise.
* obj-c++.dg/tls/static-1.mm: Likewise.
* obj-c++.dg/torture/tls/thr-init-1.mm: Likewise.
* obj-c++.dg/torture/tls/thr-init-2.mm: Likewise.
* obj-c++.dg/torture/tls/thr-init-3.mm: Likewise.
* objc.dg/torture/tls/thr-init-2.m: Likewise.
* objc.dg/torture/tls/thr-init-3.m: Likewise.
* objc.dg/torture/tls/thr-init.m: Likewise.
* gcc.dg/lto/20090210_0.c: Add -pthread for *-*-solaris2.[89].
2010-07-23 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/tree-ssa/loadpre6.c: Cleanup fre dump file.

View File

@ -1,6 +1,7 @@
// { dg-do run }
// { dg-options "-O2" }
// { dg-require-effective-target tls_runtime }
// { dg-add-options tls }
// { dg-additional-sources "static-1a.cc" }
extern "C" void abort ();

View File

@ -1,6 +1,7 @@
// { dg-do run }
// { dg-options "-O2" }
// { dg-require-effective-target tls_runtime }
// { dg-add-options tls }
// { dg-additional-sources "static-1a.cc" }
struct A

View File

@ -1,5 +1,7 @@
/* { dg-lto-do run } */
/* { dg-suppress-ld-options {-fPIC} } */
/* { dg-require-effective-target tls } */
/* { dg-extra-ld-options "-pthread" { target *-*-solaris2.[89] } } */
int foo (int x)
{
return x;

View File

@ -1,5 +1,6 @@
/* { dg-do run { target *-wrs-vxworks } } */
/* { dg-require-effective-target tls } */
/* { dg-add-options tls } */
/* vxworks' TLS model requires no extra padding on the tls proxy
objects. */

View File

@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target tls_runtime } */
/* { dg-add-options tls } */
extern void abort (void);
extern void *memset (void *, int, __SIZE_TYPE__);

View File

@ -2,6 +2,7 @@
/* { dg-do run } */
/* { dg-options "-O2 -fpic" } */
/* { dg-require-effective-target tls_runtime } */
/* { dg-add-options tls } */
/* { dg-require-effective-target fpic } */
extern void abort (void);

View File

@ -1,6 +1,7 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-require-effective-target tls_runtime } */
/* { dg-add-options tls } */
__thread double thrtest[81];
int main ()

View File

@ -1,6 +1,7 @@
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-require-effective-target tls_runtime } */
/* { dg-add-options tls } */
__thread double thrtest[81];
int main ()

View File

@ -569,6 +569,24 @@ proc check_effective_target_pcc_bitfield_type_matters { } {
}]
}
# Add to FLAGS all the target-specific flags needed to use thread-local storage.
proc add_options_for_tls { flags } {
# On Solaris 8 and 9, __tls_get_addr/___tls_get_addr only lives in
# libthread, so always pass -pthread for native TLS.
# Need to duplicate native TLS check from
# check_effective_target_tls_native to avoid recursion.
if { [istarget *-*-solaris2.\[89\]*] &&
[check_no_messages_and_pattern tls_native "!emutls" assembly {
__thread int i;
int f (void) { return i; }
void g (int j) { i = j; }
}] } {
return "$flags -pthread"
}
return $flags
}
# Return 1 if thread local storage (TLS) is supported, 0 otherwise.
proc check_effective_target_tls {} {

View File

@ -1,5 +1,6 @@
// { dg-do run }
// { dg-require-effective-target tls }
// { dg-add-options tls }
// { dg-additional-sources "static-1a.mm" }
extern "C" {

View File

@ -1,5 +1,6 @@
// { dg-do run }
// { dg-require-effective-target tls }
// { dg-add-options tls }
/* { dg-skip-if "PR44140" { *-*-* } { "-flto" "-fwhopr" } { "" } } */
extern "C" {
extern void abort ();

View File

@ -1,5 +1,6 @@
// { dg-do run }
// { dg-require-effective-target tls }
// { dg-add-options tls }
/* { dg-skip-if "PR44140" { *-*-* } { "-flto" "-fwhopr" } { "" } } */
extern "C" {
@ -42,4 +43,4 @@ int main (int ac, char *av[])
abort () ;
return 0;
}
}

View File

@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target tls } */
/* { dg-add-options tls } */
/* { dg-skip-if "PR44140" { *-*-* } { "-flto" "-fwhopr" } { "" } } */
/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.mm" } */

View File

@ -1,5 +1,6 @@
// { dg-do run }
// { dg-require-effective-target tls }
// { dg-add-options tls }
/* { dg-skip-if "PR44140" { *-*-* } { "-flto" "-fwhopr" } { "" } } */
extern void _exit(int);

View File

@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target tls } */
/* { dg-add-options tls } */
/* { dg-skip-if "PR44140" { *-*-* } { "-flto" "-fwhopr" } { "" } } */
/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
/* { dg-additional-sources "../../../objc-obj-c++-shared/Object1.m" } */

View File

@ -1,5 +1,6 @@
/* { dg-do run } */
/* { dg-require-effective-target tls } */
/* { dg-add-options tls } */
/* { dg-skip-if "PR44140" { *-*-* } { "-flto" "-fwhopr" } { "" } } */
extern void _exit(int);

View File

@ -1,3 +1,7 @@
2010-07-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.tgt (*-*-solaris2.[56]*): Removed.
2010-07-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* acinclude.m4 (LIBGOMP_ENABLE_SYMVERS): Handle sun style.

View File

@ -116,11 +116,6 @@ case "${target}" in
config_path="mingw32 posix"
;;
*-*-solaris2.[56]*)
config_path="posix95 posix"
XLDFLAGS="${XLDFLAGS} -lposix4"
;;
*-*-darwin*)
config_path="bsd posix"
;;

View File

@ -1,3 +1,10 @@
2010-07-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac (*-*-solaris2.8): Use alternate thread library.
Add libthread.
(*-*-solaris2.9): Use libthread.
* configure: Regenerate.
2010-07-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* include/sparc-signal.h: Renamed to ...

13
libjava/configure vendored
View File

@ -20712,6 +20712,19 @@ case "$THREADS" in
THREADLIBS='-lpthread -lrt'
THREADSPEC='-lpthread -lrt'
;;
*-*-solaris2.8)
# Always use alternate thread library on Solaris 8. Need libthread
# for TLS support.
# Need -Wl,-R to get it through libtool ...
THREADLIBS='-L/usr/lib/lwp$(MULTISUBDIR) -Wl,-R -Wl,/usr/lib/lwp$(MULTISUBDIR) -lpthread -lthread'
# ... while ld only accepts -R.
THREADSPEC='-L/usr/lib/lwp%{m64:/64} -R/usr/lib/lwp%{m64:/64} -lpthread -lthread'
;;
*-*-solaris2.9)
# As on Solaris 8, need libthread for TLS support.
THREADLIBS='-lpthread -lthread'
THREADSPEC='-lpthread -lthread'
;;
*)
THREADLIBS=-lpthread
THREADSPEC=-lpthread

View File

@ -1064,6 +1064,19 @@ case "$THREADS" in
THREADLIBS='-lpthread -lrt'
THREADSPEC='-lpthread -lrt'
;;
*-*-solaris2.8)
# Always use alternate thread library on Solaris 8. Need libthread
# for TLS support.
# Need -Wl,-R to get it through libtool ...
THREADLIBS='-L/usr/lib/lwp$(MULTISUBDIR) -Wl,-R -Wl,/usr/lib/lwp$(MULTISUBDIR) -lpthread -lthread'
# ... while ld only accepts -R.
THREADSPEC='-L/usr/lib/lwp%{m64:/64} -R/usr/lib/lwp%{m64:/64} -lpthread -lthread'
;;
*-*-solaris2.9)
# As on Solaris 8, need libthread for TLS support.
THREADLIBS='-lpthread -lthread'
THREADSPEC='-lpthread -lthread'
;;
*)
THREADLIBS=-lpthread
THREADSPEC=-lpthread