summaryrefslogtreecommitdiff
path: root/gcc/configure.in
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-23 21:55:30 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-23 21:55:30 +0000
commit2d6788fec3c05a3d5cb0133a5faedea13a9724c5 (patch)
treec1b2e00bd4d42f8bb8685ead98e7da60c3f0d7f2 /gcc/configure.in
parentf1c96ec2f219881bfad4adcc6ee7efd7983e9c58 (diff)
downloadgcc-2d6788fec3c05a3d5cb0133a5faedea13a9724c5.tar.gz
* configure.in (HAVE_AS_TLS): New test.
* config.in, configure: Rebuild. * config/i386/i386.c (TARGET_HAVE_TLS): Set if HAVE_AS_TLS. (ix86_tls_dialect_string, ix86_tls_dialect): New. (override_options): Set it. (tls_model_chars, tls_symbolic_operand): New. (tls_symbolic_operand_1, global_dynamic_symbolic_operand): New. (local_dynamic_symbolic_operand, initial_exec_symbolic_operand): New. (local_exec_symbolic_operand): New. (get_pic_label_name): Merge into output_set_got. (ix86_asm_file_end): Emit pic_label_name if defined. (legitimate_constant_p, constant_address_p): New. (legitimate_pic_operand_p): New. (legitimate_pic_address_disp_p): Handle GOTTPOFF, NTPOFF, DTPOFF. (legitimate_address_p): Likewise. (ix86_encode_section_info): Rename from i386_; handle tls decls. (ix86_strip_name_encoding): New. (get_thread_pointer): New. (legitimize_address): Handle tls symbols. (output_pic_addr_const): Handle GOTTPOFF, TPOFF, NTPOFF, DTPOFF. Remove UNSPEC_PLT. (struct machine_function): Add some_ld_name. (get_some_local_dynamic_name, get_some_local_dynamic_name_1): Set it. (print_operand) [&]: Use it. Handle UNSPEC_TP. (output_addr_const_extra): New. (maybe_get_pool_constant): New. (ix86_split_to_parts): Use it. (ix86_expand_move): Handle tls symbols. (ix86_tls_get_addr): New. * config/i386/i386.h (TARGET_GNU_TLS, TARGET_SUN_TLS): New. (TARGET_OPTIONS): Add tls-dialect. (CONSTANT_ADDRESS_P): Use new out-of-line function. (LEGITIMATE_CONSTANT_P): Likewise. (LEGITIMATE_PIC_OPERAND_P): Likewise. (TARGET_STRIP_NAME_ENCODING): New. (ASM_OUTPUT_LABELREF): New. (PRINT_OPERAND_PUNCT_VALID_P): Add '&'. (OUTPUT_ADDR_CONST_EXTRA): New. (PREDICATE_CODES): Update. (ix86_tls_dialect, ix86_tls_dialect_string): New. * config/i386/i386.md: Regroup and renumber unspec constants. (tls_global_dynamic_gnu, tls_global_dynamic_sun): New. (tls_local_dynamic_base_gnu, tls_local_dynamic_base_sun): New. (tls_global_dynamic, tls_local_dynamic_base): New. (tls_local_dynamic_once): New. * config/i386/i386-protos.h: Update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53812 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/configure.in')
-rw-r--r--gcc/configure.in49
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc/configure.in b/gcc/configure.in
index 71bfca708f9..8dcb671cf32 100644
--- a/gcc/configure.in
+++ b/gcc/configure.in
@@ -1718,6 +1718,55 @@ if test x"$gcc_cv_as_shf_merge" = xyes; then
fi
AC_MSG_RESULT($gcc_cv_as_shf_merge)
+AC_MSG_CHECKING(assembler thread-local storage support)
+gcc_cv_as_tls=no
+conftest_s=
+tls_first_major=
+tls_first_minor=
+case "$target" in
+changequote(,)dnl
+ i[34567]86-*-*)
+changequote([,])dnl
+ conftest_s='
+ .section ".tdata","awT",@progbits
+foo: .long 25
+ .text
+ movl %gs:0, %eax
+ leal foo@TLSGD(,%ebx,1), %eax
+ leal foo@TLSLDM(%ebx), %eax
+ leal foo@DTPOFF(%eax), %edx
+ movl foo@GOTTPOFF(%ebx), %eax
+ subl foo@GOTTPOFF(%ebx), %eax
+ movl $foo@TPOFF, %eax
+ subl $foo@TPOFF, %eax
+ leal foo@NTPOFF(%ecx), %eax'
+ tls_first_major=2
+ tls_first_minor=13
+ ;;
+esac
+if test -z "$tls_first_major"; then
+ :
+elif test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
+then
+ if test "$gcc_cv_gas_major_version" -eq "$tls_first_major" \
+ -a "$gcc_cv_gas_minor_version" -ge "$tls_first_minor" \
+ -o "$gcc_cv_gas_major_version" -gt "$tls_first_major"; then
+ gcc_cv_as_tls=yes
+ fi
+elif test x$gcc_cv_as != x; then
+ echo "$conftest_s" > conftest.s
+ if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1
+ then
+ gcc_cv_as_tls=yes
+ fi
+ rm -f conftest.s conftest.o
+fi
+if test "$gcc_cv_as_tls" = yes; then
+ AC_DEFINE(HAVE_AS_TLS, 1,
+ [Define if your assembler supports thread-local storage.])
+fi
+AC_MSG_RESULT($gcc_cv_as_tls)
+
case "$target" in
# All TARGET_ABI_OSF targets.
alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)