X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fconfig%2Fi386%2Fsol2.h;h=70c8a8f6744300e953f86f30cafbee8d716f8e47;hp=addaf81df36a85bf124ac9983aa6d758168f8873;hb=eca87a93f3e4482e01ffcbce86525bbd87dc7993;hpb=07ee6621433e11187183df7129ccb88736af02e8 diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index addaf81df36..70c8a8f6744 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