Compare commits

...

7 Commits

Author SHA1 Message Date
Dave Murphy
556a2a2e02 devkitPPC: refill buffer for large reads 2020-06-08 20:01:52 +01:00
Dave Murphy
6da9ea33f7 devkitPPC: use binutils 2.34 2020-06-08 19:59:53 +01:00
Dave Murphy
433a4bdd80 devkitPPC: releease 37 2020-05-16 03:17:05 +01:00
Dave Murphy
20bf4948a1 devkitPPC: update to gcc 10 2020-05-16 03:15:39 +01:00
Dave Murphy
5e720e01c1 devkitPPC: rework syscalls 2020-05-16 03:14:57 +01:00
Dave Murphy
183ab79cfc flag for building crtls & rules 2020-05-12 14:04:01 +01:00
Dave Murphy
ad4246dfc4 oops, forgot to update rules script for devkitPPC 2020-05-12 11:37:27 +00:00
8 changed files with 293 additions and 317 deletions

View File

@@ -2,7 +2,7 @@
#!/bin/bash #!/bin/bash
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# devkitARM release 54 # devkitARM release 54
# devkitPPC release 36 # devkitPPC release 37
# devkitA64 release 15 # devkitA64 release 15
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------

View File

@@ -31,9 +31,9 @@ BUILD_DKPRO_PACKAGE=0
#export MAKEFLAGS="$MAKEFLAGS -j${numcores}" #export MAKEFLAGS="$MAKEFLAGS -j${numcores}"
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Uncomment to skip building of tools # Uncomment to skip building of crtls and rules files
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
#BUILD_DKPRO_SKIP_TOOLS=1 #BUILD_DKPRO_SKIP_CRTLS=1
# Automated script execution # Automated script execution
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------

View File

@@ -0,0 +1,12 @@
diff -NBaur binutils-2.34/opcodes/ppc-opc.c binutils-2.34-ppc/opcodes/ppc-opc.c
--- binutils-2.34/opcodes/ppc-opc.c 2020-01-18 13:55:49.000000000 +0000
+++ binutils-2.34-ppc/opcodes/ppc-opc.c 2020-05-22 10:47:37.900308413 +0000
@@ -3747,7 +3747,7 @@
#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
| PPC_OPCODE_TITAN)
#define BOOKE PPC_OPCODE_BOOKE
-#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
+#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_EFS
#define PPCE300 PPC_OPCODE_E300
#define PPCSPE PPC_OPCODE_SPE
#define PPCSPE2 PPC_OPCODE_SPE2

View File

@@ -1,30 +1,59 @@
diff --git a/config/gthr.m4 b/config/gthr.m4 diff --git a/config/gthr.m4 b/config/gthr.m4
index 7b29f1f3327..814104f32a2 100644 index 4b937306ad0..bfd0375bd60 100644
--- a/config/gthr.m4 --- a/config/gthr.m4
+++ b/config/gthr.m4 +++ b/config/gthr.m4
@@ -12,6 +12,7 @@ AC_DEFUN([GCC_AC_THREAD_HEADER], @@ -13,6 +13,7 @@ AC_DEFUN([GCC_AC_THREAD_HEADER],
[
case $1 in case $1 in
aix) thread_header=config/rs6000/gthr-aix.h ;; aix) thread_header=config/rs6000/gthr-aix.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
dce) thread_header=config/pa/gthr-dce.h ;; dce) thread_header=config/pa/gthr-dce.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;; lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;; mipssde) thread_header=config/mips/gthr-mipssde.h ;;
diff --git a/gcc/config.gcc b/gcc/config.gcc diff --git a/gcc/config/i386/host-mingw32.c b/gcc/config/i386/host-mingw32.c
index 47cfce25dee..cfd8ce71123 100644 index 250fef59b55..36b2239aa5d 100644
--- a/gcc/config.gcc --- a/gcc/config/i386/host-mingw32.c
+++ b/gcc/config.gcc +++ b/gcc/config/i386/host-mingw32.c
@@ -2480,7 +2480,7 @@ powerpc-xilinx-eabi*) @@ -44,9 +44,6 @@ static size_t mingw32_gt_pch_alloc_granularity (void);
use_gcc_stdint=wrap
;; static inline void w32_error(const char*, const char*, int, const char*);
powerpc-*-eabi*)
- tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h" -/* FIXME: Is this big enough? */
+ tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/750cl.h" -static const size_t pch_VA_max_size = 128 * 1024 * 1024;
extra_options="${extra_options} rs6000/sysv4.opt" -
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm" /* Granularity for reserving address space. */
use_gcc_stdint=wrap static size_t va_granularity = 0x10000;
@@ -88,9 +85,6 @@ static void *
mingw32_gt_pch_get_address (size_t size, int)
{
void* res;
- size = (size + va_granularity - 1) & ~(va_granularity - 1);
- if (size > pch_VA_max_size)
- return NULL;
/* FIXME: We let system determine base by setting first arg to NULL.
Allocating at top of available address space avoids unnecessary
@@ -100,7 +94,7 @@ mingw32_gt_pch_get_address (size_t size, int)
If we allocate at bottom we need to reserve the address as early
as possible and at the same point in each invocation. */
- res = VirtualAlloc (NULL, pch_VA_max_size,
+ res = VirtualAlloc (NULL, size,
MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS);
if (!res)
@@ -150,7 +144,7 @@ mingw32_gt_pch_use_address (void *addr, size_t size, int fd,
/* Offset must be also be a multiple of allocation granularity for
this to work. We can't change the offset. */
- if ((offset & (va_granularity - 1)) != 0 || size > pch_VA_max_size)
+ if ((offset & (va_granularity - 1)) != 0)
return -1;
diff --git a/gcc/config/newlib-stdint.h b/gcc/config/newlib-stdint.h diff --git a/gcc/config/newlib-stdint.h b/gcc/config/newlib-stdint.h
index f46e797d610..fd39e64c38d 100644 index 2e086f16de9..1c27c6467bc 100644
--- a/gcc/config/newlib-stdint.h --- a/gcc/config/newlib-stdint.h
+++ b/gcc/config/newlib-stdint.h +++ b/gcc/config/newlib-stdint.h
@@ -25,7 +25,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see @@ -25,7 +25,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -37,18 +66,18 @@ index f46e797d610..fd39e64c38d 100644
#define SIG_ATOMIC_TYPE "int" #define SIG_ATOMIC_TYPE "int"
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index b83b304e3eb..b85359edcfc 100644 index 1adc371d70f..a7e1220981c 100644
--- a/gcc/config/rs6000/rs6000.h --- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h
@@ -212,6 +212,7 @@ @@ -196,6 +196,7 @@ ASM_OPT_ANY
{ "asm_cpu_476", ASM_CPU_476_SPEC }, \
SUBTARGET_EXTRA_SPECS
+#if 0
/* -mcpu=native handling only makes sense with compiler running on /* -mcpu=native handling only makes sense with compiler running on
an PowerPC chip. If changing this condition, also change an PowerPC chip. If changing this condition, also change
the condition in driver-rs6000.c. */ the condition in driver-rs6000.c. */
@@ -226,6 +227,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); +#if 0
#if defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX)
/* In driver-rs6000.c. */
extern const char *host_detect_local_cpu (int argc, const char **argv);
@@ -207,6 +208,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
#else #else
#define ASM_CPU_NATIVE_SPEC "%(asm_default)" #define ASM_CPU_NATIVE_SPEC "%(asm_default)"
#endif #endif
@@ -57,42 +86,11 @@ index b83b304e3eb..b85359edcfc 100644
#ifndef CC1_CPU_SPEC #ifndef CC1_CPU_SPEC
#ifdef HAVE_LOCAL_CPU_DETECT #ifdef HAVE_LOCAL_CPU_DETECT
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 4dbe8e5d133..3e2095e5b64 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5631,19 +5631,19 @@
tmp = gen_reg_rtx (DImode);
emit_insn (gen_fctiwz_<mode> (tmp, src));
- if (MEM_P (dest))
+ if (TARGET_POWERPC64 && (TARGET_MFPGPR || TARGET_DIRECT_MOVE))
{
- dest = rs6000_address_for_fpconvert (dest);
- emit_insn (gen_stfiwx (dest, tmp));
+ dest = gen_lowpart (DImode, dest);
+ emit_move_insn (dest, tmp);
DONE;
}
- else if (TARGET_POWERPC64 && (TARGET_MFPGPR || TARGET_DIRECT_MOVE))
+ else if (MEM_P (dest) && MEM_ALIGN (dest) >= 32)
{
- dest = gen_lowpart (DImode, dest);
- emit_move_insn (dest, tmp);
+ dest = rs6000_address_for_fpconvert (dest);
+ emit_insn (gen_stfiwx (dest, tmp));
DONE;
}
- else
+ else
{
rtx stack = rs6000_allocate_stack_temp (SImode, false, true);
emit_insn (gen_stfiwx (stack, tmp));
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index bb19d0dcd41..74d1e474432 100644 index 9ade72114e9..cede792d3a7 100644
--- a/gcc/config/rs6000/sysv4.h --- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h
@@ -565,7 +565,11 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -590,7 +590,11 @@ GNU_USER_TARGET_CC1_SPEC
/* Default starting address if specified. */ /* Default starting address if specified. */
#define LINK_START_SPEC "\ #define LINK_START_SPEC "\
@@ -105,7 +103,7 @@ index bb19d0dcd41..74d1e474432 100644
myellowknife : %(link_start_yellowknife) ; \ myellowknife : %(link_start_yellowknife) ; \
mmvme : %(link_start_mvme) ; \ mmvme : %(link_start_mvme) ; \
msim : %(link_start_sim) ; \ msim : %(link_start_sim) ; \
@@ -596,7 +600,8 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -621,7 +625,8 @@ GNU_USER_TARGET_CC1_SPEC
/* Any specific OS flags. */ /* Any specific OS flags. */
#define LINK_OS_SPEC "\ #define LINK_OS_SPEC "\
@@ -115,7 +113,7 @@ index bb19d0dcd41..74d1e474432 100644
myellowknife : %(link_os_yellowknife) ; \ myellowknife : %(link_os_yellowknife) ; \
mmvme : %(link_os_mvme) ; \ mmvme : %(link_os_mvme) ; \
msim : %(link_os_sim) ; \ msim : %(link_os_sim) ; \
@@ -614,7 +619,10 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -636,7 +641,10 @@ GNU_USER_TARGET_CC1_SPEC
/* Override rs6000.h definition. */ /* Override rs6000.h definition. */
#undef CPP_SPEC #undef CPP_SPEC
#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \
@@ -127,7 +125,7 @@ index bb19d0dcd41..74d1e474432 100644
myellowknife : %(cpp_os_yellowknife) ; \ myellowknife : %(cpp_os_yellowknife) ; \
mmvme : %(cpp_os_mvme) ; \ mmvme : %(cpp_os_mvme) ; \
msim : %(cpp_os_sim) ; \ msim : %(cpp_os_sim) ; \
@@ -628,7 +636,10 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -650,7 +658,10 @@ GNU_USER_TARGET_CC1_SPEC
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC "\ #define STARTFILE_SPEC "\
@@ -139,7 +137,7 @@ index bb19d0dcd41..74d1e474432 100644
myellowknife : %(startfile_yellowknife) ; \ myellowknife : %(startfile_yellowknife) ; \
mmvme : %(startfile_mvme) ; \ mmvme : %(startfile_mvme) ; \
msim : %(startfile_sim) ; \ msim : %(startfile_sim) ; \
@@ -642,7 +653,8 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -664,7 +675,8 @@ GNU_USER_TARGET_CC1_SPEC
#undef LIB_SPEC #undef LIB_SPEC
#define LIB_SPEC "\ #define LIB_SPEC "\
@@ -149,7 +147,7 @@ index bb19d0dcd41..74d1e474432 100644
myellowknife : %(lib_yellowknife) ; \ myellowknife : %(lib_yellowknife) ; \
mmvme : %(lib_mvme) ; \ mmvme : %(lib_mvme) ; \
msim : %(lib_sim) ; \ msim : %(lib_sim) ; \
@@ -652,11 +664,12 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -674,11 +686,12 @@ GNU_USER_TARGET_CC1_SPEC
mcall-openbsd: %(lib_openbsd) ; \ mcall-openbsd: %(lib_openbsd) ; \
: %(lib_default) }" : %(lib_default) }"
@@ -164,7 +162,7 @@ index bb19d0dcd41..74d1e474432 100644
myellowknife : %(endfile_yellowknife) ; \ myellowknife : %(endfile_yellowknife) ; \
mmvme : %(endfile_mvme) ; \ mmvme : %(endfile_mvme) ; \
msim : %(endfile_sim) ; \ msim : %(endfile_sim) ; \
@@ -672,16 +685,27 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -694,16 +707,27 @@ GNU_USER_TARGET_CC1_SPEC
/* Motorola ADS support. */ /* Motorola ADS support. */
#define LIB_ADS_SPEC "--start-group -lads -lc --end-group" #define LIB_ADS_SPEC "--start-group -lads -lc --end-group"
@@ -192,7 +190,7 @@ index bb19d0dcd41..74d1e474432 100644
/* Motorola Yellowknife support. */ /* Motorola Yellowknife support. */
#define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group" #define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group"
@@ -882,6 +906,7 @@ ncrtn.o%s" @@ -851,6 +875,7 @@ ncrtn.o%s"
#undef SUBTARGET_EXTRA_SPECS #undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \ #define SUBTARGET_EXTRA_SPECS \
{ "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \ { "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \
@@ -200,7 +198,7 @@ index bb19d0dcd41..74d1e474432 100644
{ "lib_ads", LIB_ADS_SPEC }, \ { "lib_ads", LIB_ADS_SPEC }, \
{ "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \
{ "lib_mvme", LIB_MVME_SPEC }, \ { "lib_mvme", LIB_MVME_SPEC }, \
@@ -891,6 +916,7 @@ ncrtn.o%s" @@ -860,6 +885,7 @@ ncrtn.o%s"
{ "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_netbsd", LIB_NETBSD_SPEC }, \
{ "lib_openbsd", LIB_OPENBSD_SPEC }, \ { "lib_openbsd", LIB_OPENBSD_SPEC }, \
{ "lib_default", LIB_DEFAULT_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \
@@ -208,7 +206,7 @@ index bb19d0dcd41..74d1e474432 100644
{ "startfile_ads", STARTFILE_ADS_SPEC }, \ { "startfile_ads", STARTFILE_ADS_SPEC }, \
{ "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \
{ "startfile_mvme", STARTFILE_MVME_SPEC }, \ { "startfile_mvme", STARTFILE_MVME_SPEC }, \
@@ -900,6 +926,7 @@ ncrtn.o%s" @@ -869,6 +895,7 @@ ncrtn.o%s"
{ "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \
{ "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \ { "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \
{ "startfile_default", STARTFILE_DEFAULT_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \
@@ -216,7 +214,7 @@ index bb19d0dcd41..74d1e474432 100644
{ "endfile_ads", ENDFILE_ADS_SPEC }, \ { "endfile_ads", ENDFILE_ADS_SPEC }, \
{ "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \
{ "endfile_mvme", ENDFILE_MVME_SPEC }, \ { "endfile_mvme", ENDFILE_MVME_SPEC }, \
@@ -911,7 +938,11 @@ ncrtn.o%s" @@ -880,7 +907,11 @@ ncrtn.o%s"
{ "endfile_default", ENDFILE_DEFAULT_SPEC }, \ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \
{ "link_shlib", LINK_SHLIB_SPEC }, \ { "link_shlib", LINK_SHLIB_SPEC }, \
{ "link_start", LINK_START_SPEC }, \ { "link_start", LINK_START_SPEC }, \
@@ -228,7 +226,7 @@ index bb19d0dcd41..74d1e474432 100644
{ "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \ { "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \
{ "link_start_mvme", LINK_START_MVME_SPEC }, \ { "link_start_mvme", LINK_START_MVME_SPEC }, \
{ "link_start_sim", LINK_START_SIM_SPEC }, \ { "link_start_sim", LINK_START_SIM_SPEC }, \
@@ -921,6 +952,7 @@ ncrtn.o%s" @@ -890,6 +921,7 @@ ncrtn.o%s"
{ "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \ { "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \
{ "link_start_default", LINK_START_DEFAULT_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \
{ "link_os", LINK_OS_SPEC }, \ { "link_os", LINK_OS_SPEC }, \
@@ -236,7 +234,7 @@ index bb19d0dcd41..74d1e474432 100644
{ "link_os_ads", LINK_OS_ADS_SPEC }, \ { "link_os_ads", LINK_OS_ADS_SPEC }, \
{ "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \ { "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \
{ "link_os_mvme", LINK_OS_MVME_SPEC }, \ { "link_os_mvme", LINK_OS_MVME_SPEC }, \
@@ -932,6 +964,9 @@ ncrtn.o%s" @@ -901,6 +933,9 @@ ncrtn.o%s"
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
{ "link_secure_plt", LINK_SECURE_PLT_SPEC }, \ { "link_secure_plt", LINK_SECURE_PLT_SPEC }, \
@@ -247,7 +245,7 @@ index bb19d0dcd41..74d1e474432 100644
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt
index 34fea0ddd08..084a8ae435e 100644 index b49ba261f3c..4eda763dfca 100644
--- a/gcc/config/rs6000/sysv4.opt --- a/gcc/config/rs6000/sysv4.opt
+++ b/gcc/config/rs6000/sysv4.opt +++ b/gcc/config/rs6000/sysv4.opt
@@ -124,6 +124,26 @@ mads @@ -124,6 +124,26 @@ mads
@@ -278,10 +276,10 @@ index 34fea0ddd08..084a8ae435e 100644
Target RejectNegative Target RejectNegative
Link with libyk.a, libc.a and crt0.o. Link with libyk.a, libc.a and crt0.o.
diff --git a/gcc/configure b/gcc/configure diff --git a/gcc/configure b/gcc/configure
index 97ba7d7d69c..c0e468546ed 100755 index cd3d9516fce..fcb4b206b60 100755
--- a/gcc/configure --- a/gcc/configure
+++ b/gcc/configure +++ b/gcc/configure
@@ -11693,7 +11693,7 @@ case ${enable_threads} in @@ -12208,7 +12208,7 @@ case ${enable_threads} in
# default # default
target_thread_file='single' target_thread_file='single'
;; ;;
@@ -291,10 +289,10 @@ index 97ba7d7d69c..c0e468546ed 100755
target_thread_file=${enable_threads} target_thread_file=${enable_threads}
;; ;;
diff --git a/gcc/configure.ac b/gcc/configure.ac diff --git a/gcc/configure.ac b/gcc/configure.ac
index d6f2d5b2ed0..15edac2ce9b 100644 index 0de3b4bf97b..739aa4ae3da 100644
--- a/gcc/configure.ac --- a/gcc/configure.ac
+++ b/gcc/configure.ac +++ b/gcc/configure.ac
@@ -1611,7 +1611,7 @@ case ${enable_threads} in @@ -1800,7 +1800,7 @@ case ${enable_threads} in
# default # default
target_thread_file='single' target_thread_file='single'
;; ;;
@@ -304,7 +302,7 @@ index d6f2d5b2ed0..15edac2ce9b 100644
target_thread_file=${enable_threads} target_thread_file=${enable_threads}
;; ;;
diff --git a/libgcc/config/rs6000/crtrestvr.S b/libgcc/config/rs6000/crtrestvr.S diff --git a/libgcc/config/rs6000/crtrestvr.S b/libgcc/config/rs6000/crtrestvr.S
index ba2b2623301..8d866107142 100644 index 260fe4d1af6..664808cd19c 100644
--- a/libgcc/config/rs6000/crtrestvr.S --- a/libgcc/config/rs6000/crtrestvr.S
+++ b/libgcc/config/rs6000/crtrestvr.S +++ b/libgcc/config/rs6000/crtrestvr.S
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
@@ -322,7 +320,7 @@ index ba2b2623301..8d866107142 100644
#endif #endif
+#endif +#endif
diff --git a/libgcc/config/rs6000/crtsavevr.S b/libgcc/config/rs6000/crtsavevr.S diff --git a/libgcc/config/rs6000/crtsavevr.S b/libgcc/config/rs6000/crtsavevr.S
index 077e33f34d5..b7be68b710f 100644 index 7e1d5c5df98..2c62480d165 100644
--- a/libgcc/config/rs6000/crtsavevr.S --- a/libgcc/config/rs6000/crtsavevr.S
+++ b/libgcc/config/rs6000/crtsavevr.S +++ b/libgcc/config/rs6000/crtsavevr.S
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
@@ -341,10 +339,10 @@ index 077e33f34d5..b7be68b710f 100644
+#endif +#endif
diff --git a/libgcc/config/rs6000/gthr-dkp.c b/libgcc/config/rs6000/gthr-dkp.c diff --git a/libgcc/config/rs6000/gthr-dkp.c b/libgcc/config/rs6000/gthr-dkp.c
new file mode 100644 new file mode 100644
index 00000000000..94d6ba94ec0 index 00000000000..26180aa7f36
--- /dev/null --- /dev/null
+++ b/libgcc/config/rs6000/gthr-dkp.c +++ b/libgcc/config/rs6000/gthr-dkp.c
@@ -0,0 +1,349 @@ @@ -0,0 +1,319 @@
+/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Threads compatibility routines for libgcc2 and libobjc. */
+/* Compile this one with gcc. */ +/* Compile this one with gcc. */
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
@@ -370,336 +368,306 @@ index 00000000000..94d6ba94ec0
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */ +<http://www.gnu.org/licenses/>. */
+ +
+#define _BUILDING_LIBGCC
+#include "gthr-dkp.h" +#include "gthr-dkp.h"
+#include <stddef.h> +#include <stddef.h>
+ +
+__gthread_impl_t __gthread_impl = {
+ NULL, // active
+ NULL, // create
+ NULL, // join
+ NULL, // detach
+ NULL, // equal
+ NULL, // self
+ NULL, // yield
+ NULL, // once
+ NULL, // key_create
+ NULL, // key_delete
+ NULL, // getspecific
+ NULL, // setspecific
+ NULL, // mutex_init_function
+ NULL, // mutex_destroy
+ NULL, // mutex_lock
+ NULL, // mutex_trylock
+ NULL, // mutex_unlock
+ NULL, // recursive_mutex_init_function
+ NULL, // recursive_mutex_lock
+ NULL, // recursive_mutex_trylock
+ NULL, // recursive_mutex_unlock
+ NULL, // recursive_mutex_destroy
+ NULL, // cond_init_function
+ NULL, // cond_broadcast
+ NULL, // cond_signal
+ NULL, // cond_wait
+ NULL, // cond_timedwait
+ NULL, // cond_wait_recursive
+ NULL, // cond_destroy
+};
+ +
+int +int
+__gthread_active_p (void) +__gthread_active_p (void)
+{ +{
+ if (!__gthread_impl.active) { + if (!__has_gthr_impl(active)) {
+ return 0; + return 0;
+ } + }
+ +
+ return __gthread_impl.active(); + return __gthr_impl_active();
+} +}
+ +
+int +int
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
+ void *__args) + void *__args)
+{ +{
+ if (!__gthread_impl.create) { + if (!__has_gthr_impl(create)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.create(__threadid, __func, __args); + return __gthr_impl_create(__threadid, __func, __args);
+} +}
+ +
+int +int
+__gthread_join (__gthread_t __threadid, void **__value_ptr) +__gthread_join (__gthread_t __threadid, void **__value_ptr)
+{ +{
+ if (!__gthread_impl.join) { + if (!__has_gthr_impl(join)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.join(__threadid, __value_ptr); + return __gthr_impl_join(__threadid, __value_ptr);
+} +}
+ +
+int +int
+__gthread_detach (__gthread_t __threadid) +__gthread_detach (__gthread_t __threadid)
+{ +{
+ if (!__gthread_impl.detach) { + if (!__has_gthr_impl(detach)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.detach(__threadid); + return __gthr_impl_detach(__threadid);
+} +}
+ +
+int +int
+__gthread_equal (__gthread_t __t1, __gthread_t __t2) +__gthread_equal (__gthread_t __t1, __gthread_t __t2)
+{ +{
+ if (!__gthread_impl.equal) { + if (!__has_gthr_impl(equal)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.equal(__t1, __t2); + return __gthr_impl_equal(__t1, __t2);
+} +}
+ +
+__gthread_t +__gthread_t
+__gthread_self (void) +__gthread_self (void)
+{ +{
+ if (!__gthread_impl.self) { + if (!__has_gthr_impl(self)) {
+ __gthread_t result = { 0 }; + __gthread_t result = { 0 };
+ return result; + return result;
+ } + }
+ +
+ return __gthread_impl.self(); + return __gthr_impl_self();
+} +}
+ +
+int +int
+__gthread_yield (void) +__gthread_yield (void)
+{ +{
+ if (!__gthread_impl.yield) { + if (!__has_gthr_impl(yield)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.yield(); + return __gthr_impl_yield();
+} +}
+ +
+int +int
+__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +__gthread_once (__gthread_once_t *__once, void (*__func) (void))
+{ +{
+ if (!__gthread_impl.once) { + if (!__has_gthr_impl(once)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.once(__once, __func); + return __gthr_impl_once(__once, __func);
+} +}
+ +
+int +int
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
+{ +{
+ if (!__gthread_impl.key_create) { + if (!__has_gthr_impl(key_create)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.key_create(__key, __dtor); + return __gthr_impl_key_create(__key, __dtor);
+} +}
+ +
+int +int
+__gthread_key_delete (__gthread_key_t __key) +__gthread_key_delete (__gthread_key_t __key)
+{ +{
+ if (!__gthread_impl.key_delete) { + if (!__has_gthr_impl(key_delete)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.key_delete(__key); + return __gthr_impl_key_delete(__key);
+} +}
+ +
+void * +void *
+__gthread_getspecific (__gthread_key_t __key) +__gthread_getspecific (__gthread_key_t __key)
+{ +{
+ if (!__gthread_impl.getspecific) { + if (!__has_gthr_impl(getspecific)) {
+ return NULL; + return NULL;
+ } + }
+ +
+ return __gthread_impl.getspecific(__key); + return __gthr_impl_getspecific(__key);
+} +}
+ +
+int +int
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
+{ +{
+ if (!__gthread_impl.setspecific) { + if (!__has_gthr_impl(setspecific)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.setspecific(__key, __ptr); + return __gthr_impl_setspecific(__key, __ptr);
+} +}
+ +
+void +void
+__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +__gthread_mutex_init_function (__gthread_mutex_t *__mutex)
+{ +{
+ if (__gthread_impl.mutex_init_function) { + if (__has_gthr_impl(mutex_init_function)) {
+ __gthread_impl.mutex_init_function(__mutex); + __gthr_impl_mutex_init_function(__mutex);
+ } + }
+} +}
+ +
+int +int
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_destroy) { + if (!__has_gthr_impl(mutex_destroy)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_destroy(__mutex); + return __gthr_impl_mutex_destroy(__mutex);
+} +}
+ +
+int +int
+__gthread_mutex_lock (__gthread_mutex_t *__mutex) +__gthread_mutex_lock (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_lock) { + if (!__has_gthr_impl(mutex_lock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_lock(__mutex); + return __gthr_impl_mutex_lock(__mutex);
+} +}
+ +
+int +int
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_trylock) { + if (!__has_gthr_impl(mutex_trylock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_trylock(__mutex); + return __gthr_impl_mutex_trylock(__mutex);
+} +}
+ +
+int +int
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_unlock) { + if (!__has_gthr_impl(mutex_unlock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_unlock(__mutex); + return __gthr_impl_mutex_unlock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_init_function) { + if (!__has_gthr_impl(recursive_mutex_init_function)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_init_function(__mutex); + return __gthr_impl_recursive_mutex_init_function(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_lock) { + if (!__has_gthr_impl(recursive_mutex_lock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_lock(__mutex); + return __gthr_impl_recursive_mutex_lock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_trylock) { + if (!__has_gthr_impl(recursive_mutex_trylock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_trylock(__mutex); + return __gthr_impl_recursive_mutex_trylock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_unlock) { + if (!__has_gthr_impl(recursive_mutex_unlock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_unlock(__mutex); + return __gthr_impl_recursive_mutex_unlock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_destroy) { + if (!__has_gthr_impl(recursive_mutex_destroy)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_destroy(__mutex); + return __gthr_impl_recursive_mutex_destroy(__mutex);
+} +}
+ +
+void +void
+__gthread_cond_init_function (__gthread_cond_t *__cond) +__gthread_cond_init_function (__gthread_cond_t *__cond)
+{ +{
+ if (__gthread_impl.cond_init_function) { + if (__has_gthr_impl(cond_init_function)) {
+ __gthread_impl.cond_init_function(__cond); + __gthr_impl_cond_init_function(__cond);
+ } + }
+} +}
+ +
+int +int
+__gthread_cond_broadcast (__gthread_cond_t *__cond) +__gthread_cond_broadcast (__gthread_cond_t *__cond)
+{ +{
+ if (!__gthread_impl.cond_broadcast) { + if (!__has_gthr_impl(cond_broadcast)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_broadcast(__cond); + return __gthr_impl_cond_broadcast(__cond);
+} +}
+ +
+int +int
+__gthread_cond_signal (__gthread_cond_t *__cond) +__gthread_cond_signal (__gthread_cond_t *__cond)
+{ +{
+ if (!__gthread_impl.cond_signal) { + if (!__has_gthr_impl(cond_signal)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_signal(__cond); + return __gthr_impl_cond_signal(__cond);
+} +}
+ +
+int +int
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.cond_wait) { + if (!__has_gthr_impl(cond_wait)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_wait(__cond, __mutex); + return __gthr_impl_cond_wait(__cond, __mutex);
+} +}
+ +
+int +int
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout) + const __gthread_time_t *__abs_timeout)
+{ +{
+ if (!__gthread_impl.cond_timedwait) { + if (!__has_gthr_impl(cond_timedwait)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_timedwait(__cond, __mutex, __abs_timeout); + return __gthr_impl_cond_timedwait(__cond, __mutex, __abs_timeout);
+} +}
+ +
+int +int
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond, +__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex) + __gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.cond_wait_recursive) { + if (!__has_gthr_impl(cond_wait_recursive)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_wait_recursive(__cond, __mutex); + return __gthr_impl_cond_wait_recursive(__cond, __mutex);
+} +}
+ +
+int +int
+__gthread_cond_destroy (__gthread_cond_t* __cond) +__gthread_cond_destroy (__gthread_cond_t* __cond)
+{ +{
+ if (!__gthread_impl.cond_destroy) { + if (!__has_gthr_impl(cond_destroy)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_destroy(__cond); + return __gthr_impl_cond_destroy(__cond);
+} +}
diff --git a/libgcc/config/rs6000/gthr-dkp.h b/libgcc/config/rs6000/gthr-dkp.h diff --git a/libgcc/config/rs6000/gthr-dkp.h b/libgcc/config/rs6000/gthr-dkp.h
new file mode 100644 new file mode 100644
index 00000000000..281c19d2a60 index 00000000000..72ecf82ab83
--- /dev/null --- /dev/null
+++ b/libgcc/config/rs6000/gthr-dkp.h +++ b/libgcc/config/rs6000/gthr-dkp.h
@@ -0,0 +1,185 @@ @@ -0,0 +1,187 @@
+/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Threads compatibility routines for libgcc2 and libobjc. */
+/* Compile this one with gcc. */ +/* Compile this one with gcc. */
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
@@ -753,42 +721,44 @@ index 00000000000..281c19d2a60
+#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
+ +
+typedef struct { +#ifdef _BUILDING_LIBGCC
+ int (*active) (void); +#define __GTHR_IMPL(_name) __attribute__((weak)) __gthr_impl_##_name
+ int (*create) (__gthread_t *__threadid, void *(*__func) (void*), +#define __has_gthr_impl(_name) (&__gthr_impl_##_name)
+ void *__args); +#else
+ int (*join) (__gthread_t __threadid, void **__value_ptr); +#define __GTHR_IMPL(_name) __gthr_impl_##_name
+ int (*detach) (__gthread_t __threadid); +#endif
+ int (*equal) (__gthread_t __t1, __gthread_t __t2);
+ __gthread_t (*self) (void);
+ int (*yield) (void);
+ int (*once) (__gthread_once_t *__once, void (*__func) (void));
+ int (*key_create) (__gthread_key_t *__key, void (*__dtor) (void *));
+ int (*key_delete) (__gthread_key_t __key);
+ void * (*getspecific) (__gthread_key_t __key);
+ int (*setspecific) (__gthread_key_t __key, const void *__ptr);
+ void (*mutex_init_function) (__gthread_mutex_t *__mutex);
+ int (*mutex_destroy) (__gthread_mutex_t *__mutex);
+ int (*mutex_lock) (__gthread_mutex_t *__mutex);
+ int (*mutex_trylock) (__gthread_mutex_t *__mutex);
+ int (*mutex_unlock) (__gthread_mutex_t *__mutex);
+ int (*recursive_mutex_init_function) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_lock) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_trylock) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_unlock) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_destroy) (__gthread_recursive_mutex_t *__mutex);
+ void (*cond_init_function) (__gthread_cond_t *__cond);
+ int (*cond_broadcast) (__gthread_cond_t *__cond);
+ int (*cond_signal) (__gthread_cond_t *__cond);
+ int (*cond_wait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex);
+ int (*cond_timedwait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout);
+ int (*cond_wait_recursive) (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex);
+ int (*cond_destroy) (__gthread_cond_t* __cond);
+} __gthread_impl_t;
+ +
+extern __gthread_impl_t __gthread_impl; +int __GTHR_IMPL(active) (void);
+int __GTHR_IMPL(create) (__gthread_t *__threadid, void *(*__func) (void*), void *__args);
+int __GTHR_IMPL(join) (__gthread_t __threadid, void **__value_ptr);
+int __GTHR_IMPL(detach) (__gthread_t __threadid);
+int __GTHR_IMPL(equal) (__gthread_t __t1, __gthread_t __t2);
+__gthread_t __GTHR_IMPL(self) (void);
+int __GTHR_IMPL(yield) (void);
+int __GTHR_IMPL(once) (__gthread_once_t *__once, void (*__func) (void));
+int __GTHR_IMPL(key_create) (__gthread_key_t *__key, void (*__dtor) (void *));
+int __GTHR_IMPL(key_delete) (__gthread_key_t __key);
+void * __GTHR_IMPL(getspecific) (__gthread_key_t __key);
+int __GTHR_IMPL(setspecific) (__gthread_key_t __key, const void *__ptr);
+void __GTHR_IMPL(mutex_init_function) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_destroy) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_lock) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_trylock) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_unlock) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_init_function) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_lock) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_trylock) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_unlock) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_destroy) (__gthread_recursive_mutex_t *__mutex);
+void __GTHR_IMPL(cond_init_function) (__gthread_cond_t *__cond);
+int __GTHR_IMPL(cond_broadcast) (__gthread_cond_t *__cond);
+int __GTHR_IMPL(cond_signal) (__gthread_cond_t *__cond);
+int __GTHR_IMPL(cond_wait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex);
+int __GTHR_IMPL(cond_timedwait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout);
+int __GTHR_IMPL(cond_wait_recursive) (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(cond_destroy) (__gthread_cond_t* __cond);
+ +
+int +int
+__gthread_active_p (void); +__gthread_active_p (void);
@@ -896,38 +866,26 @@ index fb812d3801f..7f6669d530f 100644
# This can't end up in shared libgcc # This can't end up in shared libgcc
diff --git a/libgcc/configure b/libgcc/configure diff --git a/libgcc/configure b/libgcc/configure
index b2f3f870844..c6f93f8b3ac 100644 index 26bf75789e0..1f663d2cfb0 100755
--- a/libgcc/configure --- a/libgcc/configure
+++ b/libgcc/configure +++ b/libgcc/configure
@@ -5442,6 +5442,7 @@ tm_file="${tm_file_}" @@ -5640,6 +5640,7 @@ tm_file="${tm_file_}"
case $target_thread_file in case $target_thread_file in
aix) thread_header=config/rs6000/gthr-aix.h ;; aix) thread_header=config/rs6000/gthr-aix.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
dce) thread_header=config/pa/gthr-dce.h ;; dce) thread_header=config/pa/gthr-dce.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;; lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;; mipssde) thread_header=config/mips/gthr-mipssde.h ;;
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 5e894455e16..f2347455de0 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -47,6 +47,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* 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/libstdc++-v3/configure b/libstdc++-v3/configure diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 61457e940ec..a7c63407ced 100755 index 9f9c5a2419a..c9bb6c548be 100755
--- a/libstdc++-v3/configure --- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure +++ b/libstdc++-v3/configure
@@ -15382,6 +15382,7 @@ $as_echo "$target_thread_file" >&6; } @@ -15637,6 +15637,7 @@ $as_echo "$target_thread_file" >&6; }
case $target_thread_file in case $target_thread_file in
aix) thread_header=config/rs6000/gthr-aix.h ;; aix) thread_header=config/rs6000/gthr-aix.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
dce) thread_header=config/pa/gthr-dce.h ;; dce) thread_header=config/pa/gthr-dce.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;; lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;; mipssde) thread_header=config/mips/gthr-mipssde.h ;;

View File

@@ -46,7 +46,7 @@ index f38d5298e..db6b33ab8 100644
AC_SUBST(AS) AC_SUBST(AS)
diff --git a/libgloss/libsysbase/Makefile.in b/libgloss/libsysbase/Makefile.in diff --git a/libgloss/libsysbase/Makefile.in b/libgloss/libsysbase/Makefile.in
new file mode 100644 new file mode 100644
index 000000000..183f9acc7 index 000000000..bd69599a8
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/Makefile.in +++ b/libgloss/libsysbase/Makefile.in
@@ -0,0 +1,148 @@ @@ -0,0 +1,148 @@
@@ -121,8 +121,8 @@ index 000000000..183f9acc7
+ isatty.o kill.o link.o lseek.o lstat.o nanosleep.o open.o read.o sbrk.o sleep.o stat.o usleep.o times.o \ + isatty.o kill.o link.o lseek.o lstat.o nanosleep.o open.o read.o sbrk.o sleep.o stat.o usleep.o times.o \
+ unlink.o wait.o write.o _exit.o malloc_vars.o \ + unlink.o wait.o write.o _exit.o malloc_vars.o \
+ chdir.o mkdir.o rename.o build_argv.o statvfs.o \ + chdir.o mkdir.o rename.o build_argv.o statvfs.o \
+ flock.o syscall_support.o handle_manager.o truncate.o ftruncate.o dirent.o fsync.o \ + flock.o handle_manager.o truncate.o ftruncate.o dirent.o fsync.o \
+ fchmod.o chmod.o rmdir.o utime.o scandir.o + fchmod.o chmod.o rmdir.o utime.o scandir.o syscall_support.o
+ +
+# Object files specific to particular targets. +# Object files specific to particular targets.
+EVALOBJS = ${OBJS} +EVALOBJS = ${OBJS}
@@ -143,10 +143,10 @@ index 000000000..183f9acc7
+AR_FLAGS = qc +AR_FLAGS = qc
+ +
+.c.o: +.c.o:
+ $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< + $(CC) $(CFLAGS_FOR_TARGET) -D_BUILDING_LIBSYSBASE -O2 $(INCLUDES) -c $(CFLAGS) $<
+ +
+.C.o: +.C.o:
+ $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< + $(CC) $(CFLAGS_FOR_TARGET) -D_BUILDING_LIBSYSBASE -O2 $(INCLUDES) -c $(CFLAGS) $<
+.s.o: +.s.o:
+ $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $<
+ +
@@ -200,7 +200,7 @@ index 000000000..183f9acc7
+ $(SHELL) config.status --recheck + $(SHELL) config.status --recheck
diff --git a/libgloss/libsysbase/_exit.c b/libgloss/libsysbase/_exit.c diff --git a/libgloss/libsysbase/_exit.c b/libgloss/libsysbase/_exit.c
new file mode 100644 new file mode 100644
index 000000000..e5cb5a9ed index 000000000..6effb1105
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/_exit.c +++ b/libgloss/libsysbase/_exit.c
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
@@ -215,8 +215,8 @@ index 000000000..e5cb5a9ed
+void _exit(int rc) +void _exit(int rc)
+{ +{
+ +
+ if ( __syscalls.exit ) { + if ( __has_syscall(exit) ) {
+ __syscalls.exit(rc); + __syscall_exit(rc);
+ } + }
+ +
+ while(1); + while(1);
@@ -903,7 +903,7 @@ index 000000000..3668b5801
+ +
diff --git a/libgloss/libsysbase/clocks.c b/libgloss/libsysbase/clocks.c diff --git a/libgloss/libsysbase/clocks.c b/libgloss/libsysbase/clocks.c
new file mode 100644 new file mode 100644
index 000000000..01cfee469 index 000000000..b36b5c079
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/clocks.c +++ b/libgloss/libsysbase/clocks.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
@@ -913,8 +913,8 @@ index 000000000..01cfee469
+ +
+int clock_gettime(clockid_t clock_id, struct timespec *tp) +int clock_gettime(clockid_t clock_id, struct timespec *tp)
+{ +{
+ if ( __syscalls.clock_gettime ) { + if ( __has_syscall(clock_gettime) ) {
+ return __syscalls.clock_gettime(clock_id, tp); + return __syscall_clock_gettime(clock_id, tp);
+ } else { + } else {
+ errno = ENOSYS; + errno = ENOSYS;
+ return -1; + return -1;
@@ -923,8 +923,8 @@ index 000000000..01cfee469
+ +
+int clock_settime(clockid_t clock_id, const struct timespec *tp) +int clock_settime(clockid_t clock_id, const struct timespec *tp)
+{ +{
+ if ( __syscalls.clock_settime ) { + if ( __has_syscall(clock_settime) ) {
+ return __syscalls.clock_settime(clock_id, tp); + return __syscall_clock_settime(clock_id, tp);
+ } else { + } else {
+ errno = ENOSYS; + errno = ENOSYS;
+ return -1; + return -1;
@@ -933,8 +933,8 @@ index 000000000..01cfee469
+ +
+int clock_getres (clockid_t clock_id, struct timespec *res) +int clock_getres (clockid_t clock_id, struct timespec *res)
+{ +{
+ if ( __syscalls.clock_getres ) { + if ( __has_syscall(clock_getres) ) {
+ return __syscalls.clock_getres(clock_id, res); + return __syscall_clock_getres(clock_id, res);
+ } else { + } else {
+ errno = ENOSYS; + errno = ENOSYS;
+ return -1; + return -1;
@@ -5938,7 +5938,7 @@ index 000000000..ec3b84037
+ +
diff --git a/libgloss/libsysbase/gettod.c b/libgloss/libsysbase/gettod.c diff --git a/libgloss/libsysbase/gettod.c b/libgloss/libsysbase/gettod.c
new file mode 100644 new file mode 100644
index 000000000..11dc528fa index 000000000..ee8947f51
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/gettod.c +++ b/libgloss/libsysbase/gettod.c
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
@@ -5961,7 +5961,7 @@ index 000000000..11dc528fa
+ struct _reent *ptr = _REENT; + struct _reent *ptr = _REENT;
+#endif +#endif
+ +
+ if ( __syscalls.gettod_r ) return __syscalls.gettod_r(ptr, ptimeval, ptimezone); + if ( __has_syscall(gettod_r) ) return __syscall_gettod_r(ptr, ptimeval, ptimezone);
+ +
+ ptr->_errno = ENOSYS; + ptr->_errno = ENOSYS;
+ return -1; + return -1;
@@ -6518,7 +6518,7 @@ index 000000000..b4fcbd3d7
+} +}
diff --git a/libgloss/libsysbase/nanosleep.c b/libgloss/libsysbase/nanosleep.c diff --git a/libgloss/libsysbase/nanosleep.c b/libgloss/libsysbase/nanosleep.c
new file mode 100644 new file mode 100644
index 000000000..3c96fc61b index 000000000..a233b9df6
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/nanosleep.c +++ b/libgloss/libsysbase/nanosleep.c
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
@@ -6528,8 +6528,8 @@ index 000000000..3c96fc61b
+ +
+int nanosleep(const struct timespec *req, struct timespec *rem) +int nanosleep(const struct timespec *req, struct timespec *rem)
+{ +{
+ if ( __syscalls.nanosleep ) { + if ( __has_syscall(nanosleep) ) {
+ return __syscalls.nanosleep(req, rem); + return __syscall_nanosleep(req, rem);
+ } else { + } else {
+ *rem = *req; + *rem = *req;
+ errno = ENOSYS; + errno = ENOSYS;
@@ -6711,7 +6711,7 @@ index 000000000..2692a2997
+} +}
diff --git a/libgloss/libsysbase/sbrk.c b/libgloss/libsysbase/sbrk.c diff --git a/libgloss/libsysbase/sbrk.c b/libgloss/libsysbase/sbrk.c
new file mode 100644 new file mode 100644
index 000000000..e2bdb9edc index 000000000..83d922d85
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/sbrk.c +++ b/libgloss/libsysbase/sbrk.c
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
@@ -6731,8 +6731,8 @@ index 000000000..e2bdb9edc
+#endif +#endif
+ +
+ +
+ if ( __syscalls.sbrk_r ) { + if ( __has_syscall(sbrk_r) ) {
+ return __syscalls.sbrk_r(ptr, incr); + return __syscall_sbrk_r(ptr, incr);
+ } else { + } else {
+ +
+ ptr->_errno = ENOMEM; + ptr->_errno = ENOMEM;
@@ -6922,34 +6922,16 @@ index 000000000..84e221340
+} +}
diff --git a/libgloss/libsysbase/syscall_support.c b/libgloss/libsysbase/syscall_support.c diff --git a/libgloss/libsysbase/syscall_support.c b/libgloss/libsysbase/syscall_support.c
new file mode 100644 new file mode 100644
index 000000000..f02714764 index 000000000..39e75fd0b
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/syscall_support.c +++ b/libgloss/libsysbase/syscall_support.c
@@ -0,0 +1,67 @@ @@ -0,0 +1,49 @@
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+ +
+//---------------------------------------------------------------------------------
+__syscalls_t __syscalls = {
+//---------------------------------------------------------------------------------
+ NULL, // sbrk
+ NULL, // lock_init
+ NULL, // lock_close
+ NULL, // lock_release
+ NULL, // lock_acquire
+ NULL, // malloc_lock
+ NULL, // malloc_unlock
+ NULL, // exit
+ NULL, // gettod_r
+ NULL, // clock_gettime
+ NULL, // clock_settime
+ NULL, // clock_getres
+ NULL // nanosleep
+};
+
+int __libc_lock_init(int *lock,int recursive) { +int __libc_lock_init(int *lock,int recursive) {
+ +
+ if ( __syscalls.lock_init ) { + if ( __has_syscall(lock_init) ) {
+ return __syscalls.lock_init(lock, recursive); + return __syscall_lock_init(lock, recursive);
+ } + }
+ +
+ return 0; + return 0;
@@ -6957,8 +6939,8 @@ index 000000000..f02714764
+ +
+int __libc_lock_close( int *lock ) { +int __libc_lock_close( int *lock ) {
+ +
+ if ( __syscalls.lock_close) { + if ( __has_syscall(lock_close)) {
+ return __syscalls.lock_close(lock); + return __syscall_lock_close(lock);
+ } + }
+ +
+ return 0; + return 0;
@@ -6966,8 +6948,8 @@ index 000000000..f02714764
+ +
+int __libc_lock_release( int *lock ) { +int __libc_lock_release( int *lock ) {
+ +
+ if ( __syscalls.lock_release) { + if ( __has_syscall(lock_release)) {
+ return __syscalls.lock_release(lock); + return __syscall_lock_release(lock);
+ } + }
+ +
+ return 0; + return 0;
@@ -6975,22 +6957,22 @@ index 000000000..f02714764
+ +
+int __libc_lock_acquire( int *lock ) { +int __libc_lock_acquire( int *lock ) {
+ +
+ if ( __syscalls.lock_acquire) { + if ( __has_syscall(lock_acquire)) {
+ return __syscalls.lock_acquire(lock); + return __syscall_lock_acquire(lock);
+ } + }
+ +
+ return 0; + return 0;
+} +}
+ +
+void __malloc_lock( struct _reent *ptr ) { +void __malloc_lock( struct _reent *ptr ) {
+ if ( __syscalls.malloc_lock) { + if ( __has_syscall(malloc_lock) ){
+ __syscalls.malloc_lock(ptr); + __syscall_malloc_lock(ptr);
+ } + }
+} +}
+ +
+void __malloc_unlock( struct _reent *ptr ) { +void __malloc_unlock( struct _reent *ptr ) {
+ if ( __syscalls.malloc_unlock) { + if ( __has_syscall(malloc_unlock)) {
+ __syscalls.malloc_unlock(ptr); + __syscall_malloc_unlock(ptr);
+ } + }
+} +}
diff --git a/libgloss/libsysbase/times.c b/libgloss/libsysbase/times.c diff --git a/libgloss/libsysbase/times.c b/libgloss/libsysbase/times.c
@@ -7486,10 +7468,10 @@ index 218807178..c9efd7d03 100644
#ifdef __rtems__ #ifdef __rtems__
diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h
new file mode 100644 new file mode 100644
index 000000000..8b6d8da30 index 000000000..9bec9e473
--- /dev/null --- /dev/null
+++ b/newlib/libc/include/sys/iosupport.h +++ b/newlib/libc/include/sys/iosupport.h
@@ -0,0 +1,108 @@ @@ -0,0 +1,117 @@
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+#ifndef __iosupp_h__ +#ifndef __iosupp_h__
+#define __iosupp_h__ +#define __iosupp_h__
@@ -7524,6 +7506,7 @@ index 000000000..8b6d8da30
+ void *dirStruct; + void *dirStruct;
+} DIR_ITER; +} DIR_ITER;
+ +
+
+typedef struct { +typedef struct {
+ const char *name; + const char *name;
+ size_t structSize; + size_t structSize;
@@ -7562,23 +7545,31 @@ index 000000000..8b6d8da30
+ +
+extern const devoptab_t *devoptab_list[]; +extern const devoptab_t *devoptab_list[];
+ +
+typedef struct { +#ifdef _BUILDING_LIBSYSBASE
+ void *(*sbrk_r) (struct _reent *ptr, ptrdiff_t incr); +#define __SYSCALL(_name) __attribute__((weak)) __syscall_##_name
+ int (*lock_init) (int *lock,int recursive); +#define __has_syscall(_name) (&__syscall_##_name)
+ int (*lock_close) (int *lock); +#else
+ int (*lock_release) (int *lock); +#define __SYSCALL(_name) __syscall_##_name
+ int (*lock_acquire) (int *lock); +#endif
+ void (*malloc_lock) (struct _reent *ptr);
+ void (*malloc_unlock) (struct _reent *ptr);
+ void (*exit) ( int rc );
+ int (*gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+ int (*clock_gettime)(clockid_t clock_id, struct timespec *tp);
+ int (*clock_settime)(clockid_t clock_id, const struct timespec *tp);
+ int (*clock_getres)(clockid_t clock_id, struct timespec *res);
+ int (*nanosleep)(const struct timespec *req, struct timespec *rem);
+} __syscalls_t;
+ +
+extern __syscalls_t __syscalls; +void *__SYSCALL(sbrk_r) (struct _reent *ptr, ptrdiff_t incr);
+int __SYSCALL(lock_init) (int *lock,int recursive);
+
+int __SYSCALL(lock_close) (int *lock);
+int __SYSCALL(lock_release) (int *lock);
+int __SYSCALL(lock_acquire) (int *lock);
+void __SYSCALL(malloc_lock) (struct _reent *ptr);
+void __SYSCALL(malloc_unlock) (struct _reent *ptr);
+
+void __SYSCALL(exit)(int rc);
+
+int __SYSCALL(gettod_r)(struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+int __SYSCALL(clock_gettime)(clockid_t clock_id, struct timespec *tp);
+int __SYSCALL(clock_settime)(clockid_t clock_id, const struct timespec *tp);
+int __SYSCALL(clock_getres)(clockid_t clock_id, struct timespec *res);
+int __SYSCALL(nanosleep)(const struct timespec *req, struct timespec *rem);
+
+#undef __SYSCALL
+ +
+int AddDevice( const devoptab_t* device); +int AddDevice( const devoptab_t* device);
+int FindDevice(const char* name); +int FindDevice(const char* name);
@@ -8105,38 +8096,53 @@ index 022992b8d..bdf4c7bb0 100644
fp->_flags = flags; fp->_flags = flags;
fp->_cookie = (void *) fp; fp->_cookie = (void *) fp;
diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c
index b358d2b4a..9cab2180e 100644 index b358d2b4a..78bb0df30 100644
--- a/newlib/libc/stdio/fread.c --- a/newlib/libc/stdio/fread.c
+++ b/newlib/libc/stdio/fread.c +++ b/newlib/libc/stdio/fread.c
@@ -225,7 +225,31 @@ _fread_r (struct _reent * ptr, @@ -187,7 +187,6 @@ _fread_r (struct _reent * ptr,
int rc = 0;
/* save fp buffering state */
void *old_base = fp->_bf._base;
- void * old_p = fp->_p;
int old_size = fp->_bf._size;
/* allow __refill to use user's buffer */
fp->_bf._base = (unsigned char *) p;
@@ -197,7 +196,7 @@ _fread_r (struct _reent * ptr,
/* restore fp buffering back to original state */
fp->_bf._base = old_base;
fp->_bf._size = old_size;
- fp->_p = old_p;
+ fp->_p = old_base;
resid -= fp->_r;
p += fp->_r;
fp->_r = 0;
@@ -225,7 +224,29 @@ _fread_r (struct _reent * ptr,
/* fp->_r = 0 ... done in __srefill */ /* fp->_r = 0 ... done in __srefill */
p += r; p += r;
resid -= r; resid -= r;
- if (__srefill_r (ptr, fp)) - if (__srefill_r (ptr, fp))
+ int rc = 0; + int rc = 0;
+ +
+ if (resid>BUFSIZ) + if (resid>fp->_bf._size)
+ { + {
+ /* save fp buffering state */ + /* save fp buffering state */
+ void *old_base = fp->_bf._base; + void *old_base = fp->_bf._base;
+ void * old_p = fp->_p;
+ int old_size = fp->_bf._size; + int old_size = fp->_bf._size;
+ /* allow __refill to use user's buffer */ + /* allow __refill to use user's buffer */
+ fp->_bf._base = (unsigned char *) p; + fp->_bf._base = (unsigned char *) p;
+ fp->_bf._size = resid; + fp->_bf._size = resid - old_size;
+ fp->_p = (unsigned char *) p; + fp->_p = (unsigned char *) p;
+ rc = __srefill_r (ptr, fp); + rc = __srefill_r (ptr, fp);
+ /* restore fp buffering back to original state */ + /* restore fp buffering back to original state */
+ fp->_bf._base = old_base; + fp->_bf._base = old_base;
+ fp->_bf._size = old_size; + fp->_bf._size = old_size;
+ fp->_p = old_p; + fp->_p = old_base;
+ resid -= fp->_r; + resid -= fp->_r;
+ p += fp->_r; + p += fp->_r;
+ fp->_r = 0; + //fp->_r = 0;
+
+ } else {
+ rc = __srefill_r (ptr, fp);
+ } + }
+ rc = __srefill_r (ptr, fp);
+
+ if (rc) + if (rc)
{ {
/* no more input: return partial result */ /* no more input: return partial result */

View File

@@ -4,7 +4,7 @@
# set env variables # set env variables
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
export DEVKITPRO=$TOOLPATH export DEVKITPRO=$TOOLPATH
export DEVKITARM=$DEVKITPRO/devkitARM export DEVKITPPC=$DEVKITPRO/devkitPPC
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Install the rules files # Install the rules files
@@ -13,5 +13,5 @@ cd $BUILDDIR
mkdir -p rules mkdir -p rules
cd rules cd rules
tar -xvf $SRCDIR/devkitarm-rules-$DKARM_RULES_VER.tar.xz tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.xz
make install make install

View File

@@ -97,7 +97,7 @@ then
--with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \ --with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \
--prefix=$prefix\ --prefix=$prefix\
--with-system-zlib\ --with-system-zlib\
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 36" \ --with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 37" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \ CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \

View File

@@ -40,8 +40,8 @@ case "$VERSION" in
toolchain=DEVKITARM toolchain=DEVKITARM
;; ;;
"2" ) "2" )
GCC_VER=8.4.0 GCC_VER=10.1.0
BINUTILS_VER=2.32 BINUTILS_VER=2.34
MN_BINUTILS_VER=2.17 MN_BINUTILS_VER=2.17
NEWLIB_VER=3.3.0 NEWLIB_VER=3.3.0
GDB_VER=8.2.1 GDB_VER=8.2.1