From 6ac1644232bc6787b5c2b27518ae489fb27ddfc7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 29 Nov 2008 23:04:25 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/sparc/sol2.h | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 392b024..3af6259 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-11-29 Jakub Jelinek + + PR target/29987 + * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Redefine. + 2008-11-29 David Edelsohn * config/rs6000/rs6000.c (rs6000_emit_sync): Remove support for 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) -- 2.7.4