Index: binutils/gas/config/te-solaris.h |
diff --git a/binutils/gas/config/te-solaris.h b/binutils/gas/config/te-solaris.h |
index a3c2ceaf9e864783e3376aaf7d026fb80737d02f..9c628c2f5777a02ba5cde50e9f0e9db1afdead09 100644 |
--- a/binutils/gas/config/te-solaris.h |
+++ b/binutils/gas/config/te-solaris.h |
@@ -1,4 +1,4 @@ |
-/* Copyright 2008 Free Software Foundation, Inc. |
+/* Copyright 2008, 2010 Free Software Foundation, Inc. |
This file is part of GAS, the GNU Assembler. |
@@ -22,9 +22,19 @@ |
#define LOCAL_LABELS_DOLLAR 1 |
#define LOCAL_LABELS_FB 1 |
-/* The Sun linker doesn't merge read-only and read-write sections into |
- a single read-write section so we must force all EH frame sections |
- to be read-write. */ |
-#define DWARF2_EH_FRAME_READ_ONLY 0 |
- |
#include "obj-format.h" |
+ |
+/* The Sun linker doesn't merge read-only and read-write sections into |
+ a single section so we must force all EH frame sections to use the |
+ same flags. For SPARC and 32-bit i386 this is read-write, whilst |
+ for x86_64 this is read-only, matching GCC behavior. |
+ |
+ See the definition of EH_TABLES_CAN_BE_READ_ONLY in |
+ gcc/config/i386/sol2.h in the GCC sources and the thread starting at |
+ http://sourceware.org/ml/binutils/2010-01/msg00401.html. */ |
+#ifdef TC_SPARC |
+#define DWARF2_EH_FRAME_READ_ONLY SEC_NO_FLAGS |
+#else |
+#define DWARF2_EH_FRAME_READ_ONLY \ |
+ (bfd_get_arch_size (stdoutput) == 64 ? SEC_READONLY : SEC_NO_FLAGS) |
+#endif |