diff --git a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h index 926e314ca76..1c225ea35dc 100644 --- a/gcc/config/rs6000/eabi.h +++ b/gcc/config/rs6000/eabi.h @@ -37,4 +37,4 @@ Boston, MA 02111-1307, USA. */ "-DPPC -D__embedded__ -Asystem(embedded) -Acpu(powerpc) -Amachine(powerpc)" #undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mbig", "mbig-endian", "mcall-sysv-eabi", "mno-sdata" } +#define MULTILIB_DEFAULTS { "mbig", "mcall-sysv" } diff --git a/gcc/config/rs6000/eabiaix.h b/gcc/config/rs6000/eabiaix.h index c38ddb354b4..5cfd890a03e 100644 --- a/gcc/config/rs6000/eabiaix.h +++ b/gcc/config/rs6000/eabiaix.h @@ -38,4 +38,4 @@ Boston, MA 02111-1307, USA. */ `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ #undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mbig", "mbig-endian", "mcall-aix", "mno-sdata" } +#define MULTILIB_DEFAULTS { "mbig", "mcall-aix" } diff --git a/gcc/config/rs6000/eabile.h b/gcc/config/rs6000/eabile.h index ef139d86414..78dc7bc89c4 100644 --- a/gcc/config/rs6000/eabile.h +++ b/gcc/config/rs6000/eabile.h @@ -43,4 +43,4 @@ Boston, MA 02111-1307, USA. */ `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ #undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mlittle", "mlittle-endian", "mcall-sysv-eabi", "mno-sdata" } +#define MULTILIB_DEFAULTS { "mlittle", "mcall-sysv" } diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h index 95388004802..7540f62dd6b 100644 --- a/gcc/config/rs6000/linux.h +++ b/gcc/config/rs6000/linux.h @@ -46,3 +46,15 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #undef TARGET_VERSION #define TARGET_VERSION fprintf (stderr, " (PowerPC Linux)"); + +/* Define this macro as a C expression for the initializer of an + array of string to tell the driver program which options are + defaults for this target and thus do not need to be handled + specially when using `MULTILIB_OPTIONS'. + + Do not define this macro if `MULTILIB_OPTIONS' is not defined in + the target makefile fragment or if none of the options listed in + `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ + +#undef MULTILIB_DEFAULTS +#define MULTILIB_DEFAULTS { "mbig", "mcall-linux" } diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 0fe123e1122..6c8981e6762 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -4135,9 +4135,9 @@ output_toc (file, x, labelno) a TOC reference to an unknown section. Thus, for vtables only, we emit the TOC reference to reference the symbol and not the section. */ - if (!strncmp ("_vt.", real_name, 4)) + if (!strncmp ("_vt.", name, 4)) { - RS6000_OUTPUT_BASENAME (file, real_name); + RS6000_OUTPUT_BASENAME (file, name); if (offset < 0) fprintf (file, "%d", offset); else if (offset > 0) @@ -4974,7 +4974,7 @@ handle_mac_pragma (finput, t) int retval = 0; register char *pname; char pbuf[200]; - int c, psize; + int c, psize = 0; if (TREE_CODE (t) != IDENTIFIER_NODE) return 0; diff --git a/gcc/config/rs6000/sol2.h b/gcc/config/rs6000/sol2.h index 017ba3542a4..00c90f1e042 100644 --- a/gcc/config/rs6000/sol2.h +++ b/gcc/config/rs6000/sol2.h @@ -164,4 +164,4 @@ while (0) `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ #undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mlittle", "mlittle-endian", "mcall-solaris", "mno-sdata" } +#define MULTILIB_DEFAULTS { "mlittle", "mcall-solaris" } diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index 68f4b8396b2..940da5a4823 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -1347,4 +1347,4 @@ do { \ `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ #undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mbig", "mbig-endian", "mcall-sysv-noeabi", "mno-sdata" } +#define MULTILIB_DEFAULTS { "mbig", "mcall-sysv" } diff --git a/gcc/config/rs6000/sysv4le.h b/gcc/config/rs6000/sysv4le.h index 4670cb4b910..0cf2ec49019 100644 --- a/gcc/config/rs6000/sysv4le.h +++ b/gcc/config/rs6000/sysv4le.h @@ -43,4 +43,4 @@ Boston, MA 02111-1307, USA. */ `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ #undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mlittle", "mlittle-endian", "mcall-sysv-noeabi", "mno-sdata" } +#define MULTILIB_DEFAULTS { "mlittle", "mcall-sysv" } diff --git a/gcc/config/rs6000/t-ppcgas b/gcc/config/rs6000/t-ppcgas index cea52c06d9a..3256de50592 100644 --- a/gcc/config/rs6000/t-ppcgas +++ b/gcc/config/rs6000/t-ppcgas @@ -24,30 +24,30 @@ eabi-ctors.c: $(srcdir)/config/rs6000/eabi-ctors.c # Build libgcc.a with different options. MULTILIB_OPTIONS = msoft-float \ - mrelocatable-lib \ mlittle/mbig \ - mcall-sysv-noeabi/mcall-sysv-eabi/mcall-aix + mcall-sysv/mcall-aix/mcall-solaris/mcall-linux MULTILIB_DIRNAMES = nof \ - rel \ le be \ - cs ce ca + cs ca sol lin MULTILIB_MATCHES = mlittle=mlittle-endian \ - mlittle=mcall-solaris \ mbig=mbig-endian \ mbig=mcall-linux \ msoft-float=mcpu?403 \ msoft-float=mcpu?821 \ msoft-float=mcpu?860 \ - mcall-sysv-noeabi=mcall-linux \ - mcall-sysv-eabi=meabi \ - mcall-sysv-noeabi=mno-eabi \ - mcall-sysv-noeabi=mcall-solaris \ - mrelocatable-lib=mrelocatable \ - mrelocatable-lib=fpic \ - mrelocatable-lib=fPIC \ - mrelocatable-lib=shared + mcall-sysv=mcall-solaris \ + mcall-sysv=mcall-sysv-eabi \ + mcall-sysv=mcall-sysv-noeabi + +MULTILIB_EXTRA_OPTS = mrelocatable-lib mno-eabi +MULTILIB_EXCEPTIONS = *mbig/*mcall-solaris* \ + *mlittle/*mcall-solaris* \ + *msoft-float/*mcall-solaris* \ + *mbig/*mcall-linux* \ + *mlittle/*mcall-linux* \ + *msoft-float/*mcall-linux* LIBGCC = stmp-multilib stmp-crt INSTALL_LIBGCC = install-multilib install-crt