summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target/arm/systems/kinetis-k703
-rw-r--r--target/config/Config.in.compiler7
-rw-r--r--target/config/Config.in.kernelversion20
-rw-r--r--target/linux/patches/1d008423ab5fd12459f53342e4d17585ec63cfe4/perl-fix.patch12
-rw-r--r--target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/new-gcc.patch183
-rw-r--r--target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/no-extern-inline.patch30
-rw-r--r--toolchain/gcc/patches/4.9.4/disable-atomics.patch12
-rw-r--r--toolchain/gcc/patches/4.9.4/disable-dwarf.bfin12
-rw-r--r--toolchain/gcc/patches/4.9.4/disable-dwarf.frv12
-rw-r--r--toolchain/gcc/patches/4.9.4/disable-split-stack-nothread.patch10
-rw-r--r--toolchain/gcc/patches/4.9.4/disable-tm.patch14
-rw-r--r--toolchain/gcc/patches/4.9.4/fix-m86k-libgcc.patch11
-rw-r--r--toolchain/gcc/patches/4.9.4/gcc.bfin12
-rw-r--r--toolchain/gcc/patches/4.9.4/gcc.musl669
-rw-r--r--toolchain/gcc/patches/4.9.4/gcc.nds3270904
-rw-r--r--toolchain/gcc/patches/4.9.4/libstdcxx-uclibc-c99.patch237
-rw-r--r--toolchain/gcc/patches/4.9.4/microbaze.uclibc-ng20
-rw-r--r--toolchain/gcc/patches/4.9.4/microblaze-enable-dwarf-eh-support.patch166
-rw-r--r--toolchain/gcc/patches/4.9.4/remove-write-macro.frv11
-rw-r--r--toolchain/gcc/patches/4.9.4/stdlib-h.ia6430
-rw-r--r--toolchain/gcc/patches/4.9.4/uclibc-cmath-long-double.patch434
21 files changed, 224 insertions, 72585 deletions
diff --git a/target/arm/systems/kinetis-k70 b/target/arm/systems/kinetis-k70
index b9373dc1f..e5ffb6caf 100644
--- a/target/arm/systems/kinetis-k70
+++ b/target/arm/systems/kinetis-k70
@@ -1,7 +1,6 @@
config ADK_TARGET_SYSTEM_KINETIS_K70
bool "Kinetis K70"
depends on ADK_TARGET_OS_LINUX
- depends on ADK_EXPERIMENTAL
depends on ADK_TARGET_LITTLE_ENDIAN
select ADK_TARGET_CPU_ARM_CORTEX_M3
select ADK_TARGET_ARCH_ARM_WITH_THUMB
@@ -12,7 +11,7 @@ config ADK_TARGET_SYSTEM_KINETIS_K70
select ADK_TARGET_WITH_BLOCK
select ADK_TARGET_WITH_NAND
select ADK_TARGET_UCLINUX
- select ADK_TARGET_KERNEL_UIMAGE
+ select ADK_TARGET_KERNEL_IMAGE
help
Kinetis K70
diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler
index e44f0fbd6..6d37de7a0 100644
--- a/target/config/Config.in.compiler
+++ b/target/config/Config.in.compiler
@@ -22,8 +22,6 @@ default ADK_TOOLCHAIN_GCC_OR1K if ADK_TARGET_ARCH_OR1K
default ADK_TOOLCHAIN_GCC_NDS32 if ADK_TARGET_ARCH_NDS32
default ADK_TOOLCHAIN_GCC_4_2 if ADK_TARGET_ARCH_METAG
default ADK_TOOLCHAIN_GCC_4_4 if ADK_TARGET_ARCH_AVR32
-default ADK_TOOLCHAIN_GCC_4_9 if ADK_TARGET_ARCH_LM32 && !ADK_TARGET_LIB_NEWLIB
-default ADK_TOOLCHAIN_GCC_4_9 if ADK_TARGET_SYSTEM_KINETIS_K70
default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_CPU_SH_J2
default ADK_TOOLCHAIN_GCC_7
@@ -49,11 +47,6 @@ config ADK_TOOLCHAIN_GCC_6
bool "6.3.0"
depends on ADK_TARGET_CPU_SH_J2
-config ADK_TOOLCHAIN_GCC_4_9
- bool "4.9.4"
- depends on ADK_TARGET_ARCH_LM32 \
- || ADK_TARGET_ARCH_SPARC
-
config ADK_TOOLCHAIN_GCC_CSKY
bool "csky"
depends on ADK_TARGET_ARCH_CSKY
diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion
index a4f90b241..7d6c0dc36 100644
--- a/target/config/Config.in.kernelversion
+++ b/target/config/Config.in.kernelversion
@@ -228,26 +228,26 @@ config ADK_TARGET_KERNEL_GIT_REPO
config ADK_TARGET_KERNEL_GIT_REPO_NAME
string
depends on ADK_TARGET_KERNEL_VERSION_GIT
+ default "csky" if ADK_TARGET_ARCH_CSKY
+ default "lm32" if ADK_TARGET_ARCH_LM32
+ default "riscv" if ADK_TARGET_ARCH_RISCV32 || ADK_TARGET_ARCH_RISCV64
default "rpi" if ADK_TARGET_BOARD_BCM28XX
default "ad" if ADK_TARGET_SYSTEM_ADSP_BF537
+ default "bb" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "emcraft" if ADK_TARGET_SYSTEM_KINETIS_K70
- default "fslc" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "clearfog" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
- default "bb" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
- default "lm32" if ADK_TARGET_ARCH_LM32
- default "csky" if ADK_TARGET_ARCH_CSKY
- default "riscv" if ADK_TARGET_ARCH_RISCV32 || ADK_TARGET_ARCH_RISCV64
+ default "fslc" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "linus"
config ADK_TARGET_KERNEL_GIT
string "git version"
depends on ADK_TARGET_KERNEL_VERSION_GIT
- default "cfa29b46af94d83e31aa000dbaee553f9c4d670c" if ADK_TARGET_BOARD_BCM28XX
- default "f8d3b2a0fa5054aaed0f14cd457db9d8922bb167" if ADK_TARGET_SYSTEM_ADSP_BF537
- default "6a2f2e4198eaff63ee75f6085ce9f966c47b4441" if ADK_TARGET_ARCH_LM32
default "314c498ddc8c43a66ca96ff3af7da98e10fa1cc6" if ADK_TARGET_ARCH_CSKY
+ default "6a2f2e4198eaff63ee75f6085ce9f966c47b4441" if ADK_TARGET_ARCH_LM32
default "1cd2e072bbd1a518e11b551435be0ad84a2c52af" if ADK_TARGET_ARCH_RISCV32 || ADK_TARGET_ARCH_RISCV64
- default "1d008423ab5fd12459f53342e4d17585ec63cfe4" if ADK_TARGET_SYSTEM_KINETIS_K70
+ default "cfa29b46af94d83e31aa000dbaee553f9c4d670c" if ADK_TARGET_BOARD_BCM28XX
+ default "f8d3b2a0fa5054aaed0f14cd457db9d8922bb167" if ADK_TARGET_SYSTEM_ADSP_BF537
+ default "e7c8afc1dda7b7c18596d90ad6a17ae886650b72" if ADK_TARGET_SYSTEM_KINETIS_K70
default "902739f3353150ac9eb69ad995098f3079d862a3" if ADK_TARGET_SYSTEM_SOLIDRUN_CLEARFOG
default "c85fbc86c61a8c8fd45ab1fe3d1bdd2df12f7962" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "8624998967676862843aed1f8ee2141e98987f81" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
@@ -257,9 +257,9 @@ config ADK_TARGET_KERNEL_GIT_VER
depends on ADK_TARGET_KERNEL_VERSION_GIT
default "4.9.13" if ADK_TARGET_ARCH_CSKY
default "4.9.37" if ADK_TARGET_BOARD_BCM28XX
- default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
default "4.4.37" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
default "2.6.33" if ADK_TARGET_SYSTEM_KINETIS_K70
+ default "3.14.79" if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
config ADK_TARGET_KERNEL_GIT_TYPE
string
diff --git a/target/linux/patches/1d008423ab5fd12459f53342e4d17585ec63cfe4/perl-fix.patch b/target/linux/patches/1d008423ab5fd12459f53342e4d17585ec63cfe4/perl-fix.patch
deleted file mode 100644
index 2de40e0e3..000000000
--- a/target/linux/patches/1d008423ab5fd12459f53342e4d17585ec63cfe4/perl-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur linux-1d008423ab5fd12459f53342e4d17585ec63cfe4.orig/kernel/timeconst.pl linux-1d008423ab5fd12459f53342e4d17585ec63cfe4/kernel/timeconst.pl
---- linux-1d008423ab5fd12459f53342e4d17585ec63cfe4.orig/kernel/timeconst.pl 2016-12-22 18:05:10.000000000 +0100
-+++ linux-1d008423ab5fd12459f53342e4d17585ec63cfe4/kernel/timeconst.pl 2016-12-22 18:42:55.573173008 +0100
-@@ -370,7 +370,7 @@
- }
-
- @val = @{$canned_values{$hz}};
-- if (!defined(@val)) {
-+ if (!@val) {
- @val = compute_values($hz);
- }
- output($hz, @val);
diff --git a/target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/new-gcc.patch b/target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/new-gcc.patch
new file mode 100644
index 000000000..fbee590f5
--- /dev/null
+++ b/target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/new-gcc.patch
@@ -0,0 +1,183 @@
+diff -Nur linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72.orig/include/linux/compiler-gcc.h linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72/include/linux/compiler-gcc.h
+--- linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72.orig/include/linux/compiler-gcc.h 2017-09-27 03:56:44.000000000 +0200
++++ linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72/include/linux/compiler-gcc.h 2017-09-27 04:18:30.590990967 +0200
+@@ -6,6 +6,10 @@
+ * Common definitions for all gcc versions go here.
+ */
+
++#define GCC_VERSION (__GNUC__ * 10000 \
++ + __GNUC_MINOR__ * 100 \
++ + __GNUC_PATCHLEVEL__)
++
+
+ /* Optimization barrier */
+ /* The "volatile" is due to gcc bugs */
+@@ -81,7 +85,164 @@
+ #define __maybe_unused __attribute__((unused))
+ #define __always_unused __attribute__((unused))
+
+-#define __gcc_header(x) #x
+-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
+-#define gcc_header(x) _gcc_header(x)
+-#include gcc_header(__GNUC__)
++/* gcc version specific checks */
++
++#if GCC_VERSION < 30200
++# error Sorry, your compiler is too old - please upgrade it.
++#endif
++
++#if GCC_VERSION < 30300
++# define __used __attribute__((__unused__))
++#else
++# define __used __attribute__((__used__))
++#endif
++
++#ifdef CONFIG_GCOV_KERNEL
++# if GCC_VERSION < 30400
++# error "GCOV profiling support for gcc versions below 3.4 not included"
++# endif /* __GNUC_MINOR__ */
++#endif /* CONFIG_GCOV_KERNEL */
++
++#if GCC_VERSION >= 30400
++#define __must_check __attribute__((warn_unused_result))
++#endif
++
++#if GCC_VERSION >= 40000
++
++/* GCC 4.1.[01] miscompiles __weak */
++#ifdef __KERNEL__
++# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101
++# error Your version of gcc miscompiles the __weak directive
++# endif
++#endif
++
++#define __used __attribute__((__used__))
++#define __compiler_offsetof(a, b) \
++ __builtin_offsetof(a, b)
++
++#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
++# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
++#endif
++
++#if GCC_VERSION >= 40300
++/* Mark functions as cold. gcc will assume any path leading to a call
++ * to them will be unlikely. This means a lot of manual unlikely()s
++ * are unnecessary now for any paths leading to the usual suspects
++ * like BUG(), printk(), panic() etc. [but let's keep them for now for
++ * older compilers]
++ *
++ * Early snapshots of gcc 4.3 don't support this and we can't detect this
++ * in the preprocessor, but we can live with this because they're unreleased.
++ * Maketime probing would be overkill here.
++ *
++ * gcc also has a __attribute__((__hot__)) to move hot functions into
++ * a special section, but I don't see any sense in this right now in
++ * the kernel context
++ */
++#define __cold __attribute__((__cold__))
++
++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
++
++#ifndef __CHECKER__
++# define __compiletime_warning(message) __attribute__((warning(message)))
++# define __compiletime_error(message) __attribute__((error(message)))
++#endif /* __CHECKER__ */
++#endif /* GCC_VERSION >= 40300 */
++
++#if GCC_VERSION >= 40500
++/*
++ * Mark a position in code as unreachable. This can be used to
++ * suppress control flow warnings after asm blocks that transfer
++ * control elsewhere.
++ *
++ * Early snapshots of gcc 4.5 don't support this and we can't detect
++ * this in the preprocessor, but we can live with this because they're
++ * unreleased. Really, we need to have autoconf for the kernel.
++ */
++#define unreachable() __builtin_unreachable()
++
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone __attribute__((__noclone__, __optimize__("no-tracer")))
++
++#endif /* GCC_VERSION >= 40500 */
++
++#if GCC_VERSION >= 40600
++/*
++ * When used with Link Time Optimization, gcc can optimize away C functions or
++ * variables which are referenced only from assembly code. __visible tells the
++ * optimizer that something else uses this function or variable, thus preventing
++ * this.
++ */
++#define __visible __attribute__((externally_visible))
++#endif
++
++
++#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
++/*
++ * __assume_aligned(n, k): Tell the optimizer that the returned
++ * pointer can be assumed to be k modulo n. The second argument is
++ * optional (default 0), so we use a variadic macro to make the
++ * shorthand.
++ *
++ * Beware: Do not apply this to functions which may return
++ * ERR_PTRs. Also, it is probably unwise to apply it to functions
++ * returning extra information in the low bits (but in that case the
++ * compiler should see some alignment anyway, when the return value is
++ * massaged by 'flags = ptr & 3; ptr &= ~3;').
++ */
++#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
++#endif
++
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
++
++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
++#if GCC_VERSION >= 40400
++#define __HAVE_BUILTIN_BSWAP32__
++#define __HAVE_BUILTIN_BSWAP64__
++#endif
++#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
++#define __HAVE_BUILTIN_BSWAP16__
++#endif
++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
++
++#if GCC_VERSION >= 70000
++#define KASAN_ABI_VERSION 5
++#elif GCC_VERSION >= 50000
++#define KASAN_ABI_VERSION 4
++#elif GCC_VERSION >= 40902
++#define KASAN_ABI_VERSION 3
++#endif
++
++#if GCC_VERSION >= 40902
++/*
++ * Tell the compiler that address safety instrumentation (KASAN)
++ * should not be applied to that function.
++ * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
++ */
++#define __no_sanitize_address __attribute__((no_sanitize_address))
++#endif
++
++#endif /* gcc version >= 40000 specific checks */
++
++#if !defined(__noclone)
++#define __noclone /* not needed */
++#endif
++
++#if !defined(__no_sanitize_address)
++#define __no_sanitize_address
++#endif
++
++/*
++ * A trick to suppress uninitialized variable warning without generating any
++ * code
++ */
++#define uninitialized_var(x) x = x
diff --git a/target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/no-extern-inline.patch b/target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/no-extern-inline.patch
new file mode 100644
index 000000000..36ef62928
--- /dev/null
+++ b/target/linux/patches/e7c8afc1dda7b7c18596d90ad6a17ae886650b72/no-extern-inline.patch
@@ -0,0 +1,30 @@
+diff -Nur linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72.orig/arch/arm/include/asm/ftrace.h linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72/arch/arm/include/asm/ftrace.h
+--- linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72.orig/arch/arm/include/asm/ftrace.h 2017-09-27 03:56:40.000000000 +0200
++++ linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72/arch/arm/include/asm/ftrace.h 2017-09-27 04:31:03.708572870 +0200
+@@ -27,7 +27,7 @@
+
+ #else
+
+-extern inline void *return_address(unsigned int level)
++static inline void *return_address(unsigned int level)
+ {
+ return NULL;
+ }
+diff -Nur linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72.orig/include/linux/inotify.h linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72/include/linux/inotify.h
+--- linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72.orig/include/linux/inotify.h 2017-09-27 03:56:44.000000000 +0200
++++ linux-e7c8afc1dda7b7c18596d90ad6a17ae886650b72/include/linux/inotify.h 2017-09-27 04:47:37.707436849 +0200
+@@ -230,12 +230,12 @@
+ {
+ }
+
+-extern inline int pin_inotify_watch(struct inotify_watch *watch)
++static inline int pin_inotify_watch(struct inotify_watch *watch)
+ {
+ return 0;
+ }
+
+-extern inline void unpin_inotify_watch(struct inotify_watch *watch)
++static inline void unpin_inotify_watch(struct inotify_watch *watch)
+ {
+ }
+
diff --git a/toolchain/gcc/patches/4.9.4/disable-atomics.patch b/toolchain/gcc/patches/4.9.4/disable-atomics.patch
deleted file mode 100644
index 4ab553218..000000000
--- a/toolchain/gcc/patches/4.9.4/disable-atomics.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur gcc-4.8.3.orig/libgcc/config.host gcc-4.8.3/libgcc/config.host
---- gcc-4.8.3.orig/libgcc/config.host 2014-03-20 17:12:30.000000000 +0100
-+++ gcc-4.8.3/libgcc/config.host 2014-07-26 13:15:06.359463368 +0200
-@@ -689,7 +689,7 @@
- m68k*-*-openbsd*)
- ;;
- m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc
-- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux"
-+ tmake_file="$tmake_file m68k/t-floatlib"
- md_unwind_header=m68k/linux-unwind.h
- ;;
- m68k-*-linux*) # Motorola m68k's running GNU/Linux
diff --git a/toolchain/gcc/patches/4.9.4/disable-dwarf.bfin b/toolchain/gcc/patches/4.9.4/disable-dwarf.bfin
deleted file mode 100644
index c11baec92..000000000
--- a/toolchain/gcc/patches/4.9.4/disable-dwarf.bfin
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur gcc-git.orig/libgcc/config.host gcc-git/libgcc/config.host
---- gcc-git.orig/libgcc/config.host 2015-10-23 21:12:52.000000000 +0200
-+++ gcc-git/libgcc/config.host 2015-11-15 21:17:38.385745887 +0100
-@@ -231,7 +231,7 @@
- esac
- ;;
- *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
-- tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
-+ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
- extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
- if test x$enable_vtable_verify = xyes; then
- extra_parts="$extra_parts vtv_start.o vtv_end.o vtv_start_preinit.o vtv_end_preinit.o"
diff --git a/toolchain/gcc/patches/4.9.4/disable-dwarf.frv b/toolchain/gcc/patches/4.9.4/disable-dwarf.frv
deleted file mode 100644
index c11baec92..000000000
--- a/toolchain/gcc/patches/4.9.4/disable-dwarf.frv
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur gcc-git.orig/libgcc/config.host gcc-git/libgcc/config.host
---- gcc-git.orig/libgcc/config.host 2015-10-23 21:12:52.000000000 +0200
-+++ gcc-git/libgcc/config.host 2015-11-15 21:17:38.385745887 +0100
-@@ -231,7 +231,7 @@
- esac
- ;;
- *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
-- tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
-+ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
- extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
- if test x$enable_vtable_verify = xyes; then
- extra_parts="$extra_parts vtv_start.o vtv_end.o vtv_start_preinit.o vtv_end_preinit.o"
diff --git a/toolchain/gcc/patches/4.9.4/disable-split-stack-nothread.patch b/toolchain/gcc/patches/4.9.4/disable-split-stack-nothread.patch
deleted file mode 100644
index f78f93d8e..000000000
--- a/toolchain/gcc/patches/4.9.4/disable-split-stack-nothread.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-diff -Nur gcc-4.9.3.orig/libgcc/config/t-stack gcc-4.9.3/libgcc/config/t-stack
---- gcc-4.9.3.orig/libgcc/config/t-stack 2010-10-01 21:31:49.000000000 +0200
-+++ gcc-4.9.3/libgcc/config/t-stack 2016-03-07 03:07:56.773442671 +0100
-@@ -1,4 +1,6 @@
- # Makefile fragment to provide generic support for -fsplit-stack.
- # This should be used in config.host for any host which supports
- # -fsplit-stack.
-+ifeq ($(enable_threads),yes)
- LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
-+endif
diff --git a/toolchain/gcc/patches/4.9.4/disable-tm.patch b/toolchain/gcc/patches/4.9.4/disable-tm.patch
deleted file mode 100644
index 02b5cb854..000000000
--- a/toolchain/gcc/patches/4.9.4/disable-tm.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Nur gcc-4.8.3.orig/gcc/config/m68k/uclinux.h gcc-4.8.3/gcc/config/m68k/uclinux.h
---- gcc-4.8.3.orig/gcc/config/m68k/uclinux.h 2013-01-10 21:38:27.000000000 +0100
-+++ gcc-4.8.3/gcc/config/m68k/uclinux.h 2014-08-25 17:03:59.543127685 +0200
-@@ -20,6 +20,10 @@
- along with GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-+/* Do not use TM clone registry. It breaks -msep-data (-fPIC) code. */
-+/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54584 */
-+#define USE_TM_CLONE_REGISTRY 0
-+
- #undef STARTFILE_SPEC
- #define STARTFILE_SPEC \
- "%{mshared-library-id=0|!mshared-library-id=*: crt1.o%s ;: Scrt1.o%s} \
diff --git a/toolchain/gcc/patches/4.9.4/fix-m86k-libgcc.patch b/toolchain/gcc/patches/4.9.4/fix-m86k-libgcc.patch
deleted file mode 100644
index e8481d549..000000000
--- a/toolchain/gcc/patches/4.9.4/fix-m86k-libgcc.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.3/libgcc/config/m68k/linux-atomic.c
---- gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c 2014-01-02 23:25:22.000000000 +0100
-+++ gcc-4.9.3/libgcc/config/m68k/linux-atomic.c 2015-11-29 14:42:10.566143595 +0100
-@@ -33,7 +33,6 @@
- using the kernel helper defined below. There is no support for
- 64-bit operations yet. */
-
--#include <asm/unistd.h>
- #include <stdbool.h>
-
- #ifndef __NR_atomic_cmpxchg_32
diff --git a/toolchain/gcc/patches/4.9.4/gcc.bfin b/toolchain/gcc/patches/4.9.4/gcc.bfin
deleted file mode 100644
index a0643f5fc..000000000
--- a/toolchain/gcc/patches/4.9.4/gcc.bfin
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur gcc-4.9.3.orig/gcc/config.gcc gcc-4.9.3/gcc/config.gcc
---- gcc-4.9.3.orig/gcc/config.gcc 2015-05-21 22:50:59.000000000 +0200
-+++ gcc-4.9.3/gcc/config.gcc 2015-11-23 22:51:58.686375134 +0100
-@@ -1101,7 +1101,7 @@
- ;;
- bfin*-linux-uclibc*)
- tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
-- tmake_file="bfin/t-bfin-linux t-slibgcc t-linux"
-+ tmake_file="${tmake_file} bfin/t-bfin-linux t-slibgcc t-linux"
- use_collect2=no
- ;;
- bfin*-rtems*)
diff --git a/toolchain/gcc/patches/4.9.4/gcc.musl b/toolchain/gcc/patches/4.9.4/gcc.musl
deleted file mode 100644
index 2005cd0e9..000000000
--- a/toolchain/gcc/patches/4.9.4/gcc.musl
+++ /dev/null
@@ -1,669 +0,0 @@
-diff -Nur gcc-4.9.2.orig/fixincludes/mkfixinc.sh gcc-4.9.2/fixincludes/mkfixinc.sh
---- gcc-4.9.2.orig/fixincludes/mkfixinc.sh 2012-10-28 16:42:48.000000000 -0500
-+++ gcc-4.9.2/fixincludes/mkfixinc.sh 2015-02-16 13:39:52.738182319 -0600
-@@ -19,7 +19,8 @@
- powerpc-*-eabi* | \
- powerpc-*-rtems* | \
- powerpcle-*-eabisim* | \
-- powerpcle-*-eabi* )
-+ powerpcle-*-eabi* | \
-+ *-musl* )
- # IF there is no include fixing,
- # THEN create a no-op fixer and exit
- (echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
-diff -Nur gcc-4.9.2.orig/gcc/config/aarch64/aarch64-linux.h gcc-4.9.2/gcc/config/aarch64/aarch64-linux.h
---- gcc-4.9.2.orig/gcc/config/aarch64/aarch64-linux.h 2014-07-24 13:30:44.000000000 -0500
-+++ gcc-4.9.2/gcc/config/aarch64/aarch64-linux.h 2015-02-16 13:39:52.662182319 -0600
-@@ -23,6 +23,8 @@
-
- #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
-
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
-+
- #define CPP_SPEC "%{pthread:-D_REENTRANT}"
-
- #define LINUX_TARGET_LINK_SPEC "%{h*} \
-diff -Nur gcc-4.9.2.orig/gcc/config/arm/linux-eabi.h gcc-4.9.2/gcc/config/arm/linux-eabi.h
---- gcc-4.9.2.orig/gcc/config/arm/linux-eabi.h 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/arm/linux-eabi.h 2015-02-16 13:39:52.678182319 -0600
-@@ -77,6 +77,23 @@
- %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
- %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
-
-+/* For ARM musl currently supports four dynamic linkers:
-+ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
-+ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
-+ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
-+ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
-+ musl does not support the legacy OABI mode.
-+ All the dynamic linkers live in /lib.
-+ We default to soft-float, EL. */
-+#undef MUSL_DYNAMIC_LINKER
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
-+#else
-+#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
-+#endif
-+#define MUSL_DYNAMIC_LINKER \
-+ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
-+
- /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
- use the GNU/Linux version, not the generic BPABI version. */
- #undef LINK_SPEC
-diff -Nur gcc-4.9.2.orig/gcc/config/i386/linux64.h gcc-4.9.2/gcc/config/i386/linux64.h
---- gcc-4.9.2.orig/gcc/config/i386/linux64.h 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/i386/linux64.h 2015-02-16 13:39:52.866182317 -0600
-@@ -30,3 +30,7 @@
- #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
- #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
- #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
-+
-+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
-+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
-+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
-diff -Nur gcc-4.9.2.orig/gcc/config/i386/linux.h gcc-4.9.2/gcc/config/i386/linux.h
---- gcc-4.9.2.orig/gcc/config/i386/linux.h 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/i386/linux.h 2015-02-16 13:39:52.866182317 -0600
-@@ -21,3 +21,4 @@
-
- #define GNU_USER_LINK_EMULATION "elf_i386"
- #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
-diff -Nur gcc-4.9.2.orig/gcc/config/linux.h gcc-4.9.2/gcc/config/linux.h
---- gcc-4.9.2.orig/gcc/config/linux.h 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/linux.h 2015-02-16 13:39:52.706182319 -0600
-@@ -32,10 +32,12 @@
- #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
- #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
- #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
-+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
- #else
- #define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
- #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
- #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
-+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
- #endif
-
- #define GNU_USER_TARGET_OS_CPP_BUILTINS() \
-@@ -53,18 +55,21 @@
- uClibc or Bionic is the default C library and whether
- -muclibc or -mglibc or -mbionic has been passed to change the default. */
-
--#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
-- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
-+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
-+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
-
- #if DEFAULT_LIBC == LIBC_GLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
- #elif DEFAULT_LIBC == LIBC_UCLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
- #elif DEFAULT_LIBC == LIBC_BIONIC
--#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
-+#elif DEFAULT_LIBC == LIBC_MUSL
-+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
- #else
- #error "Unsupported DEFAULT_LIBC"
- #endif /* DEFAULT_LIBC */
-@@ -84,21 +89,92 @@
-
- #define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
-- BIONIC_DYNAMIC_LINKER)
-+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
- #define GNU_USER_DYNAMIC_LINKER32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
-- BIONIC_DYNAMIC_LINKER32)
-+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
- #define GNU_USER_DYNAMIC_LINKER64 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
-- BIONIC_DYNAMIC_LINKER64)
-+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
- #define GNU_USER_DYNAMIC_LINKERX32 \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
-- BIONIC_DYNAMIC_LINKERX32)
-+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
-
- /* Whether we have Bionic libc runtime */
- #undef TARGET_HAS_BIONIC
- #define TARGET_HAS_BIONIC (OPTION_BIONIC)
-
-+/* musl avoids problematic includes by rearranging the include directories.
-+ * Unfortunately, this is mostly duplicated from cppdefault.c */
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#define INCLUDE_DEFAULTS_MUSL_GPP \
-+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
-+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
-+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
-+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
-+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
-+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
-+
-+#ifdef LOCAL_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_LOCAL \
-+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
-+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_LOCAL
-+#endif
-+
-+#ifdef PREFIX_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_PREFIX \
-+ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_PREFIX
-+#endif
-+
-+#ifdef CROSS_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_CROSS \
-+ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_CROSS
-+#endif
-+
-+#ifdef TOOL_INCLUDE_DIR
-+#define INCLUDE_DEFAULTS_MUSL_TOOL \
-+ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_TOOL
-+#endif
-+
-+#ifdef NATIVE_SYSTEM_HEADER_DIR
-+#define INCLUDE_DEFAULTS_MUSL_NATIVE \
-+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
-+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
-+#else
-+#define INCLUDE_DEFAULTS_MUSL_NATIVE
-+#endif
-+
-+#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
-+# undef INCLUDE_DEFAULTS_MUSL_LOCAL
-+# define INCLUDE_DEFAULTS_MUSL_LOCAL
-+# undef INCLUDE_DEFAULTS_MUSL_NATIVE
-+# define INCLUDE_DEFAULTS_MUSL_NATIVE
-+#else
-+# undef INCLUDE_DEFAULTS_MUSL_CROSS
-+# define INCLUDE_DEFAULTS_MUSL_CROSS
-+#endif
-+
-+#undef INCLUDE_DEFAULTS
-+#define INCLUDE_DEFAULTS \
-+ { \
-+ INCLUDE_DEFAULTS_MUSL_GPP \
-+ INCLUDE_DEFAULTS_MUSL_PREFIX \
-+ INCLUDE_DEFAULTS_MUSL_CROSS \
-+ INCLUDE_DEFAULTS_MUSL_TOOL \
-+ INCLUDE_DEFAULTS_MUSL_NATIVE \
-+ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
-+ { 0, 0, 0, 0, 0, 0 } \
-+ }
-+#endif
-+
- #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
- /* This is a *uclinux* target. We don't define below macros to normal linux
- versions, because doing so would require *uclinux* targets to include
-diff -Nur gcc-4.9.2.orig/gcc/config/linux.opt gcc-4.9.2/gcc/config/linux.opt
---- gcc-4.9.2.orig/gcc/config/linux.opt 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/linux.opt 2015-02-16 13:39:52.706182319 -0600
-@@ -30,3 +30,7 @@
- muclibc
- Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
- Use uClibc C library
-+
-+mmusl
-+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
-+Use musl C library
-diff -Nur gcc-4.9.2.orig/gcc/config/microblaze/linux.h gcc-4.9.2/gcc/config/microblaze/linux.h
---- gcc-4.9.2.orig/gcc/config/microblaze/linux.h 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/microblaze/linux.h 2015-02-16 13:39:52.766182318 -0600
-@@ -25,7 +25,22 @@
- #undef TLS_NEEDS_GOT
- #define TLS_NEEDS_GOT 1
-
--#define DYNAMIC_LINKER "/lib/ld.so.1"
-+#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
-+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
-+#else
-+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
-+#endif
-+
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
-+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-+
-+#if DEFAULT_LIBC == LIBC_MUSL
-+#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
-+#else
-+#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
-+#endif
-+
-+
- #undef SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
- { "dynamic_linker", DYNAMIC_LINKER }
-diff -Nur gcc-4.9.2.orig/gcc/config/microblaze/microblaze.h gcc-4.9.2/gcc/config/microblaze/microblaze.h
---- gcc-4.9.2.orig/gcc/config/microblaze/microblaze.h 2014-02-23 12:53:47.000000000 -0600
-+++ gcc-4.9.2/gcc/config/microblaze/microblaze.h 2015-02-16 13:39:52.782182318 -0600
-@@ -218,6 +218,12 @@
- #undef PTRDIFF_TYPE
- #define PTRDIFF_TYPE "int"
-
-+#undef SIZE_TYPE
-+#define SIZE_TYPE "unsigned int"
-+
-+#undef PTRDIFF_TYPE
-+#define PTRDIFF_TYPE "int"
-+
- #define CONSTANT_ALIGNMENT(EXP, ALIGN) \
- ((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR) \
- && (ALIGN) < BITS_PER_WORD \
-diff -Nur gcc-4.9.2.orig/gcc/config/mips/linux.h gcc-4.9.2/gcc/config/mips/linux.h
---- gcc-4.9.2.orig/gcc/config/mips/linux.h 2014-01-02 16:23:26.000000000 -0600
-+++ gcc-4.9.2/gcc/config/mips/linux.h 2015-02-16 13:39:52.782182318 -0600
-@@ -23,3 +23,10 @@
- #undef UCLIBC_DYNAMIC_LINKER
- #define UCLIBC_DYNAMIC_LINKER \
- "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
-+
-+#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
-+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
-+#else
-+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
-+#endif
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1"
-diff -Nur gcc-4.9.2.orig/gcc/config/rs6000/linux64.h gcc-4.9.2/gcc/config/rs6000/linux64.h
---- gcc-4.9.2.orig/gcc/config/rs6000/linux64.h 2014-07-24 12:25:19.000000000 -0500
-+++ gcc-4.9.2/gcc/config/rs6000/linux64.h 2015-02-16 13:39:52.794182318 -0600
-@@ -375,17 +375,21 @@
- #endif
- #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
- #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
-+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
-+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
- #if DEFAULT_LIBC == LIBC_UCLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
- #elif DEFAULT_LIBC == LIBC_GLIBC
--#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
-+#elif DEFAULT_LIBC == LIBC_MUSL
-+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
- #else
- #error "Unsupported DEFAULT_LIBC"
- #endif
- #define GNU_USER_DYNAMIC_LINKER32 \
-- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
-+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
- #define GNU_USER_DYNAMIC_LINKER64 \