mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-04-19 08:57:21 -05:00
384 lines
14 KiB
Diff
384 lines
14 KiB
Diff
diff -Nbaur gcc-4.2.3/config.sub gcc-4.2.3-ppc/config.sub
|
|
--- gcc-4.2.3/config.sub Mon Oct 16 04:27:17 2006
|
|
+++ gcc-4.2.3-ppc/config.sub Tue Apr 15 15:19:42 2008
|
|
@@ -230,6 +230,10 @@
|
|
basic_machine=m68k-atari
|
|
os=-mint
|
|
;;
|
|
+ -gekko)
|
|
+ basic_machine=powerpc-eabi
|
|
+ os=-elf
|
|
+ ;;
|
|
esac
|
|
|
|
# Decode aliases for certain CPU-COMPANY combinations.
|
|
diff -Nbaur gcc-4.2.3/gcc/c-incpath.c gcc-4.2.3-ppc/gcc/c-incpath.c
|
|
--- gcc-4.2.3/gcc/c-incpath.c Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/c-incpath.c Tue Apr 15 15:19:42 2008
|
|
@@ -340,13 +340,18 @@
|
|
cpp_dir *p;
|
|
|
|
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
|
- /* Convert all backslashes to slashes. The native CRT stat()
|
|
- function does not recognize a directory that ends in a backslash
|
|
- (unless it is a drive root dir, such "c:\"). Forward slashes,
|
|
- trailing or otherwise, cause no problems for stat(). */
|
|
- char* c;
|
|
- for (c = path; *c; c++)
|
|
- if (*c == '\\') *c = '/';
|
|
+ /* Remove unnecessary trailing slashes. On some versions of MS
|
|
+ Windows, trailing _forward_ slashes cause no problems for stat().
|
|
+ On newer versions, stat() does not recognise a directory that ends
|
|
+ in a '\\' or '/', unless it is a drive root dir, such as "c:/",
|
|
+ where it is obligatory. */
|
|
+ int pathlen = strlen (path);
|
|
+ char* end = path + pathlen - 1;
|
|
+ /* Preserve the lead '/' or lead "c:/". */
|
|
+ char* start = path + (pathlen > 2 && path[1] == ':' ? 3 : 1);
|
|
+
|
|
+ for (; end > start && IS_DIR_SEPARATOR (*end); end--)
|
|
+ *end = 0;
|
|
#endif
|
|
|
|
p = XNEW (cpp_dir);
|
|
diff -Nbaur gcc-4.2.3/gcc/config/rs6000/sysv4.h gcc-4.2.3-ppc/gcc/config/rs6000/sysv4.h
|
|
--- gcc-4.2.3/gcc/config/rs6000/sysv4.h Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/config/rs6000/sysv4.h Tue Apr 15 15:21:10 2008
|
|
@@ -651,7 +651,11 @@
|
|
|
|
/* 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) ; \
|
|
+ mads : %(link_start_ads) ; \
|
|
myellowknife : %(link_start_yellowknife) ; \
|
|
mmvme : %(link_start_mvme) ; \
|
|
msim : %(link_start_sim) ; \
|
|
@@ -709,7 +713,8 @@
|
|
|
|
/* Any specific OS flags. */
|
|
#define LINK_OS_SPEC "\
|
|
-%{mads : %(link_os_ads) ; \
|
|
+%{mgcn|mogc|mvgc|mgcbios|mrvl : %(link_os_ogc) ; \
|
|
+ mads : %(link_os_ads) ; \
|
|
myellowknife : %(link_os_yellowknife) ; \
|
|
mmvme : %(link_os_mvme) ; \
|
|
msim : %(link_os_sim) ; \
|
|
@@ -726,7 +731,10 @@
|
|
/* 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) ; \
|
|
+ mads : %(cpp_os_ads) ; \
|
|
myellowknife : %(cpp_os_yellowknife) ; \
|
|
mmvme : %(cpp_os_mvme) ; \
|
|
msim : %(cpp_os_sim) ; \
|
|
@@ -743,7 +751,10 @@
|
|
/* Override svr4.h definition. */
|
|
#undef STARTFILE_SPEC
|
|
#define STARTFILE_SPEC "\
|
|
-%{mads : %(startfile_ads) ; \
|
|
+%{mgcn : %(startfile_gcn) ; \
|
|
+ mogc|mvgc|mgcbios : %(startfile_ogc) ; \
|
|
+ mrvl : %(startfile_ogc) ; \
|
|
+ mads : %(startfile_ads) ; \
|
|
myellowknife : %(startfile_yellowknife) ; \
|
|
mmvme : %(startfile_mvme) ; \
|
|
msim : %(startfile_sim) ; \
|
|
@@ -760,7 +771,8 @@
|
|
/* Override svr4.h definition. */
|
|
#undef LIB_SPEC
|
|
#define LIB_SPEC "\
|
|
-%{mads : %(lib_ads) ; \
|
|
+%{mgcn|mogc|mvgc|mgcbios|mrvl : %(lib_ogc) ; \
|
|
+ mads : %(lib_ads) ; \
|
|
myellowknife : %(lib_yellowknife) ; \
|
|
mmvme : %(lib_mvme) ; \
|
|
msim : %(lib_sim) ; \
|
|
@@ -772,12 +784,13 @@
|
|
mcall-openbsd: %(lib_openbsd) ; \
|
|
: %(lib_default) }"
|
|
|
|
-#define LIB_DEFAULT_SPEC ""
|
|
+#define LIB_DEFAULT_SPEC "--start-group -lsysbase -lc --end-group"
|
|
|
|
/* Override svr4.h definition. */
|
|
#undef ENDFILE_SPEC
|
|
#define ENDFILE_SPEC "\
|
|
-%{mads : crtsavres.o%s %(endfile_ads) ; \
|
|
+%{mgcn|mogc|mvgc|mgcbios|mrvl : crtsavres.o%s %(endfile_ogc) ; \
|
|
+ mads : crtsavres.o%s %(endfile_ads) ; \
|
|
myellowknife : crtsavres.o%s %(endfile_yellowknife) ; \
|
|
mmvme : crtsavres.o%s %(endfile_mvme) ; \
|
|
msim : crtsavres.o%s %(endfile_sim) ; \
|
|
@@ -795,16 +808,27 @@
|
|
|
|
/* Motorola ADS support. */
|
|
#define LIB_ADS_SPEC "--start-group -lads -lc --end-group"
|
|
+#define LIB_OGC_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 ENDFILE_ADS_SPEC "crtend.o%s ecrtn.o%s"
|
|
+#define ENDFILE_OGC_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_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 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"
|
|
|
|
/* Motorola Yellowknife support. */
|
|
#define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group"
|
|
@@ -1016,6 +1040,7 @@
|
|
#undef SUBTARGET_EXTRA_SPECS
|
|
#define SUBTARGET_EXTRA_SPECS \
|
|
{ "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \
|
|
+ { "lib_ogc", LIB_OGC_SPEC }, \
|
|
{ "lib_ads", LIB_ADS_SPEC }, \
|
|
{ "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \
|
|
{ "lib_mvme", LIB_MVME_SPEC }, \
|
|
@@ -1027,6 +1052,7 @@
|
|
{ "lib_openbsd", LIB_OPENBSD_SPEC }, \
|
|
{ "lib_windiss", LIB_WINDISS_SPEC }, \
|
|
{ "lib_default", LIB_DEFAULT_SPEC }, \
|
|
+ { "startfile_ogc", STARTFILE_OGC_SPEC }, \
|
|
{ "startfile_ads", STARTFILE_ADS_SPEC }, \
|
|
{ "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \
|
|
{ "startfile_mvme", STARTFILE_MVME_SPEC }, \
|
|
@@ -1038,6 +1064,7 @@
|
|
{ "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \
|
|
{ "startfile_windiss", STARTFILE_WINDISS_SPEC }, \
|
|
{ "startfile_default", STARTFILE_DEFAULT_SPEC }, \
|
|
+ { "endfile_ogc", ENDFILE_OGC_SPEC }, \
|
|
{ "endfile_ads", ENDFILE_ADS_SPEC }, \
|
|
{ "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \
|
|
{ "endfile_mvme", ENDFILE_MVME_SPEC }, \
|
|
@@ -1053,7 +1080,11 @@
|
|
{ "link_shlib", LINK_SHLIB_SPEC }, \
|
|
{ "link_target", LINK_TARGET_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_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 }, \
|
|
@@ -1065,6 +1096,7 @@
|
|
{ "link_start_windiss", LINK_START_WINDISS_SPEC }, \
|
|
{ "link_start_default", LINK_START_DEFAULT_SPEC }, \
|
|
{ "link_os", LINK_OS_SPEC }, \
|
|
+ { "link_os_ogc", LINK_OS_OGC_SPEC }, \
|
|
{ "link_os_ads", LINK_OS_ADS_SPEC }, \
|
|
{ "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \
|
|
{ "link_os_mvme", LINK_OS_MVME_SPEC }, \
|
|
@@ -1080,6 +1112,9 @@
|
|
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
|
|
{ "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \
|
|
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
|
|
+ { "cpp_os_gcn", CPP_OS_GCN_SPEC }, \
|
|
+ { "cpp_os_ogc", CPP_OS_OGC_SPEC }, \
|
|
+ { "cpp_os_rvl", CPP_OS_RVL_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-4.2.3/gcc/config/rs6000/sysv4.opt gcc-4.2.3-ppc/gcc/config/rs6000/sysv4.opt
|
|
--- gcc-4.2.3/gcc/config/rs6000/sysv4.opt Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/config/rs6000/sysv4.opt Tue Apr 15 15:19:42 2008
|
|
@@ -107,6 +107,26 @@
|
|
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
|
|
+
|
|
myellowknife
|
|
Target RejectNegative
|
|
Link with libyk.a, libc.a and crt0.o
|
|
diff -Nbaur gcc-4.2.3/gcc/gcc.c gcc-4.2.3-ppc/gcc/gcc.c
|
|
--- gcc-4.2.3/gcc/gcc.c Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/gcc.c Tue Apr 15 15:19:42 2008
|
|
@@ -3369,8 +3369,6 @@
|
|
gcc_libexec_prefix = make_relative_prefix (argv[0],
|
|
standard_bindir_prefix,
|
|
standard_libexec_prefix);
|
|
- if (gcc_exec_prefix)
|
|
- putenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL));
|
|
}
|
|
else
|
|
{
|
|
@@ -6213,10 +6211,21 @@
|
|
|
|
/* We need to check standard_exec_prefix/just_machine_suffix/specs
|
|
for any override of as, ld and libraries. */
|
|
+ if ( gcc_exec_prefix )
|
|
+ {
|
|
+ specs_file = alloca (strlen (gcc_exec_prefix)
|
|
+ + strlen (just_machine_suffix) + sizeof ("specs"));
|
|
+
|
|
+ strcpy (specs_file, gcc_exec_prefix);
|
|
+ } else {
|
|
+
|
|
specs_file = alloca (strlen (standard_exec_prefix)
|
|
+ strlen (just_machine_suffix) + sizeof ("specs"));
|
|
|
|
strcpy (specs_file, standard_exec_prefix);
|
|
+
|
|
+ }
|
|
+
|
|
strcat (specs_file, just_machine_suffix);
|
|
strcat (specs_file, "specs");
|
|
if (access (specs_file, R_OK) == 0)
|
|
diff -Nbaur gcc-4.2.3/gcc/prefix.c gcc-4.2.3-ppc/gcc/prefix.c
|
|
--- gcc-4.2.3/gcc/prefix.c Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/prefix.c Tue Apr 15 15:19:42 2008
|
|
@@ -245,13 +245,16 @@
|
|
The returned string is always malloc-ed, and the caller is
|
|
responsible for freeing it. */
|
|
|
|
+
|
|
+static const char *old_prefix = PREFIX;
|
|
+
|
|
char *
|
|
update_path (const char *path, const char *key)
|
|
{
|
|
char *result, *p;
|
|
- const int len = strlen (std_prefix);
|
|
+ const int len = strlen (old_prefix);
|
|
|
|
- if (! strncmp (path, std_prefix, len)
|
|
+ if (! strncmp (path, old_prefix, len)
|
|
&& (IS_DIR_SEPARATOR(path[len])
|
|
|| path[len] == '\0')
|
|
&& key != 0)
|
|
@@ -353,4 +356,6 @@
|
|
set_std_prefix (const char *prefix, int len)
|
|
{
|
|
std_prefix = save_string (prefix, len);
|
|
+
|
|
+ putenv (concat ("GCC_EXEC_PREFIX=", std_prefix, NULL));
|
|
}
|
|
diff -Nbaur gcc-4.2.3/gcc/stor-layout.c gcc-4.2.3-ppc/gcc/stor-layout.c
|
|
--- gcc-4.2.3/gcc/stor-layout.c Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/stor-layout.c Tue Apr 15 15:19:42 2008
|
|
@@ -530,7 +530,15 @@
|
|
#ifdef STRUCTURE_SIZE_BOUNDARY
|
|
/* Packed structures don't need to have minimum size. */
|
|
if (! TYPE_PACKED (t))
|
|
- rli->record_align = MAX (rli->record_align, (unsigned) STRUCTURE_SIZE_BOUNDARY);
|
|
+ {
|
|
+ unsigned tmp;
|
|
+
|
|
+ /* #pragma pack overrides STRUCTURE_SIZE_BOUNDARY. */
|
|
+ tmp = (unsigned) STRUCTURE_SIZE_BOUNDARY;
|
|
+ if (maximum_field_alignment != 0)
|
|
+ tmp = MIN (tmp, maximum_field_alignment);
|
|
+ rli->record_align = MAX (rli->record_align, tmp);
|
|
+ }
|
|
#endif
|
|
|
|
rli->offset = size_zero_node;
|
|
diff -Nbaur gcc-4.2.3/gcc/toplev.c gcc-4.2.3-ppc/gcc/toplev.c
|
|
--- gcc-4.2.3/gcc/toplev.c Sat Sep 1 16:28:30 2007
|
|
+++ gcc-4.2.3-ppc/gcc/toplev.c Tue Apr 15 15:19:42 2008
|
|
@@ -81,6 +81,7 @@
|
|
#include "value-prof.h"
|
|
#include "alloc-pool.h"
|
|
#include "tree-mudflap.h"
|
|
+#include "prefix.h"
|
|
|
|
#if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
|
|
#include "dwarf2out.h"
|
|
@@ -1478,6 +1479,10 @@
|
|
progname = p;
|
|
|
|
xmalloc_set_program_name (progname);
|
|
+
|
|
+ p = getenv("GCC_EXEC_PREFIX");
|
|
+ if (p && strlen(p)) set_std_prefix (p, strlen(p));
|
|
+
|
|
|
|
hex_init ();
|
|
|
|
diff -Nbaur gcc-4.2.3/gcc/version.c gcc-4.2.3-ppc/gcc/version.c
|
|
--- gcc-4.2.3/gcc/version.c Wed Mar 16 06:04:10 2005
|
|
+++ gcc-4.2.3-ppc/gcc/version.c Tue Apr 15 15:23:23 2008
|
|
@@ -8,7 +8,7 @@
|
|
in parentheses. You may also wish to include a number indicating
|
|
the revision of your modified compiler. */
|
|
|
|
-#define VERSUFFIX ""
|
|
+#define VERSUFFIX " (devkitPPC release 15)"
|
|
|
|
/* This is the location of the online document giving instructions for
|
|
reporting bugs. If you distribute a modified version of GCC,
|
|
@@ -17,7 +17,7 @@
|
|
forward us bugs reported to you, if you determine that they are
|
|
not bugs in your modifications.) */
|
|
|
|
-const char bug_report_url[] = "<URL:http://gcc.gnu.org/bugs.html>";
|
|
+const char bug_report_url[] = "<URL:http://wiki.devkitpro.org/index.php/Bug_Reports>";
|
|
|
|
/* The complete version string, assembled from several pieces.
|
|
BASEVER, DATESTAMP, and DEVPHASE are defined by the Makefile. */
|
|
diff -Nbaur gcc-4.2.3/libcpp/files.c gcc-4.2.3-ppc/libcpp/files.c
|
|
--- gcc-4.2.3/libcpp/files.c Sat Feb 18 09:25:31 2006
|
|
+++ gcc-4.2.3-ppc/libcpp/files.c Tue Apr 15 15:19:43 2008
|
|
@@ -226,6 +226,22 @@
|
|
close (file->fd);
|
|
file->fd = -1;
|
|
}
|
|
+#if defined(_WIN32) && !defined(__CYGWIN__)
|
|
+ else if (errno == EACCES)
|
|
+ {
|
|
+ /* On most UNIX systems, open succeeds on a directory. Above,
|
|
+ we check if we have opened a directory and if so, set errno
|
|
+ to ENOENT. However, on Windows, opening a directory
|
|
+ fails with EACCESS. We want to return ENOENT in that
|
|
+ case too. */
|
|
+ if (stat (file->path, &file->st) == 0
|
|
+ && S_ISDIR (file->st.st_mode))
|
|
+ errno = ENOENT;
|
|
+ else
|
|
+ /* The call to stat may have reset errno. */
|
|
+ errno = EACCES;
|
|
+ }
|
|
+#endif
|
|
else if (errno == ENOTDIR)
|
|
errno = ENOENT;
|
|
|