Commit 841faeed by Michael Meissner

EXTRA_SPECS addition

From-SVN: r11063
parent 4a5891af
...@@ -26,33 +26,10 @@ Boston, MA 02111-1307, USA. */ ...@@ -26,33 +26,10 @@ Boston, MA 02111-1307, USA. */
/* Tell the assembler to assume that all undefined names are external. */ /* Tell the assembler to assume that all undefined names are external. */
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "-u \ #define ASM_SPEC "-u %(asm_cpu)"
%{!mcpu*: \
%{mpower: %{!mpowerpc*: %{!mpower2: -mpwr}}} \ #undef ASM_DEFAULT_SPEC
%{mpower2: -mpwrx} \ #define ASM_DEFAULT_SPEC "-mpwr"
%{mno-power: %{mpowerpc*: -mppc}} \
%{mno-power: %{!mpowerpc*: -mcom}} \
%{!mno-power: %{mpowerpc*: -m601}} \
%{!mno-power: %{!mpowerpc*: %{!mpower2: -mpwr}}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
/* Define the options for the binder: Start text at 512, align all segments /* Define the options for the binder: Start text at 512, align all segments
to 512 bytes, and warn if there is text relocation. to 512 bytes, and warn if there is text relocation.
......
...@@ -24,64 +24,20 @@ Boston, MA 02111-1307, USA. */ ...@@ -24,64 +24,20 @@ Boston, MA 02111-1307, USA. */
#include "rs6000/rs6000.h" #include "rs6000/rs6000.h"
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "-u \ #define ASM_SPEC "-u %(asm_cpu)"
%{!mcpu*: \
%{mpower2: -mpwrx} \
%{mpowerpc*: %{!mpower: -mppc}} \
%{mpower: %{!mpower2: -mpwr}} \
%{mpowerpc*: %{mpower: -m601}} \
%{!mpowerpc*: %{!mpower*: -mcom}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
#undef CPP_PREDEFINES #undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 \ #define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 \
-Asystem(unix) -Asystem(aix)" -Asystem(unix) -Asystem(aix)"
#undef CPP_SPEC #undef CPP_SPEC
#define CPP_SPEC "\ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)"
%{posix: -D_POSIX_SOURCE} \
%{!mcpu*: \ #undef CPP_DEFAULT_SPEC
%{mpower: %{!mpower2: -D_ARCH_PWR}} \ #define CPP_DEFAULT_SPEC "-D_ARCH_COM"
%{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \ #undef ASM_DEFAULT_SPEC
%{!mpower*: -D_ARCH_COM}} \ #define ASM_DEFAULT_SPEC "-mcom"
%{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \
%{mcpu=powerpc: -D_ARCH_PPC} \
%{mcpu=rios: -D_ARCH_PWR} \
%{mcpu=rios1: -D_ARCH_PWR} \
%{mcpu=rios2: -D_ARCH_PWR2} \
%{mcpu=rsc: -D_ARCH_PWR} \
%{mcpu=rsc1: -D_ARCH_PWR} \
%{mcpu=403: -D_ARCH_PPC} \
%{mcpu=505: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \
%{mcpu=620: -D_ARCH_PPC} \
%{mcpu=821: -D_ARCH_PPC} \
%{mcpu=860: -D_ARCH_PPC}"
#undef TARGET_DEFAULT #undef TARGET_DEFAULT
#define TARGET_DEFAULT MASK_NEW_MNEMONICS #define TARGET_DEFAULT MASK_NEW_MNEMONICS
......
...@@ -24,42 +24,8 @@ Boston, MA 02111-1307, USA. */ ...@@ -24,42 +24,8 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_DEFAULT #undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_AIX_CALLS) #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_AIX_CALLS)
#undef CPP_SPEC #undef CPP_SYSV_DEFAULT_SPEC
#define CPP_SPEC "\ #define CPP_SYSV_DEFAULT_SPEC "-D_CALL_AIX"
%{posix: -D_POSIX_SOURCE} \
%{mrelocatable: -D_RELOCATABLE} \
%{mcall-sysv: -D_CALL_SYSV} %{mcall-nt: -D_CALL_NT} \
%{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \
%{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %{!mcall-nt: -D_CALL_AIX}}}} \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT} \
%{mlittle: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
%{mlittle-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
%{!mlittle: %{!mlittle-endian: -D_BIG_ENDIAN -Amachine(bigendian)}} \
%{!mcpu*: \
%{mpower: %{!mpower2: -D_ARCH_PWR}} \
%{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \
%{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \
%{!mno-powerpc: -D_ARCH_PPC}} \
%{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \
%{mcpu=powerpc: -D_ARCH_PPC} \
%{mcpu=rios: -D_ARCH_PWR} \
%{mcpu=rios1: -D_ARCH_PWR} \
%{mcpu=rios2: -D_ARCH_PWR2} \
%{mcpu=rsc: -D_ARCH_PWR} \
%{mcpu=rsc1: -D_ARCH_PWR} \
%{mcpu=403: -D_ARCH_PPC} \
%{mcpu=505: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \
%{mcpu=620: -D_ARCH_PPC} \
%{mcpu=821: -D_ARCH_PPC} \
%{mcpu=860: -D_ARCH_PPC}"
/* Define this macro as a C expression for the initializer of an /* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are array of string to tell the driver program which options are
......
...@@ -25,42 +25,11 @@ Boston, MA 02111-1307, USA. */ ...@@ -25,42 +25,11 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_DEFAULT #undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_LITTLE_ENDIAN) #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_LITTLE_ENDIAN)
#undef CPP_SPEC #undef CPP_ENDIAN_SPEC
#define CPP_SPEC "\ #define CPP_ENDIAN_SPEC \
%{posix: -D_POSIX_SOURCE} \ "%{mbig: -D_BIG_ENDIAN -Amachine(bigendian)} \
%{mrelocatable: -D_RELOCATABLE} \
%{mcall-sysv: -D_CALL_SYSV} %{mcall-nt: -D_CALL_NT} \
%{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \
%{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %{!mcall-nt: -D_CALL_SYSV}}}} \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT} \
%{mbig: -D_BIG_ENDIAN -Amachine(bigendian)} \
%{mbig-endian: -D_BIG_ENDIAN -Amachine(bigendian)} \ %{mbig-endian: -D_BIG_ENDIAN -Amachine(bigendian)} \
%{!mbig: %{!mbig-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)}} \ %{!mbig: %{!mbig-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)}}"
%{!mcpu*: \
%{mpower: %{!mpower2: -D_ARCH_PWR}} \
%{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \
%{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \
%{!mno-powerpc: -D_ARCH_PPC}} \
%{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \
%{mcpu=powerpc: -D_ARCH_PPC} \
%{mcpu=rios: -D_ARCH_PWR} \
%{mcpu=rios1: -D_ARCH_PWR} \
%{mcpu=rios2: -D_ARCH_PWR2} \
%{mcpu=rsc: -D_ARCH_PWR} \
%{mcpu=rsc1: -D_ARCH_PWR} \
%{mcpu=403: -D_ARCH_PPC} \
%{mcpu=505: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \
%{mcpu=620: -D_ARCH_PPC} \
%{mcpu=821: -D_ARCH_PPC} \
%{mcpu=860: -D_ARCH_PPC}"
/* Define this macro as a C expression for the initializer of an /* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are array of string to tell the driver program which options are
......
...@@ -72,34 +72,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -72,34 +72,7 @@ Boston, MA 02111-1307, USA. */
/* This can become more refined as we have more powerpc options. */ /* This can become more refined as we have more powerpc options. */
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "\ #define ASM_SPEC "-u %(asm_cpu)"
-u \
%{!mcpu*: \
%{mpower2: -mpwrx} \
%{mpowerpc*: %{!mpower: -mppc}} \
%{mno-powerpc: %{!mpower: %{!mpower2: -mcom}}} \
%{mno-powerpc: %{mpower: %{!mpower2: -mpwr}}} \
%{!mno-powerpc: %{mpower: -m601}} \
%{!mno-powerpc: %{!mpower: -mppc}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
#undef SUBTARGET_SWITCHES #undef SUBTARGET_SWITCHES
#define SUBTARGET_SWITCHES \ #define SUBTARGET_SWITCHES \
......
...@@ -182,34 +182,7 @@ toc_section () \ ...@@ -182,34 +182,7 @@ toc_section () \
fprintf (FILE, ".%s", PREFIX) fprintf (FILE, ".%s", PREFIX)
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "\ #define ASM_SPEC "-u %(asm_cpu) \
-u \
%{!mcpu*: \
%{mpower2: -mpwrx} \
%{mpowerpc*: %{!mpower: -mppc}} \
%{mno-powerpc: %{!mpower: %{!mpower2: -mcom}}} \
%{mno-powerpc: %{mpower: %{!mpower2: -mpwr}}} \
%{!mno-powerpc: %{mpower: -m601}} \
%{!mno-powerpc: %{!mpower: -mppc}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc} \
%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}"
/* This is the end of what might become sysv4.h. */ /* This is the end of what might become sysv4.h. */
......
...@@ -24,66 +24,17 @@ Boston, MA 02111-1307, USA. */ ...@@ -24,66 +24,17 @@ Boston, MA 02111-1307, USA. */
#include "rs6000/rs6000.h" #include "rs6000/rs6000.h"
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "-u \ #define ASM_SPEC "-u %(asm_cpu)"
%{!mcpu*: \
%{mpower2: -mpwrx} \
%{mpowerpc*: %{!mpower: -mppc}} \
%{mno-powerpc: %{!mpower: %{!mpower2: -mcom}}} \
%{mno-powerpc: %{mpower: %{!mpower2: -mpwr}}} \
%{!mno-powerpc: %{mpower: -m601}} \
%{!mno-powerpc: %{!mpower: -mppc}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
#undef CPP_PREDEFINES #undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 \ #define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 \
-Asystem(unix) -Asystem(aix) -Acpu(powerpc) -Amachine(powerpc)" -Asystem(unix) -Asystem(aix) -Acpu(powerpc) -Amachine(powerpc)"
#undef CPP_SPEC #undef CPP_DEFAULT_SPEC
#define CPP_SPEC "\ #define CPP_DEFAULT_SPEC "-D_ARCH_PPC"
%{posix: -D_POSIX_SOURCE} \
%{!mcpu*: \ #undef ASM_DEFAULT_SPEC
%{mpower: %{!mpower2: -D_ARCH_PWR}} \ #define ASM_DEFAULT_SPEC "-mppc"
%{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \
%{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \
%{!mno-powerpc: -D_ARCH_PPC}} \
%{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \
%{mcpu=powerpc: -D_ARCH_PPC} \
%{mcpu=rios: -D_ARCH_PWR} \
%{mcpu=rios1: -D_ARCH_PWR} \
%{mcpu=rios2: -D_ARCH_PWR2} \
%{mcpu=rsc: -D_ARCH_PWR} \
%{mcpu=rsc1: -D_ARCH_PWR} \
%{mcpu=403: -D_ARCH_PPC} \
%{mcpu=505: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \
%{mcpu=620: -D_ARCH_PPC} \
%{mcpu=821: -D_ARCH_PPC} \
%{mcpu=860: -D_ARCH_PPC}"
#undef TARGET_DEFAULT #undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
......
...@@ -45,19 +45,22 @@ Boston, MA 02111-1307, USA. */ ...@@ -45,19 +45,22 @@ Boston, MA 02111-1307, USA. */
longer be needed. Also, the extern declaration of mcount in ASM_FILE_START longer be needed. Also, the extern declaration of mcount in ASM_FILE_START
will no longer be needed. */ will no longer be needed. */
/* #define ASM_SPEC "-u" */ /* #define ASM_SPEC "-u %(asm_cpu)" */
/* Define appropriate architecture macros for preprocessor depending on /* Define appropriate architecture macros for preprocessor depending on
target switches. */ target switches. */
#define CPP_SPEC "\ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)"
%{posix: -D_POSIX_SOURCE} \
%{!mcpu*: \ /* Common CPP definitions used by CPP_SPEC amonst the various targets
for handling -mcpu=xxx switches. */
#define CPP_CPU_SPEC \
"%{!mcpu*: \
%{mpower: %{!mpower2: -D_ARCH_PWR}} \ %{mpower: %{!mpower2: -D_ARCH_PWR}} \
%{mpower2: -D_ARCH_PWR2} \ %{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \ %{mpowerpc*: -D_ARCH_PPC} \
%{mno-power: %{!mpowerpc*: -D_ARCH_COM}} \ %{mno-power: %{!mpowerpc*: -D_ARCH_COM}} \
%{!mno-power: %{!mpower2: -D_ARCH_PWR}}} \ %{!mno-power: %{!mpower2: %(cpp_default)}}} \
%{mcpu=common: -D_ARCH_COM} \ %{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=power2: -D_ARCH_PWR2} \
...@@ -70,7 +73,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -70,7 +73,7 @@ Boston, MA 02111-1307, USA. */
%{mcpu=403: -D_ARCH_PPC} \ %{mcpu=403: -D_ARCH_PPC} \
%{mcpu=505: -D_ARCH_PPC} \ %{mcpu=505: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -d_ARCH_PPC} \ %{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \ %{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \ %{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \ %{mcpu=604: -D_ARCH_PPC} \
...@@ -78,6 +81,74 @@ Boston, MA 02111-1307, USA. */ ...@@ -78,6 +81,74 @@ Boston, MA 02111-1307, USA. */
%{mcpu=821: -D_ARCH_PPC} \ %{mcpu=821: -D_ARCH_PPC} \
%{mcpu=860: -D_ARCH_PPC}" %{mcpu=860: -D_ARCH_PPC}"
#ifndef CPP_DEFAULT_SPEC
#define CPP_DEFAULT_SPEC "-D_ARCH_PWR"
#endif
#ifndef CPP_SYSV_SPEC
#define CPP_SYSV_SPEC ""
#endif
#ifndef CPP_ENDIAN_SPEC
#define CPP_ENDIAN_SPEC ""
#endif
#ifndef CPP_SYSV_DEFAULT_SPEC
#define CPP_SYSV_DEFAULT_SPEC ""
#endif
/* Common ASM definitions used by ASM_SPEC amonst the various targets
for handling -mcpu=xxx switches. */
#define ASM_CPU_SPEC \
"%{!mcpu*: \
%{mpower: %{!mpower2: -mpwr}} \
%{mpower2: -mpwrx} \
%{mpowerpc*: -mppc} \
%{mno-power: %{!mpowerpc*: -mcom}} \
%{!mno-power: %{!mpower2: %(asm_default)}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
#ifndef ASM_DEFAULT_SPEC
#define ASM_DEFAULT_SPEC "-mpwr"
#endif
/* This macro defines names of additional specifications to put in the specs
that can be used in various specifications like CC1_SPEC. Its definition
is an initializer with a subgrouping for each command option.
Each subgrouping contains a string constant, that defines the
specification name, and a string constant that used by the GNU CC driver
program.
Do not define this macro if it does not need to do anything. */
#define EXTRA_SPECS \
{ "cpp_cpu", CPP_CPU_SPEC }, \
{ "cpp_default", CPP_DEFAULT_SPEC }, \
{ "cpp_sysv", CPP_SYSV_SPEC }, \
{ "cpp_sysv_default", CPP_SYSV_DEFAULT_SPEC }, \
{ "cpp_endian", CPP_ENDIAN_SPEC }, \
{ "asm_cpu", ASM_CPU_SPEC }, \
{ "asm_default", ASM_DEFAULT_SPEC }
/* Define the options for the binder: Start text at 512, align all segments /* Define the options for the binder: Start text at 512, align all segments
to 512 bytes, and warn if there is text relocation. to 512 bytes, and warn if there is text relocation.
......
...@@ -425,34 +425,7 @@ extern int rs6000_pic_labelno; ...@@ -425,34 +425,7 @@ extern int rs6000_pic_labelno;
/* Pass -mppc to the assembler, since that is what powerpc.h currently /* Pass -mppc to the assembler, since that is what powerpc.h currently
implies. */ implies. */
#undef ASM_SPEC #undef ASM_SPEC
#define ASM_SPEC "\ #define ASM_SPEC "-u %(asm_cpu) \
-u \
%{!mcpu*: \
%{mpower2: -mpwrx} \
%{mpowerpc*: %{!mpower: -mppc}} \
%{mno-powerpc: %{!mpower: %{!mpower2: -mcom}}} \
%{mno-powerpc: %{mpower: %{!mpower2: -mpwr}}} \
%{!mno-powerpc: %{mpower: -m601}} \
%{!mno-powerpc: %{!mpower: -mppc}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwrx} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwrx} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -mppc} \
%{mcpu=603e: -mppc} \
%{mcpu=604: -mppc} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc} \
%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \
%{mrelocatable} %{mrelocatable-lib} %{memb} \ %{mrelocatable} %{mrelocatable-lib} %{memb} \
%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}" %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"
...@@ -608,42 +581,25 @@ do { \ ...@@ -608,42 +581,25 @@ do { \
%{mbig: -oformat elf32-powerpc } %{mbig-endian: -oformat elf32-powerpc }" %{mbig: -oformat elf32-powerpc } %{mbig-endian: -oformat elf32-powerpc }"
#endif /* CROSS_COMPILE */ #endif /* CROSS_COMPILE */
#undef CPP_SPEC #undef CPP_SYSV_SPEC
#define CPP_SPEC "\ #define CPP_SYSV_SPEC \
%{posix: -D_POSIX_SOURCE} \ "%{mrelocatable: -D_RELOCATABLE} \
%{mrelocatable: -D_RELOCATABLE} \
%{mcall-sysv: -D_CALL_SYSV} %{mcall-nt: -D_CALL_NT} \ %{mcall-sysv: -D_CALL_SYSV} %{mcall-nt: -D_CALL_NT} \
%{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \ %{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \
%{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %{!mcall-nt: -D_CALL_SYSV}}}} \ %{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %{!mcall-nt: %(cpp_sysv_default) }}}} \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT} \ %{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}"
%{mlittle: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
#undef CPP_SYSV_DEFAULT_SPEC
#define CPP_SYSV_DEFAULT_SPEC "-D_CALL_SYSV"
#undef CPP_ENDIAN_SPEC
#define CPP_ENDIAN_SPEC \
"%{mlittle: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
%{mlittle-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)} \ %{mlittle-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)} \
%{!mlittle: %{!mlittle-endian: -D_BIG_ENDIAN -Amachine(bigendian)}} \ %{!mlittle: %{!mlittle-endian: -D_BIG_ENDIAN -Amachine(bigendian)}}"
%{!mcpu*: \
%{mpower: %{!mpower2: -D_ARCH_PWR}} \ #undef CPP_SPEC
%{mpower2: -D_ARCH_PWR2} \ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_sysv) %(cpp_endian) %(cpp_cpu)"
%{mpowerpc*: -D_ARCH_PPC} \
%{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \
%{!mno-powerpc: -D_ARCH_PPC}} \
%{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \
%{mcpu=powerpc: -D_ARCH_PPC} \
%{mcpu=rios: -D_ARCH_PWR} \
%{mcpu=rios1: -D_ARCH_PWR} \
%{mcpu=rios2: -D_ARCH_PWR2} \
%{mcpu=rsc: -D_ARCH_PWR} \
%{mcpu=rsc1: -D_ARCH_PWR} \
%{mcpu=403: -D_ARCH_PPC} \
%{mcpu=505: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \
%{mcpu=620: -D_ARCH_PPC} \
%{mcpu=821: -D_ARCH_PPC} \
%{mcpu=860: -D_ARCH_PPC}"
/* Define this macro as a C expression for the initializer of an /* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are array of string to tell the driver program which options are
......
...@@ -25,39 +25,12 @@ Boston, MA 02111-1307, USA. */ ...@@ -25,39 +25,12 @@ Boston, MA 02111-1307, USA. */
#undef TARGET_DEFAULT #undef TARGET_DEFAULT
#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_LITTLE_ENDIAN) #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_LITTLE_ENDIAN)
#undef CPP_SPEC #undef CPP_ENDIAN_SPEC
#define CPP_SPEC "\ #define CPP_ENDIAN_SPEC \
%{posix: -D_POSIX_SOURCE} \ "%{mbig: -D_BIG_ENDIAN -Amachine(bigendian)} \
%{mrelocatable: -D_RELOCATABLE} \
%{mcall-sysv: -D_CALL_SYSV} %{mcall-nt: -D_CALL_NT} \
%{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \
%{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %{!mcall-nt: -D_CALL_SYSV}}}} \
%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT} \
%{mbig: -D_BIG_ENDIAN -Amachine(bigendian)} \
%{mbig-endian: -D_BIG_ENDIAN -Amachine(bigendian)} \ %{mbig-endian: -D_BIG_ENDIAN -Amachine(bigendian)} \
%{!mbig: %{!mbig-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)}} \ %{!mbig: %{!mbig-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)}}"
%{!mcpu*: \
%{mpower: %{!mpower2: -D_ARCH_PWR}} \
%{mpower2: -D_ARCH_PWR2} \
%{mpowerpc*: -D_ARCH_PPC} \
%{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \
%{!mno-powerpc: -D_ARCH_PPC}} \
%{mcpu=common: -D_ARCH_COM} \
%{mcpu=power: -D_ARCH_PWR} \
%{mcpu=power2: -D_ARCH_PWR2} \
%{mcpu=powerpc: -D_ARCH_PPC} \
%{mcpu=rios: -D_ARCH_PWR} \
%{mcpu=rios1: -D_ARCH_PWR} \
%{mcpu=rios2: -D_ARCH_PWR2} \
%{mcpu=rsc: -D_ARCH_PWR} \
%{mcpu=rsc1: -D_ARCH_PWR} \
%{mcpu=403: -D_ARCH_PPC} \
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
%{mcpu=602: -D_ARCH_PPC} \
%{mcpu=603: -D_ARCH_PPC} \
%{mcpu=603e: -D_ARCH_PPC} \
%{mcpu=604: -D_ARCH_PPC} \
%{mcpu=620: -D_ARCH_PPC}"
/* Define this macro as a C expression for the initializer of an /* Define this macro as a C expression for the initializer of an
array of string to tell the driver program which options are array of string to tell the driver program which options are
......
...@@ -546,6 +546,10 @@ static char *startfile_spec = STARTFILE_SPEC; ...@@ -546,6 +546,10 @@ static char *startfile_spec = STARTFILE_SPEC;
static char *switches_need_spaces = SWITCHES_NEED_SPACES; static char *switches_need_spaces = SWITCHES_NEED_SPACES;
static char *multilib_select = MULTILIB_SELECT; static char *multilib_select = MULTILIB_SELECT;
#ifdef EXTRA_SPECS
static struct { char *name, *spec; } extra_specs[] = { EXTRA_SPECS };
#endif
/* This defines which switch letters take arguments. */ /* This defines which switch letters take arguments. */
#ifndef SWITCH_TAKES_ARG #ifndef SWITCH_TAKES_ARG
...@@ -1254,6 +1258,21 @@ set_spec (name, spec) ...@@ -1254,6 +1258,21 @@ set_spec (name, spec)
cross_compile = atoi (sl->spec); cross_compile = atoi (sl->spec);
else if (! strcmp (name, "multilib")) else if (! strcmp (name, "multilib"))
multilib_select = sl->spec; multilib_select = sl->spec;
#ifdef EXTRA_SPECS
else
{
int i;
for (i = 0; i < sizeof (extra_specs) / sizeof (extra_specs[0]); i++)
{
if (! strcmp (name, extra_specs[i].name))
{
extra_specs[i].spec = sl->spec;
break;
}
}
}
#endif
/* Free the old spec */ /* Free the old spec */
if (old_spec) if (old_spec)
free (old_spec); free (old_spec);
...@@ -2512,6 +2531,14 @@ process_command (argc, argv) ...@@ -2512,6 +2531,14 @@ process_command (argc, argv)
printf ("*cross_compile:\n%d\n\n", cross_compile); printf ("*cross_compile:\n%d\n\n", cross_compile);
printf ("*multilib:\n%s\n\n", multilib_select); printf ("*multilib:\n%s\n\n", multilib_select);
#ifdef EXTRA_SPECS
{
int j;
for (j = 0; j < sizeof (extra_specs) / sizeof (extra_specs[0]); j++)
printf ("*%s:\n%s\n\n", extra_specs[j].name,
(extra_specs[j].spec) ? extra_specs[j].spec : "");
}
#endif
exit (0); exit (0);
} }
else if (! strcmp (argv[i], "-dumpversion")) else if (! strcmp (argv[i], "-dumpversion"))
...@@ -4314,6 +4341,15 @@ main (argc, argv) ...@@ -4314,6 +4341,15 @@ main (argc, argv)
if (specs_file != 0 && strcmp (specs_file, "specs")) if (specs_file != 0 && strcmp (specs_file, "specs"))
read_specs (specs_file); read_specs (specs_file);
#ifdef EXTRA_SPECS
else
{
int k;
for (k = 0; k < sizeof (extra_specs) / sizeof (extra_specs[0]); k++)
set_spec (extra_specs[k].name, extra_specs[k].spec);
}
#endif
/* If not cross-compiling, look for startfiles in the standard places. */ /* If not cross-compiling, look for startfiles in the standard places. */
/* The fact that these are done here, after reading the specs file, /* The fact that these are done here, after reading the specs file,
means that it cannot be found in these directories. means that it cannot be found in these directories.
...@@ -4956,6 +4992,21 @@ validate_all_switches () ...@@ -4956,6 +4992,21 @@ validate_all_switches ()
if (c == '%' && *p == '{') if (c == '%' && *p == '{')
/* We have a switch spec. */ /* We have a switch spec. */
validate_switches (p + 1); validate_switches (p + 1);
#ifdef EXTRA_SPECS
{
int i;
for (i = 0; i < sizeof (extra_specs) / sizeof (extra_specs[0]); i++)
{
p = extra_specs[i].spec;
while (c = *p++)
if (c == '%' && *p == '{')
/* We have a switch spec. */
validate_switches (p + 1);
}
}
#endif
} }
/* Look at the switch-name that comes after START /* Look at the switch-name that comes after START
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment