aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-11-29 23:04:25 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2008-11-29 22:04:25 +0000
commit6ac1644232bc6787b5c2b27518ae489fb27ddfc7 (patch)
treed3c83453be74713802f84fa489aca55449cdf21e /gcc/config/sparc
parentf66f986566478b3efd0ad17cb0bc969709c8a54c (diff)
downloadgcc-6ac1644232bc6787b5c2b27518ae489fb27ddfc7.zip
gcc-6ac1644232bc6787b5c2b27518ae489fb27ddfc7.tar.gz
gcc-6ac1644232bc6787b5c2b27518ae489fb27ddfc7.tar.bz2
re PR target/29987 (libgomp.c++/ctor-9.C failure)
PR target/29987 * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine. From-SVN: r142286
Diffstat (limited to 'gcc/config/sparc')
-rw-r--r--gcc/config/sparc/sol2.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index a31a2e3..139f5b3 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -176,3 +176,21 @@ along with GCC; see the file COPYING3. If not see
fprintf (FILE, "\n\tnop\n"); \
} \
while (0)
+
+/* Solaris 'as' has a bug: a .common directive in .tbss section
+ behaves as .tls_common rather than normal non-TLS .common. */
+#undef ASM_OUTPUT_ALIGNED_COMMON
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
+ do \
+ { \
+ if (TARGET_SUN_TLS \
+ && in_section \
+ && ((in_section->common.flags & (SECTION_TLS | SECTION_BSS)) \
+ == (SECTION_TLS | SECTION_BSS))) \
+ switch_to_section (bss_section); \
+ fprintf ((FILE), "%s", COMMON_ASM_OP); \
+ assemble_name ((FILE), (NAME)); \
+ fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", \
+ (SIZE), (ALIGN) / BITS_PER_UNIT); \
+ } \
+ while (0)