diff --git a/dkppc/patches/gcc-7.1.0.patch b/dkppc/patches/gcc-7.1.0.patch new file mode 100644 index 0000000..a3c6c4a --- /dev/null +++ b/dkppc/patches/gcc-7.1.0.patch @@ -0,0 +1,313 @@ +diff -Nbaur gcc-7.1.0/gcc/config/rs6000/rs6000.h gcc-7.1.0-ppc/gcc/config/rs6000/rs6000.h +--- gcc-7.1.0/gcc/config/rs6000/rs6000.h 2017-03-22 17:47:55.000000000 +0000 ++++ gcc-7.1.0-ppc/gcc/config/rs6000/rs6000.h 2017-06-28 23:03:50.558004511 +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-7.1.0/gcc/config/rs6000/sysv4.h gcc-7.1.0-ppc/gcc/config/rs6000/sysv4.h +--- gcc-7.1.0/gcc/config/rs6000/sysv4.h 2017-02-07 11:29:06.000000000 +0000 ++++ gcc-7.1.0-ppc/gcc/config/rs6000/sysv4.h 2017-06-28 23:03:50.562004807 +0100 +@@ -564,7 +564,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) ; \ +@@ -595,7 +600,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) ; \ +@@ -613,7 +620,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) ; \ +@@ -627,7 +638,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) ; \ +@@ -641,7 +656,9 @@ + + #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) ; \ +@@ -651,11 +668,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) ; \ +@@ -671,16 +690,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" +@@ -871,6 +907,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 }, \ +@@ -880,6 +918,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 }, \ +@@ -889,6 +929,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 }, \ +@@ -900,7 +942,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 }, \ +@@ -910,6 +957,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 }, \ +@@ -921,6 +970,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-7.1.0/gcc/config/rs6000/sysv4.opt gcc-7.1.0-ppc/gcc/config/rs6000/sysv4.opt +--- gcc-7.1.0/gcc/config/rs6000/sysv4.opt 2017-01-01 12:07:43.000000000 +0000 ++++ gcc-7.1.0-ppc/gcc/config/rs6000/sysv4.opt 2017-06-28 23:03:50.562004807 +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-7.1.0/gcc/config.gcc gcc-7.1.0-ppc/gcc/config.gcc +--- gcc-7.1.0/gcc/config.gcc 2017-03-24 13:59:51.000000000 +0000 ++++ gcc-7.1.0-ppc/gcc/config.gcc 2017-06-28 23:03:50.566005054 +0100 +@@ -2404,7 +2404,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-7.1.0/gcc/Makefile.in gcc-7.1.0-ppc/gcc/Makefile.in +--- gcc-7.1.0/gcc/Makefile.in 2017-04-18 19:10:27.000000000 +0100 ++++ gcc-7.1.0-ppc/gcc/Makefile.in 2017-06-28 23:03:50.570005229 +0100 +@@ -1087,8 +1087,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-7.1.0/libcpp/Makefile.in gcc-7.1.0-ppc/libcpp/Makefile.in +--- gcc-7.1.0/libcpp/Makefile.in 2017-05-02 13:43:57.000000000 +0100 ++++ gcc-7.1.0-ppc/libcpp/Makefile.in 2017-06-28 23:03:50.570005229 +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-7.1.0/libgcc/config/rs6000/crtrestvr.S gcc-7.1.0-ppc/libgcc/config/rs6000/crtrestvr.S +--- gcc-7.1.0/libgcc/config/rs6000/crtrestvr.S 2017-03-10 19:29:48.000000000 +0000 ++++ gcc-7.1.0-ppc/libgcc/config/rs6000/crtrestvr.S 2017-06-28 23:03:50.570005229 +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" +@@ -86,3 +86,4 @@ + CFI_ENDPROC + + #endif ++#endif +diff -Nbaur gcc-7.1.0/libgcc/config/rs6000/crtsavevr.S gcc-7.1.0-ppc/libgcc/config/rs6000/crtsavevr.S +--- gcc-7.1.0/libgcc/config/rs6000/crtsavevr.S 2017-03-10 19:29:48.000000000 +0000 ++++ gcc-7.1.0-ppc/libgcc/config/rs6000/crtsavevr.S 2017-06-28 23:03:50.574005432 +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" +@@ -86,3 +86,4 @@ + CFI_ENDPROC + + #endif ++#endif +diff -Nbaur gcc-7.1.0/libgcc/crtstuff.c gcc-7.1.0-ppc/libgcc/crtstuff.c +--- gcc-7.1.0/libgcc/crtstuff.c 2017-01-01 12:07:43.000000000 +0000 ++++ gcc-7.1.0-ppc/libgcc/crtstuff.c 2017-06-28 23:03:50.574005432 +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 --git a/dkppc/scripts/build-gcc.sh b/dkppc/scripts/build-gcc.sh index 393067f..b14fccb 100755 --- a/dkppc/scripts/build-gcc.sh +++ b/dkppc/scripts/build-gcc.sh @@ -95,7 +95,7 @@ then --with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \ --prefix=$prefix\ --with-system-zlib\ - --with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitPPC release 30" \ + --with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitPPC release 30 alpha" \ $CROSS_PARAMS \ || { echo "Error configuring gcc stage 1"; exit 1; } touch configured-gcc diff --git a/select_toolchain.sh b/select_toolchain.sh index d28a53a..66046f5 100755 --- a/select_toolchain.sh +++ b/select_toolchain.sh @@ -40,7 +40,7 @@ case "$VERSION" in toolchain=DEVKITARM ;; "2" ) - GCC_VER=6.3.0 + GCC_VER=7.1.0 BINUTILS_VER=2.28 MN_BINUTILS_VER=2.17 NEWLIB_VER=2.5.0