aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/i386/sol2-bi.h14
-rw-r--r--gcc/config/i386/sol2.h8
-rw-r--r--gcc/config/sol2.h13
-rw-r--r--gcc/config/sparc/sol2.h4
5 files changed, 32 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8429d5c6064..ad790d3844d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/sol2.h (ASM_SPEC): Split into ...
+ (ASM_SPEC_BASE, ASM_PIC_SPEC): ... this.
+ * config/i386/sol2.h (ASM_SPEC): Define using ASM_SPEC_BASE.
+ * config/i386/sol2-bi.h (ASM_CPU_SPEC): Redefine.
+ (ASM_SPEC): Use ASM_SPEC_BASE.
+ * config/sparc/sol2.h (ASM_SPEC): Redefine.
+
2011-07-07 Georg-Johann Lay <avr@gjlay.de>
* config/avr/avr.md (*reload_insi): Change predicate #1 to
diff --git a/gcc/config/i386/sol2-bi.h b/gcc/config/i386/sol2-bi.h
index 394ca580884..a988fa00b93 100644
--- a/gcc/config/i386/sol2-bi.h
+++ b/gcc/config/i386/sol2-bi.h
@@ -31,15 +31,19 @@ along with GCC; see the file COPYING3. If not see
/* GNU as understands --32 and --64, but the native Solaris
assembler requires -xarch=generic or -xarch=generic64 instead. */
-#undef ASM_SPEC
+#undef ASM_CPU_SPEC
#ifdef USE_GAS
-#define ASM_SPEC "%{m32:--32} %{m64:--64} -s %(asm_cpu)"
+#define ASM_CPU_SPEC "%{m32:--32} %{m64:--64}"
#else
-#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{Ym,*} " \
- "%{m32:-xarch=generic} %{m64:-xarch=generic64} " \
- "-s %(asm_cpu)"
+#define ASM_CPU_SPEC "%{m32:-xarch=generic} %{m64:-xarch=generic64}"
#endif
+/* Don't let i386/x86-64.h override i386/sol2.h version. Still cannot use
+ -K PIC with the Solaris 10+ assembler, it gives many warnings:
+ Absolute relocation is used for symbol "<symbol>" */
+#undef ASM_SPEC
+#define ASM_SPEC ASM_SPEC_BASE
+
/* We do not need to search a special directory for startup files. */
#undef MD_STARTFILE_PREFIX
diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h
index f5e5c762612..593e256c164 100644
--- a/gcc/config/i386/sol2.h
+++ b/gcc/config/i386/sol2.h
@@ -61,12 +61,12 @@ along with GCC; see the file COPYING3. If not see
#define ASM_CPU_SPEC ""
-/* Removed -K PIC from generic sol2.h ASM_SPEC: the Solaris 8 and 9 assembler
- gives many warnings: R_386_32 relocation is used for symbol ".text", and
+/* Don't include ASM_PIC_SPEC. While the Solaris 8 and 9 assembler accepts
+ -K PIC, it gives many warnings:
+ R_386_32 relocation is used for symbol "<symbol>"
GNU as doesn't recognize -K at all. */
-/* FIXME: Perhaps split between common and CPU-specific parts? */
#undef ASM_SPEC
-#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{Ym,*} -s %(asm_cpu)"
+#define ASM_SPEC ASM_SPEC_BASE
#define SUBTARGET_CPU_EXTRA_SPECS \
{ "cpp_subtarget", CPP_SUBTARGET_SPEC }, \
diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h
index d9c1fc99a40..3867c7dd245 100644
--- a/gcc/config/sol2.h
+++ b/gcc/config/sol2.h
@@ -99,13 +99,12 @@ along with GCC; see the file COPYING3. If not see
TARGET_SUB_OS_CPP_BUILTINS(); \
} while (0)
-/* It's safe to pass -s always, even if -g is not used. */
-#undef ASM_SPEC
-#define ASM_SPEC "\
-%{v:-V} %{Qy:} %{!Qn:-Qy} %{Ym,*} -s \
-%{fpic|fpie|fPIC|fPIE:-K PIC} \
-%(asm_cpu) \
-"
+/* It's safe to pass -s always, even if -g is not used. Those options are
+ handled by both Sun as and GNU as. */
+#define ASM_SPEC_BASE \
+"%{v:-V} %{Qy:} %{!Qn:-Qy} %{Ym,*} -s %(asm_cpu)"
+
+#define ASM_PIC_SPEC " %{fpic|fpie|fPIC|fPIE:-K PIC}"
#undef LIB_SPEC
#define LIB_SPEC \
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index 24c7ade0177..392b171be8d 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -120,6 +120,10 @@ along with GCC; see the file COPYING3. If not see
#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
#endif
+/* Both Sun as and GNU as understand -K PIC. */
+#undef ASM_SPEC
+#define ASM_SPEC ASM_SPEC_BASE ASM_PIC_SPEC
+
#undef CPP_CPU_SPEC
#define CPP_CPU_SPEC "\
%{mcpu=sparclet|mcpu=tsc701:-D__sparclet__} \