(LINKER_ENDIAN_SPEC): Define.
authorJim Wilson <wilson@gcc.gnu.org>
Thu, 16 Jan 1997 18:39:45 +0000 (10:39 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 16 Jan 1997 18:39:45 +0000 (10:39 -0800)
(LINK_SPEC): Add linker_endian_spec.
(EXTRA_SPECS): Add linker_endian_spec.

From-SVN: r13498

gcc/config/mips/mips.h

index b29bd5caa24981db79ad94e1374c0571ca7fdf84..7505a75482652a56bb59905a27165ff80c7583c4 100644 (file)
@@ -452,6 +452,19 @@ extern void                text_section ();
 #endif
 #endif
 
+/* We must pass -EL to the linker by default for little endian embedded
+   targets using linker scripts with a OUTPUT_FORMAT line.  Otherwise, the
+   linker will default to using big-endian output files.  The OUTPUT_FORMAT
+   line must be in the linker script, otherwise -EB/-EL will not work.  */
+
+#ifndef LINKER_ENDIAN_SPEC
+#if TARGET_ENDIAN_DEFAULT == 0
+#define LINKER_ENDIAN_SPEC "%{!EB:%{!meb:-EL}}"
+#else
+#define LINKER_ENDIAN_SPEC ""
+#endif
+#endif
+
 /* This macro is similar to `TARGET_SWITCHES' but defines names of
    command options that have values.  Its definition is an
    initializer with a subgrouping for each command option.
@@ -740,7 +753,8 @@ while (0)
 #ifndef LINK_SPEC
 #define LINK_SPEC "\
 %{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
-%{bestGnum} %{shared} %{non_shared}"
+%{bestGnum} %{shared} %{non_shared} \
+%(linker_endian_spec)"
 #endif /* LINK_SPEC defined */
 
 /* Specs for the compiler proper */
@@ -823,6 +837,7 @@ while (0)
   { "subtarget_asm_optimizing_spec", SUBTARGET_ASM_OPTIMIZING_SPEC },  \
   { "subtarget_asm_debugging_spec", SUBTARGET_ASM_DEBUGGING_SPEC },    \
   { "subtarget_asm_spec", SUBTARGET_ASM_SPEC },                                \
+  { "linker_endian_spec", LINKER_ENDIAN_SPEC },                                \
   SUBTARGET_EXTRA_SPECS
 
 #ifndef SUBTARGET_EXTRA_SPECS