Index: gcc/gcc/config/i386/sol2-10.h |
diff --git a/gcc/gcc/config/i386/sol2-10.h b/gcc/gcc/config/i386/sol2-10.h |
index 6e7f13d8f2681ec7d0a5583d7f71ed4eb5f89f12..c7fdec9a1a31bce6492819eb56e947fc4fd8e171 100644 |
--- a/gcc/gcc/config/i386/sol2-10.h |
+++ b/gcc/gcc/config/i386/sol2-10.h |
@@ -1,5 +1,6 @@ |
/* Solaris 10 configuration. |
- Copyright (C) 2004, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. |
+ Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 |
+ Free Software Foundation, Inc. |
Contributed by CodeSourcery, LLC. |
This file is part of GCC. |
@@ -50,6 +51,21 @@ along with GCC; see the file COPYING3. If not see |
} while (0) |
#endif |
+/* As in sol2.h, override the default from i386/x86-64.h to work around |
+ Sun as TLS bug. */ |
+#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); \ |
+ x86_elf_aligned_common (FILE, NAME, SIZE, ALIGN); \ |
+ } \ |
+ while (0) |
+ |
#undef NO_PROFILE_COUNTERS |
#undef MCOUNT_NAME |
@@ -104,7 +120,18 @@ along with GCC; see the file COPYING3. If not see |
#define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE |
#ifdef TARGET_GNU_LD |
-#define TARGET_LD_EMULATION "%{m64:-m elf_x86_64}%{!m64:-m elf_i386} " |
+/* Since binutils 2.21, GNU ld supports new *_sol2 emulations to strictly |
+ follow the Solaris 2 ABI. Prefer them if present. */ |
+#ifdef HAVE_LD_SOL2_EMULATION |
+#define I386_EMULATION "elf_i386_sol2" |
+#define X86_64_EMULATION "elf_x86_64_sol2" |
+#else |
+#define I386_EMULATION "elf_i386" |
+#define X86_64_EMULATION "elf_x86_64" |
+#endif |
+ |
+#define TARGET_LD_EMULATION "%{m64:-m " X86_64_EMULATION "}" \ |
+ "%{!m64:-m " I386_EMULATION "} " |
#else |
#define TARGET_LD_EMULATION "" |
#endif |
@@ -118,7 +145,3 @@ along with GCC; see the file COPYING3. If not see |
#undef TARGET_ASM_NAMED_SECTION |
#define TARGET_ASM_NAMED_SECTION i386_solaris_elf_named_section |
- |
-#undef SUBTARGET_RETURN_IN_MEMORY |
-#define SUBTARGET_RETURN_IN_MEMORY(TYPE, FNTYPE) \ |
- ix86_sol10_return_in_memory (TYPE, FNTYPE) |