diff -NBaur gcc-6.1.0/gcc/config/rs6000/rs6000.h gcc-6.1.0-ppc/gcc/config/rs6000/rs6000.h --- gcc-6.1.0/gcc/config/rs6000/rs6000.h 2016-01-20 20:30:24.000000000 +0000 +++ gcc-6.1.0-ppc/gcc/config/rs6000/rs6000.h 2016-05-20 12:10:24.645019640 +0100 @@ -205,6 +205,7 @@ { "asm_cpu_476", ASM_CPU_476_SPEC }, \ SUBTARGET_EXTRA_SPECS +#if 0 /* -mcpu=native handling only makes sense with compiler running on an PowerPC chip. If changing this condition, also change the condition in driver-rs6000.c. */ @@ -219,6 +220,8 @@ #else #define ASM_CPU_NATIVE_SPEC "%(asm_default)" #endif +#endif +#define ASM_CPU_NATIVE_SPEC "%(asm_default)" #ifndef CC1_CPU_SPEC #ifdef HAVE_LOCAL_CPU_DETECT diff -NBaur gcc-6.1.0/gcc/config/rs6000/sysv4.h gcc-6.1.0-ppc/gcc/config/rs6000/sysv4.h --- gcc-6.1.0/gcc/config/rs6000/sysv4.h 2016-01-04 14:30:50.000000000 +0000 +++ gcc-6.1.0-ppc/gcc/config/rs6000/sysv4.h 2016-05-20 12:12:27.073019640 +0100 @@ -559,7 +559,12 @@ /* Default starting address if specified. */ #define LINK_START_SPEC "\ -%{mads : %(link_start_ads) ; \ +%{mgcn|mogc : %(link_start_ogc) ; \ + mvgc : %(link_start_vgc) ; \ + mgcbios : %(link_start_gcb) ; \ + mrvl : %(link_start_rvl) ; \ + mwup : %(link_start_wup) ; \ + mads : %(link_start_ads) ; \ myellowknife : %(link_start_yellowknife) ; \ mmvme : %(link_start_mvme) ; \ msim : %(link_start_sim) ; \ @@ -590,7 +594,9 @@ /* Any specific OS flags. */ #define LINK_OS_SPEC "\ -%{mads : %(link_os_ads) ; \ +%{mgcn|mogc|mvgc|mgcbios|mrvl : %(link_os_ogc) ; \ + mwup : %(link_os_wup) ; \ + mads : %(link_os_ads) ; \ myellowknife : %(link_os_yellowknife) ; \ mmvme : %(link_os_mvme) ; \ msim : %(link_os_sim) ; \ @@ -608,7 +613,11 @@ /* Override rs6000.h definition. */ #undef CPP_SPEC #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \ -%{mads : %(cpp_os_ads) ; \ +%{mgcn : %(cpp_os_gcn) ; \ + mogc|mvgc|mgcbios : %(cpp_os_ogc) ; \ + mrvl : %(cpp_os_rvl) ; \ + mwup : %(cpp_os_wup) ; \ + mads : %(cpp_os_ads) ; \ myellowknife : %(cpp_os_yellowknife) ; \ mmvme : %(cpp_os_mvme) ; \ msim : %(cpp_os_sim) ; \ @@ -622,7 +630,11 @@ #undef STARTFILE_SPEC #define STARTFILE_SPEC "\ -%{mads : %(startfile_ads) ; \ +%{mgcn : %(startfile_gcn) ; \ + mogc|mvgc|mgcbios : %(startfile_ogc) ; \ + mrvl : %(startfile_ogc) ; \ + mwup : %(startfile_wup) ; \ + mads : %(startfile_ads) ; \ myellowknife : %(startfile_yellowknife) ; \ mmvme : %(startfile_mvme) ; \ msim : %(startfile_sim) ; \ @@ -632,11 +643,13 @@ mcall-openbsd: %(startfile_openbsd) ; \ : %(startfile_default) }" -#define STARTFILE_DEFAULT_SPEC "ecrti.o%s crtbegin.o%s" +#define STARTFILE_DEFAULT_SPEC "crt0.o%s ecrti.o%s crtbegin.o%s" #undef LIB_SPEC #define LIB_SPEC "\ -%{mads : %(lib_ads) ; \ +%{mgcn|mogc|mvgc|mgcbios|mrvl : %(lib_ogc) ; \ + mwup : %(lib_wup) ; \ + mads : %(lib_ads) ; \ myellowknife : %(lib_yellowknife) ; \ mmvme : %(lib_mvme) ; \ msim : %(lib_sim) ; \ @@ -646,11 +658,13 @@ mcall-openbsd: %(lib_openbsd) ; \ : %(lib_default) }" -#define LIB_DEFAULT_SPEC "-lc" +#define LIB_DEFAULT_SPEC "--start-group -lsysbase -lc --end-group" #undef ENDFILE_SPEC #define ENDFILE_SPEC "\ -%{mads : %(endfile_ads) ; \ +%{mgcn|mogc|mvgc|mgcbios|mrvl : %(endfile_ogc) ; \ + mwup : %(endfile_wup) ; \ + mads : %(endfile_ads) ; \ myellowknife : %(endfile_yellowknife) ; \ mmvme : %(endfile_mvme) ; \ msim : %(endfile_sim) ; \ @@ -666,16 +679,33 @@ /* Motorola ADS support. */ #define LIB_ADS_SPEC "--start-group -lads -lc --end-group" +#define LIB_OGC_SPEC "--start-group -lsysbase -lc --end-group" +#define LIB_WUP_SPEC "--start-group -lsysbase -lc --end-group" #define STARTFILE_ADS_SPEC "ecrti.o%s crt0.o%s crtbegin.o%s" +#define STARTFILE_OGC_SPEC "ecrti.o%s crtbegin.o%s crtmain.o%s" +#define STARTFILE_WUP_SPEC "ecrti.o%s crtbegin.o%s crtmain.o%s" #define ENDFILE_ADS_SPEC "crtend.o%s ecrtn.o%s" +#define ENDFILE_OGC_SPEC "crtend.o%s ecrtn.o%s" +#define ENDFILE_WUP_SPEC "crtend.o%s ecrtn.o%s" #define LINK_START_ADS_SPEC "-T ads.ld%s" +#define LINK_START_OGC_SPEC "-T ogc.ld%s" +#define LINK_START_RVL_SPEC "-T rvl.ld%s" +#define LINK_START_WUP_SPEC "-T wup.ld%s" +#define LINK_START_VGC_SPEC "-T vgcogc.ld%s" +#define LINK_START_GCB_SPEC "-T gcbogc.ld%s" #define LINK_OS_ADS_SPEC "" +#define LINK_OS_OGC_SPEC "--gc-sections" +#define LINK_OS_WUP_SPEC "--gc-sections" #define CPP_OS_ADS_SPEC "" +#define CPP_OS_GCN_SPEC "-D__gamecube__ -ffunction-sections -fdata-sections" +#define CPP_OS_OGC_SPEC "-D__gamecube__ -DHW_DOL -ffunction-sections -fdata-sections" +#define CPP_OS_RVL_SPEC "-D__wii__ -DHW_RVL -ffunction-sections -fdata-sections" +#define CPP_OS_WUP_SPEC "-D__wiiu__ -DHW_WUP -ffunction-sections -fdata-sections" /* Motorola Yellowknife support. */ #define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group" @@ -855,6 +879,8 @@ #undef SUBTARGET_EXTRA_SPECS #define SUBTARGET_EXTRA_SPECS \ { "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \ + { "lib_ogc", LIB_OGC_SPEC }, \ + { "lib_wup", LIB_WUP_SPEC }, \ { "lib_ads", LIB_ADS_SPEC }, \ { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ { "lib_mvme", LIB_MVME_SPEC }, \ @@ -864,6 +889,8 @@ { "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_openbsd", LIB_OPENBSD_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \ + { "startfile_ogc", STARTFILE_OGC_SPEC }, \ + { "startfile_wup", STARTFILE_WUP_SPEC }, \ { "startfile_ads", STARTFILE_ADS_SPEC }, \ { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ { "startfile_mvme", STARTFILE_MVME_SPEC }, \ @@ -873,6 +899,8 @@ { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \ + { "endfile_ogc", ENDFILE_OGC_SPEC }, \ + { "endfile_wup", ENDFILE_WUP_SPEC }, \ { "endfile_ads", ENDFILE_ADS_SPEC }, \ { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ { "endfile_mvme", ENDFILE_MVME_SPEC }, \ @@ -884,7 +911,12 @@ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \ { "link_shlib", LINK_SHLIB_SPEC }, \ { "link_start", LINK_START_SPEC }, \ + { "link_start_vgc", LINK_START_VGC_SPEC }, \ + { "link_start_gcb", LINK_START_GCB_SPEC }, \ + { "link_start_rvl", LINK_START_RVL_SPEC }, \ + { "link_start_wup", LINK_START_WUP_SPEC }, \ { "link_start_ads", LINK_START_ADS_SPEC }, \ + { "link_start_ogc", LINK_START_OGC_SPEC }, \ { "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \ { "link_start_mvme", LINK_START_MVME_SPEC }, \ { "link_start_sim", LINK_START_SIM_SPEC }, \ @@ -894,6 +925,8 @@ { "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \ { "link_os", LINK_OS_SPEC }, \ + { "link_os_ogc", LINK_OS_OGC_SPEC }, \ + { "link_os_wup", LINK_OS_WUP_SPEC }, \ { "link_os_ads", LINK_OS_ADS_SPEC }, \ { "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \ { "link_os_mvme", LINK_OS_MVME_SPEC }, \ @@ -905,6 +937,10 @@ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ { "link_secure_plt", LINK_SECURE_PLT_SPEC }, \ + { "cpp_os_gcn", CPP_OS_GCN_SPEC }, \ + { "cpp_os_ogc", CPP_OS_OGC_SPEC }, \ + { "cpp_os_rvl", CPP_OS_RVL_SPEC }, \ + { "cpp_os_wup", CPP_OS_WUP_SPEC }, \ { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ diff -NBaur gcc-6.1.0/gcc/config/rs6000/sysv4.opt gcc-6.1.0-ppc/gcc/config/rs6000/sysv4.opt --- gcc-6.1.0/gcc/config/rs6000/sysv4.opt 2016-01-04 14:30:50.000000000 +0000 +++ gcc-6.1.0-ppc/gcc/config/rs6000/sysv4.opt 2016-05-20 12:10:24.649019640 +0100 @@ -120,6 +120,30 @@ Target RejectNegative Link with libads.a, libc.a and crt0.o. +mgcn +Target RejectNegative +Link with libsysbase.a and libc.a, use ogc linker script + +mogc +Target RejectNegative +Link with libsysbase.a and libc.a, use ogc linker script + +mgcbios +Target RejectNegative +Link with libsysbase.a and libc.a, use gcbogc linker script + +mvgc +Target RejectNegative +Link with libsysbase.a and libc.a, use gcbogc linker script + +mrvl +Target RejectNegative +Link with libsysbase.a and libc.a, use rvl linker script + +mwup +Target RejectNegative +Link with libsysbase.a and libc.a, use wup linker script + myellowknife Target RejectNegative Link with libyk.a, libc.a and crt0.o. diff -NBaur gcc-6.1.0/gcc/config.gcc gcc-6.1.0-ppc/gcc/config.gcc --- gcc-6.1.0/gcc/config.gcc 2016-04-11 11:14:59.000000000 +0100 +++ gcc-6.1.0-ppc/gcc/config.gcc 2016-05-20 12:10:24.661019640 +0100 @@ -2381,7 +2381,7 @@ use_gcc_stdint=wrap ;; powerpc-*-eabi*) - tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h" + tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/750cl.h" extra_options="${extra_options} rs6000/sysv4.opt" tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm" use_gcc_stdint=wrap diff -NBaur gcc-6.1.0/gcc/Makefile.in gcc-6.1.0-ppc/gcc/Makefile.in --- gcc-6.1.0/gcc/Makefile.in 2016-04-15 12:49:39.000000000 +0100 +++ gcc-6.1.0-ppc/gcc/Makefile.in 2016-05-20 12:10:24.641019640 +0100 @@ -1073,8 +1073,8 @@ # things like the go/%.o rule work properly; but we use $(*F) for the # file part, as we just want the file part of the stem, not the entire # file name. -COMPILE = $(COMPILE.base) -MT $@ -MMD -MP -MF $(@D)/$(DEPDIR)/$(*F).TPo -POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(*F).TPo $(@D)/$(DEPDIR)/$(*F).Po +COMPILE = $(COMPILE.base) +POSTCOMPILE = else COMPILE = source='$<' object='$@' libtool=no \ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) $(COMPILE.base) diff -NBaur gcc-6.1.0/libcpp/Makefile.in gcc-6.1.0-ppc/libcpp/Makefile.in --- gcc-6.1.0/libcpp/Makefile.in 2016-04-27 09:22:11.000000000 +0100 +++ gcc-6.1.0-ppc/libcpp/Makefile.in 2016-05-20 12:10:24.661019640 +0100 @@ -208,8 +208,7 @@ # Note that we put the dependencies into a .Tpo file, then move them # into place if the compile succeeds. We need this because gcc does # not atomically write the dependency output file. -COMPILE = $(COMPILE.base) -o $@ -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Tpo -POSTCOMPILE = @mv $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +COMPILE = $(COMPILE.base) -o $@ else COMPILE = source='$<' object='$@' libtool=no DEPDIR=$(DEPDIR) $(DEPMODE) \ $(depcomp) $(COMPILE.base) diff -NBaur gcc-6.1.0/libgcc/config/rs6000/crtrestvr.S gcc-6.1.0-ppc/libgcc/config/rs6000/crtrestvr.S --- gcc-6.1.0/libgcc/config/rs6000/crtrestvr.S 2016-01-04 14:30:50.000000000 +0000 +++ gcc-6.1.0-ppc/libgcc/config/rs6000/crtrestvr.S 2016-05-20 12:10:24.665019640 +0100 @@ -24,7 +24,7 @@ /* On PowerPC64 Linux, these functions are provided by the linker. */ #ifndef __powerpc64__ - +#if 0 #undef __ALTIVEC__ #define __ALTIVEC__ 1 #include "ppc-asm.h" @@ -85,3 +85,4 @@ CFI_ENDPROC #endif +#endif diff -NBaur gcc-6.1.0/libgcc/config/rs6000/crtsavevr.S gcc-6.1.0-ppc/libgcc/config/rs6000/crtsavevr.S --- gcc-6.1.0/libgcc/config/rs6000/crtsavevr.S 2016-01-04 14:30:50.000000000 +0000 +++ gcc-6.1.0-ppc/libgcc/config/rs6000/crtsavevr.S 2016-05-20 12:10:24.665019640 +0100 @@ -24,7 +24,7 @@ /* On PowerPC64 Linux, these functions are provided by the linker. */ #ifndef __powerpc64__ - +#if 0 #undef __ALTIVEC__ #define __ALTIVEC__ 1 #include "ppc-asm.h" @@ -85,3 +85,4 @@ CFI_ENDPROC #endif +#endif diff -NBaur gcc-6.1.0/libgcc/crtstuff.c gcc-6.1.0-ppc/libgcc/crtstuff.c --- gcc-6.1.0/libgcc/crtstuff.c 2016-01-04 14:30:50.000000000 +0000 +++ gcc-6.1.0-ppc/libgcc/crtstuff.c 2016-05-20 12:10:24.669019640 +0100 @@ -47,6 +47,7 @@ /* Target machine header files require this define. */ #define IN_LIBGCC2 +#define USED_FOR_TARGET /* FIXME: Including auto-host is incorrect, but until we have identified the set of defines that need to go into auto-target.h, diff -NBaur gcc-6.1.0/libstdc++-v3/include/std/type_traits gcc-6.1.0-ppc/libstdc++-v3/include/std/type_traits --- gcc-6.1.0/libstdc++-v3/include/std/type_traits 2016-01-12 21:19:58.000000000 +0000 +++ gcc-6.1.0-ppc/libstdc++-v3/include/std/type_traits 2016-05-20 12:10:24.669019640 +0100 @@ -38,7 +38,7 @@ #include #ifdef _GLIBCXX_USE_C99_STDINT_TR1 -# if defined (__UINT_LEAST16_TYPE__) && defined(__UINT_LEAST32_TYPE__) +# if defined (__UINT_LEAST16_TYPE__) && defined(__UINT_LEAST32_TYPE__) && 0 namespace std { typedef __UINT_LEAST16_TYPE__ uint_least16_t;