sysv4.h (ENDIAN_SELECT): Define, extracted from
authorAlan Modra <amodra@gmail.com>
Mon, 6 May 2013 00:20:29 +0000 (09:50 +0930)
committerAlan Modra <amodra@gcc.gnu.org>
Mon, 6 May 2013 00:20:29 +0000 (09:50 +0930)
* 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.

From-SVN: r198619

gcc/ChangeLog
gcc/config/rs6000/linux64.h
gcc/config/rs6000/sysv4.h

index e2cfb396000c6e9d5a06cdd79d9708883a85a33f..5c790a177a998ba9ab5e40a4e50013cbdad738e1 100644 (file)
@@ -1,3 +1,14 @@
+2013-05-06  Alan Modra  <amodra@gmail.com>
+
+       * 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.
+
 2013-05-06  Alan Modra  <amodra@gmail.com>
 
        * config/rs6000/rs6000.md (bswapdi 2nd splitter): Don't swap words
index 15336dd7d236f959a920d0826f74e9f2944f88c0..4129eb8228bbec91d4ff523dd8548be4dd149da1 100644 (file)
@@ -180,20 +180,14 @@ extern int dot_symbols;
 #endif
 
 #define ASM_SPEC32 "-a32 \
-%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \
-%{memb} %{!memb: %{msdata=eabi: -memb}} \
-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
-    %{mcall-freebsd: -mbig} \
-    %{mcall-i960-old: -mlittle} \
-    %{mcall-linux: -mbig} \
-    %{mcall-netbsd: -mbig} \
-}}}}"
+%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
+%{memb|msdata=eabi: -memb}"
 
 #define ASM_SPEC64 "-a64"
 
 #define ASM_SPEC_COMMON "%(asm_cpu) \
-%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
-%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"
+%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}}" \
+  ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
 
 #undef SUBSUBTARGET_EXTRA_SPECS
 #define SUBSUBTARGET_EXTRA_SPECS \
@@ -373,11 +367,19 @@ extern int dot_symbols;
   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
 
 #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-#define LINK_OS_LINUX_EMUL32 "%{!mbig: %{!mbig-endian: -m elf32lppclinux}}%{mbig|mbig-endian: -m elf32ppclinux}"
-#define LINK_OS_LINUX_EMUL64 "%{!mbig: %{!mbig-endian: -m elf64lppc}}%{mbig|mbig-endian: -m elf64ppc}"
+#define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",                \
+                                          " -m elf32lppclinux",        \
+                                          " -m elf32lppclinux")
+#define LINK_OS_LINUX_EMUL64 ENDIAN_SELECT(" -m elf64ppc",             \
+                                          " -m elf64lppc",             \
+                                          " -m elf64lppc")
 #else
-#define LINK_OS_LINUX_EMUL32 "%{!mlittle: %{!mlittle-endian: -m elf32ppclinux}}%{mlittle|mlittle-endian: -m elf32lppclinux}"
-#define LINK_OS_LINUX_EMUL64 "%{!mlittle: %{!mlittle-endian: -m elf64ppc}}%{mlittle|mlittle-endian: -m elf64lppc}"
+#define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",                \
+                                          " -m elf32lppclinux",        \
+                                          " -m elf32ppclinux")
+#define LINK_OS_LINUX_EMUL64 ENDIAN_SELECT(" -m elf64ppc",             \
+                                          " -m elf64lppc",             \
+                                          " -m elf64ppc")
 #endif
 
 #define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
index e54c253a4c7255b876c66299d4f2b57dd03268df..8676a12e5026a226ad1ec44b665ba72b5ccec57c 100644 (file)
@@ -517,19 +517,28 @@ extern int fixuplabelno;
   while (0)
 #endif
 
+/* Select one of BIG_OPT, LITTLE_OPT or DEFAULT_OPT depending
+   on various -mbig, -mlittle and -mcall- options.  */
+#define ENDIAN_SELECT(BIG_OPT, LITTLE_OPT, DEFAULT_OPT)        \
+"%{mlittle|mlittle-endian:"    LITTLE_OPT ";"  \
+  "mbig|mbig-endian:"          BIG_OPT    ";"  \
+  "mcall-aixdesc|mcall-freebsd|mcall-netbsd|"  \
+  "mcall-openbsd|mcall-linux:" BIG_OPT    ";"  \
+  "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) \
 %{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
 %{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
-%{memb|msdata=eabi: -memb} \
-%{mlittle|mlittle-endian:-mlittle; \
-  mbig|mbig-endian      :-mbig;    \
-  mcall-aixdesc |                 \
-  mcall-freebsd |                 \
-  mcall-netbsd  |                 \
-  mcall-openbsd |                 \
-  mcall-linux           :-mbig;    \
-  mcall-i960-old        :-mlittle}"
+%{memb|msdata=eabi: -memb}" \
+ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
 
 #define        CC1_ENDIAN_BIG_SPEC ""
 
@@ -547,17 +556,10 @@ extern int fixuplabelno;
 #endif
 
 /* Pass -G xxx to the compiler and set correct endian mode.  */
-#define        CC1_SPEC "%{G*} %(cc1_cpu) \
-%{mlittle|mlittle-endian: %(cc1_endian_little);           \
-  mbig   |mbig-endian   : %(cc1_endian_big);              \
-  mcall-aixdesc |                                        \
-  mcall-freebsd |                                        \
-  mcall-netbsd  |                                        \
-  mcall-openbsd |                                        \
-  mcall-linux           : -mbig %(cc1_endian_big);        \
-  mcall-i960-old        : -mlittle %(cc1_endian_little);  \
-                        : %(cc1_endian_default)}          \
-%{meabi: %{!mcall-*: -mcall-sysv }} \
+#define        CC1_SPEC "%{G*} %(cc1_cpu)" \
+  ENDIAN_SELECT(" %(cc1_endian_big)", " %(cc1_endian_little)", \
+               " %(cc1_endian_default)")                       \
+"%{meabi: %{!mcall-*: -mcall-sysv }} \
 %{!meabi: %{!mno-eabi: \
     %{mrelocatable: -meabi } \
     %{mcall-freebsd: -mno-eabi } \
@@ -601,11 +603,8 @@ extern int fixuplabelno;
 %{symbolic:-Bsymbolic -G -dy -z text }"
 
 /* Override the default target of the linker.  */
-#define        LINK_TARGET_SPEC "\
-%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \
-%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
-    %{mcall-i960-old: --oformat elf32-powerpcle} \
-  }}}}"
+#define        LINK_TARGET_SPEC \
+  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
 
 /* Any specific OS flags.  */
 #define LINK_OS_SPEC "\