mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-08-21 01:44:16 -05:00
Compare commits
7 Commits
devkitARM_
...
devkitPPC_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
556a2a2e02 | ||
|
|
6da9ea33f7 | ||
|
|
433a4bdd80 | ||
|
|
20bf4948a1 | ||
|
|
5e720e01c1 | ||
|
|
183ab79cfc | ||
|
|
ad4246dfc4 |
@@ -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
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|||||||
12
dkppc/patches/binutils-2.34.patch
Normal file
12
dkppc/patches/binutils-2.34.patch
Normal 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
|
||||||
@@ -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 ;;
|
||||||
@@ -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 */
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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" \
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user