From: ro@138bc75d-0d04-0410-961f-82ee72b054a4 Date: Wed, 24 Mar 2010 18:49:49 +0000 (+0000) Subject: * configure.ac (i[34567]86-*-*): Handle Solaris 2/x86 TLS support X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=4d62f82895deb7521a548e5f0e16b8beb63c004e * configure.ac (i[34567]86-*-*): Handle Solaris 2/x86 TLS support and Sun as TLS syntax. (TLS_SECTION_ASM_FLAG) [on_solaris && !gas_flag]: Define. * configure: Regenerate. * config.in: Regenerate. * varasm.c (TLS_SECTION_ASM_FLAG): Define default. (default_elf_asm_named_section): Use it. * config/i386/i386.c (output_pic_addr_const): Lowercase @DTPOFF. (i386_output_dwarf_dtprel): Likewise. (output_addr_const_extra): Likewise. (output_pic_addr_const): Lowercase @GOTTPOFF. (output_addr_const_extra): Likewise. (output_pic_addr_const): Lowercase @GOTNTPOFF. (output_addr_const_extra): Likewise. (output_pic_addr_const): Lowercase @INDNTPOFF. (output_addr_const_extra): Likewise. (output_pic_addr_const): Lowercase @NTPOFF. (output_addr_const_extra): Likewise. (output_pic_addr_const): Lowercase @TPOFF. (output_addr_const_extra): Likewise. * config/i386/i386.md (*tls_global_dynamic_32_gnu): Lowercase @TLSGD. (*tls_global_dynamic_64): Likewise. (*tls_local_dynamic_base_32_gnu): Lowercase @TLSLDM. (*tls_local_dynamic_base_64): Lowercase @TLSLD. * defaults.h (TLS_COMMON_ASM_OP): Provide default. (ASM_OUTPUT_TLS_COMMON): Use it. * config/i386/sol2-gas.h (TLS_COMMON_ASM_OP): Undef. PR target/38118 * config.gcc (sparc*-*-solaris2*) [$gas=yes]: Add usegas.h to tm_file. * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Move ... * config/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): ... here. * config/i386/sol2-10.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine. * config/i386/sol2.h (TARGET_SUN_TLS): Redefine. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157705 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 52f45afe6cb..63dd2b3f16f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,46 @@ 2010-03-24 Rainer Orth + * configure.ac (i[34567]86-*-*): Handle Solaris 2/x86 TLS support + and Sun as TLS syntax. + (TLS_SECTION_ASM_FLAG) [on_solaris && !gas_flag]: Define. + * configure: Regenerate. + * config.in: Regenerate. + * varasm.c (TLS_SECTION_ASM_FLAG): Define default. + (default_elf_asm_named_section): Use it. + * config/i386/i386.c (output_pic_addr_const): Lowercase @DTPOFF. + (i386_output_dwarf_dtprel): Likewise. + (output_addr_const_extra): Likewise. + (output_pic_addr_const): Lowercase @GOTTPOFF. + (output_addr_const_extra): Likewise. + (output_pic_addr_const): Lowercase @GOTNTPOFF. + (output_addr_const_extra): Likewise. + (output_pic_addr_const): Lowercase @INDNTPOFF. + (output_addr_const_extra): Likewise. + (output_pic_addr_const): Lowercase @NTPOFF. + (output_addr_const_extra): Likewise. + (output_pic_addr_const): Lowercase @TPOFF. + (output_addr_const_extra): Likewise. + * config/i386/i386.md (*tls_global_dynamic_32_gnu): Lowercase + @TLSGD. + (*tls_global_dynamic_64): Likewise. + (*tls_local_dynamic_base_32_gnu): Lowercase @TLSLDM. + (*tls_local_dynamic_base_64): Lowercase @TLSLD. + + * defaults.h (TLS_COMMON_ASM_OP): Provide default. + (ASM_OUTPUT_TLS_COMMON): Use it. + * config/i386/sol2-gas.h (TLS_COMMON_ASM_OP): Undef. + + PR target/38118 + * config.gcc (sparc*-*-solaris2*) [$gas=yes]: Add usegas.h to + tm_file. + * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Move ... + * config/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): ... here. + * config/i386/sol2-10.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine. + * config/i386/sol2.h (TARGET_SUN_TLS): Redefine. + (ASM_DECLARE_OBJECT_NAME) [!USE_GAS]: Redefine. + +2010-03-24 Rainer Orth + * config/i386/i386.c (override_options): Don't accept -mtls-dialect=sun any longer. * config/i386/i386.h (TARGET_SUN_TLS): Define as 0. diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index f63977051c0..777fc2cf129 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -96,6 +96,43 @@ along with GCC; see the file COPYING3. If not see #undef TARGET_SUN_TLS #define TARGET_SUN_TLS 1 +/* Follow Sun requirements for TLS code sequences and use Sun assembler TLS + syntax. */ +#undef TARGET_SUN_TLS +#define TARGET_SUN_TLS 1 + +/* The Sun assembler uses .tcomm for TLS common sections. */ +#define TLS_COMMON_ASM_OP ".tcomm" + +/* Similar to the Sun assembler on SPARC, the native assembler requires + TLS objects to be declared as @tls_obj (not @tls_object). Unlike SPARC, + gas doesn't understand this variant. */ +#ifndef USE_GAS +#undef ASM_DECLARE_OBJECT_NAME +#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \ + do \ + { \ + HOST_WIDE_INT size; \ + \ + if (targetm.have_tls && DECL_THREAD_LOCAL_P (DECL)) \ + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "tls_obj"); \ + else \ + ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ + \ + size_directive_output = 0; \ + if (!flag_inhibit_size_directive \ + && (DECL) && DECL_SIZE (DECL)) \ + { \ + size_directive_output = 1; \ + size = int_size_in_bytes (TREE_TYPE (DECL)); \ + ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \ + } \ + \ + ASM_OUTPUT_LABEL (FILE, NAME); \ + } \ + while (0) +#endif + /* The Solaris assembler cannot grok .stabd directives. */ #undef NO_DBX_BNSYM_ENSYM #define NO_DBX_BNSYM_ENSYM 1 diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h index 98e54e6a92c..e95686e7c03 100644 --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -292,11 +292,6 @@ __enable_execute_stack (void *addr) \ } \ while (0) -#ifndef USE_GAS -#undef TARGET_ASM_ASSEMBLE_VISIBILITY -#define TARGET_ASM_ASSEMBLE_VISIBILITY solaris_assemble_visibility -#endif - extern GTY(()) tree solaris_pending_aligns; extern GTY(()) tree solaris_pending_inits; extern GTY(()) tree solaris_pending_finis; diff --git a/gcc/configure b/gcc/configure index 2384f424917..f57917e6acb 100755 --- a/gcc/configure +++ b/gcc/configure @@ -22081,7 +22081,7 @@ foo: .long 25 ;; i[34567]86-*-*) case "$target" in - i[34567]86-*-solaris2.[89]*) + i[34567]86-*-solaris2.[56789]*) # 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 diff --git a/gcc/configure.ac b/gcc/configure.ac index 743798e23cb..74dd9a3f8ea 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2659,7 +2659,7 @@ foo: .long 25 ;; i[34567]86-*-*) case "$target" in - i[34567]86-*-solaris2.[89]*) + i[34567]86-*-solaris2.[56789]*) # 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