summaryrefslogtreecommitdiff
path: root/gcc/config/i386/sol2.h
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-26 06:43:38 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-03-26 06:43:38 +0000
commit3a3a9294b46c9123a47aff180e23baaf3aff81d2 (patch)
tree2520ac26865bc1af84763e99c2d1e79b0100e56d /gcc/config/i386/sol2.h
parent358d075385f327d85935e798a91deff571091ab7 (diff)
downloadgcc-3a3a9294b46c9123a47aff180e23baaf3aff81d2.tar.gz
2010-03-26 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 157741 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@157742 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/sol2.h')
-rw-r--r--gcc/config/i386/sol2.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h
index 00f1870801d..70c8a8f6744 100644
--- a/gcc/config/i386/sol2.h
+++ b/gcc/config/i386/sol2.h
@@ -91,6 +91,48 @@ along with GCC; see the file COPYING3. If not see
} \
} while (0)
+/* Follow Sun requirements for TLS code sequences and use Sun assembler TLS
+ syntax. */
+#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