On Sun, May 05, 2013 at 04:09:30PM +0930, Alan Modra wrote:
>       * config/rs6000/sysv4.h (ENDIAN_SELECT): Define, extracted from
>       (ASM_SPEC): ..here.  Emit DEFAULT_ASM_ENDIAN too.
>       (DEFAULT_ASM_ENDIAN): Define.
>       (CC1_SPEC, LINK_TARGET_SPEC): Use ENDIAN_SELECT.
>       * config/rs6000/linux64.h (ASM_SPEC32): Remove endian options.
>       Update -K PIC clause from sysv4.h.
>       (ASM_SPEC_COMMON): Use ENDIAN_SELECT.
>       (LINK_OS_LINUX_EMUL32, LINK_OS_LINUX_EMUL64): Likewise.

I managed to get the powerpc64le gas default endian select wrong, and
missed some places that ought to be using ENDIAN_SELECT.  Committing
as obvious.

        * config/rs6000/linux.h (DEFAULT_ASM_ENDIAN): Define.
        (LINK_OS_LINUX_EMUL): Use ENDIAN_SELECT.
        * config/rs6000/linux64.h (DEFAULT_ASM_ENDIAN): Define.
        * config/rs6000/sysv4le.h (DEFAULT_ASM_ENDIAN): Define.
        (LINK_TARGET_SPEC): Use ENDIAN_SELECT.
        * config/rs6000/sysv4.h (DEFAULT_ASM_ENDIAN): Define as -mbig.

Index: gcc/config/rs6000/linux.h
===================================================================
--- gcc/config/rs6000/linux.h   (revision 198619)
+++ gcc/config/rs6000/linux.h   (working copy)
@@ -79,10 +79,17 @@
 #undef LINK_OS_DEFAULT_SPEC
 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
 
+#undef  DEFAULT_ASM_ENDIAN
 #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-#define LINK_OS_LINUX_EMUL "%{!mbig: %{!mbig-endian: -m 
elf32lppclinux}}%{mbig|mbig-endian: -m elf32ppclinux}"
+#define DEFAULT_ASM_ENDIAN " -mlittle"
+#define LINK_OS_LINUX_EMUL ENDIAN_SELECT(" -m elf32ppclinux",  \
+                                        " -m elf32lppclinux",  \
+                                        " -m elf32lppclinux")
 #else
-#define LINK_OS_LINUX_EMUL "%{!mlittle: %{!mlittle-endian: -m 
elf32ppclinux}}%{mlittle|mlittle-endian: -m elf32lppclinux}"
+#define DEFAULT_ASM_ENDIAN " -mbig"
+#define LINK_OS_LINUX_EMUL ENDIAN_SELECT(" -m elf32ppclinux",  \
+                                        " -m elf32lppclinux",  \
+                                        " -m elf32ppclinux")
 #endif
 
 #undef LINK_OS_LINUX_SPEC
Index: gcc/config/rs6000/linux64.h
===================================================================
--- gcc/config/rs6000/linux64.h (revision 198619)
+++ gcc/config/rs6000/linux64.h (working copy)
@@ -366,7 +375,9 @@
 #define GNU_USER_DYNAMIC_LINKER64 \
   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
 
+#undef  DEFAULT_ASM_ENDIAN
 #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
+#define DEFAULT_ASM_ENDIAN " -mlittle"
 #define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",                
\
                                           " -m elf32lppclinux",        \
                                           " -m elf32lppclinux")
@@ -374,6 +385,7 @@
                                           " -m elf64lppc",             \
                                           " -m elf64lppc")
 #else
+#define DEFAULT_ASM_ENDIAN " -mbig"
 #define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",                
\
                                           " -m elf32lppclinux",        \
                                           " -m elf32ppclinux")
Index: gcc/config/rs6000/sysv4le.h
===================================================================
--- gcc/config/rs6000/sysv4le.h (revision 198619)
+++ gcc/config/rs6000/sysv4le.h (working copy)
@@ -25,12 +25,12 @@
 #undef CC1_ENDIAN_DEFAULT_SPEC
 #define        CC1_ENDIAN_DEFAULT_SPEC "%(cc1_endian_little)"
 
+#undef DEFAULT_ASM_ENDIAN
+#define        DEFAULT_ASM_ENDIAN " -mlittle"
+
 #undef LINK_TARGET_SPEC
-#define        LINK_TARGET_SPEC "\
-%{mbig: --oformat elf32-powerpc } %{mbig-endian: --oformat elf32-powerpc } \
-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
-    %{mcall-linux: --oformat elf32-powerpc} \
-  }}}}"
+#define        LINK_TARGET_SPEC \
+  ENDIAN_SELECT(" --oformat elf32-powerpc", "", "")
 
 #undef MULTILIB_DEFAULTS
 #define        MULTILIB_DEFAULTS { "mlittle", "mcall-sysv" }
Index: gcc/config/rs6000/sysv4.h
===================================================================
--- gcc/config/rs6000/sysv4.h   (revision 198619)
+++ gcc/config/rs6000/sysv4.h   (working copy)
@@ -527,11 +533,7 @@
   "mcall-i960-old:"            LITTLE_OPT ";"  \
   ":"                          DEFAULT_OPT "}"
 
-#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-#define DEFAULT_ASM_ENDIAN " -mlittle"
-#else
 #define DEFAULT_ASM_ENDIAN " -mbig"
-#endif
 
 #undef ASM_SPEC
 #define        ASM_SPEC "%(asm_cpu) \

-- 
Alan Modra
Australia Development Lab, IBM

Reply via email to