From ae0cee273fc22ded42c87a4d4411d12dc6b565f2 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 14 Apr 2014 20:39:56 +0200 Subject: sync with musl-cross --- package/gcc/patches/4.8.2/musl-cross.patch | 912 +++++++++++++-------------- package/gcc/patches/4.8.2/musl-sh.patch | 11 - toolchain/gcc/patches/4.8.2/musl-cross.patch | 912 +++++++++++++-------------- toolchain/gcc/patches/4.8.2/musl-sh.patch | 11 - 4 files changed, 886 insertions(+), 960 deletions(-) delete mode 100644 package/gcc/patches/4.8.2/musl-sh.patch delete mode 100644 toolchain/gcc/patches/4.8.2/musl-sh.patch diff --git a/package/gcc/patches/4.8.2/musl-cross.patch b/package/gcc/patches/4.8.2/musl-cross.patch index 5c5db86b3..5afbe360d 100644 --- a/package/gcc/patches/4.8.2/musl-cross.patch +++ b/package/gcc/patches/4.8.2/musl-cross.patch @@ -1,63 +1,80 @@ -# HG changeset patch -# Parent df1a439b9058b07024ca556225d55535f5feb5dd -Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one. - -diff -r df1a439b9058 libstdc++-v3/configure.host ---- a/libstdc++-v3/configure.host Tue Dec 31 14:52:24 2013 -0500 -+++ b/libstdc++-v3/configure.host Tue Dec 31 14:54:49 2013 -0500 -@@ -264,6 +264,13 @@ - os_include_dir="os/bsd/freebsd" - ;; - gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) -+ # check for musl by target -+ case "${host_os}" in -+ *-musl*) -+ os_include_dir="os/generic" -+ ;; -+ *) +diff -Nur gcc-4.8.2.orig/fixincludes/mkfixinc.sh gcc-4.8.2/fixincludes/mkfixinc.sh +--- gcc-4.8.2.orig/fixincludes/mkfixinc.sh 2012-10-28 22:42:48.000000000 +0100 ++++ gcc-4.8.2/fixincludes/mkfixinc.sh 2014-04-14 10:40:44.602902861 +0200 +@@ -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.8.2.orig/gcc/config/aarch64/aarch64-linux.h gcc-4.8.2/gcc/config/aarch64/aarch64-linux.h +--- gcc-4.8.2.orig/gcc/config/aarch64/aarch64-linux.h 2013-08-13 15:22:18.000000000 +0200 ++++ gcc-4.8.2/gcc/config/aarch64/aarch64-linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -21,7 +21,11 @@ + #ifndef GCC_AARCH64_LINUX_H + #define GCC_AARCH64_LINUX_H + ++/* The AArch64 port currently supports two dynamic linkers: ++ - ld-linux-aarch64.so.1 - GLIBC dynamic linker ++ - ld-musl-aarch64.so.1 - musl libc dynamic linker */ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1" + + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + +diff -Nur gcc-4.8.2.orig/gcc/config/arm/linux-eabi.h gcc-4.8.2/gcc/config/arm/linux-eabi.h +--- gcc-4.8.2.orig/gcc/config/arm/linux-eabi.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/arm/linux-eabi.h 2014-04-14 10:40:44.602902861 +0200 +@@ -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" + - if [ "$uclibc" = "yes" ]; then - os_include_dir="os/uclibc" - elif [ "$bionic" = "yes" ]; then -@@ -272,6 +279,9 @@ - os_include_dir="os/gnu-linux" - fi - ;; + /* 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.8.2.orig/gcc/config/i386/linux64.h gcc-4.8.2/gcc/config/i386/linux64.h +--- gcc-4.8.2.orig/gcc/config/i386/linux64.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/i386/linux64.h 2014-04-14 10:40:44.602902861 +0200 +@@ -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" + -+ esac -+ ;; - hpux*) - os_include_dir="os/hpux" - ;; -# HG changeset patch -# Parent e5b4564f249f8634194bdabef4b3057d0e54ee97 -Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. - -diff -r e5b4564f249f gcc/config.gcc ---- a/gcc/config.gcc Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/config.gcc Tue Dec 31 14:54:52 2013 -0500 -@@ -550,7 +550,7 @@ - esac - - # Common C libraries. --tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" -+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" ++#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.8.2.orig/gcc/config/i386/linux.h gcc-4.8.2/gcc/config/i386/linux.h +--- gcc-4.8.2.orig/gcc/config/i386/linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/i386/linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -21,3 +21,4 @@ - # Common parts for widely ported systems. - case ${target} in -@@ -653,6 +653,9 @@ - *-*-*uclibc*) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" - ;; -+ *-*-*musl*) -+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" -+ ;; - *) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" - ;; -diff -r e5b4564f249f gcc/config/linux.h ---- a/gcc/config/linux.h Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/config/linux.h Tue Dec 31 14:54:52 2013 -0500 + #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.8.2.orig/gcc/config/linux.h gcc-4.8.2/gcc/config/linux.h +--- gcc-4.8.2.orig/gcc/config/linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/linux.h 2014-04-14 10:40:44.594902489 +0200 @@ -32,10 +32,12 @@ #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) @@ -203,9 +220,9 @@ diff -r e5b4564f249f gcc/config/linux.h + { 0, 0, 0, 0, 0, 0 } \ + } +#endif -diff -r e5b4564f249f gcc/config/linux.opt ---- a/gcc/config/linux.opt Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/config/linux.opt Tue Dec 31 14:54:52 2013 -0500 +diff -Nur gcc-4.8.2.orig/gcc/config/linux.opt gcc-4.8.2/gcc/config/linux.opt +--- gcc-4.8.2.orig/gcc/config/linux.opt 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/linux.opt 2014-04-14 10:40:44.594902489 +0200 @@ -30,3 +30,7 @@ muclibc Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic) @@ -214,348 +231,103 @@ diff -r e5b4564f249f gcc/config/linux.opt +mmusl +Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc) +Use musl C library -diff -r e5b4564f249f gcc/ginclude/stddef.h ---- a/gcc/ginclude/stddef.h Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/ginclude/stddef.h Tue Dec 31 14:54:52 2013 -0500 -@@ -181,6 +181,7 @@ - #ifndef _GCC_SIZE_T - #ifndef _SIZET_ - #ifndef __size_t -+#ifndef __DEFINED_size_t /* musl */ - #define __size_t__ /* BeOS */ - #define __SIZE_T__ /* Cray Unicos/Mk */ - #define _SIZE_T -@@ -197,6 +198,7 @@ - #define ___int_size_t_h - #define _GCC_SIZE_T - #define _SIZET_ -+#define __DEFINED_size_t /* musl */ - #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ - || defined(__FreeBSD_kernel__) - /* __size_t is a typedef on FreeBSD 5, must not trash it. */ -@@ -214,6 +216,7 @@ - typedef long ssize_t; - #endif /* __BEOS__ */ - #endif /* !(defined (__GNUG__) && defined (size_t)) */ -+#endif /* __DEFINED_size_t */ - #endif /* __size_t */ - #endif /* _SIZET_ */ - #endif /* _GCC_SIZE_T */ -# HG changeset patch -# Parent e08e44e39f5edde422f444487422046147d5821e -A fix for libgomp to correctly request a POSIX version for time support. - -diff -r e08e44e39f5e libgomp/config/posix/time.c ---- a/libgomp/config/posix/time.c Tue Dec 31 14:54:52 2013 -0500 -+++ b/libgomp/config/posix/time.c Tue Dec 31 14:54:55 2013 -0500 -@@ -28,6 +28,8 @@ - The following implementation uses the most simple POSIX routines. - If present, POSIX 4 clocks should be used instead. */ +diff -Nur gcc-4.8.2.orig/gcc/config/microblaze/linux.h gcc-4.8.2/gcc/config/microblaze/linux.h +--- gcc-4.8.2.orig/gcc/config/microblaze/linux.h 2013-03-14 16:43:23.000000000 +0100 ++++ gcc-4.8.2/gcc/config/microblaze/linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -25,7 +25,22 @@ + #undef TLS_NEEDS_GOT + #define TLS_NEEDS_GOT 1 -+#define _POSIX_C_SOURCE 199309L /* for clocks */ +-#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 + - #include "libgomp.h" - #include - #if TIME_WITH_SYS_TIME -diff -r 809c85574bfe libgcc/unwind-dw2-fde-dip.c ---- a/libgcc/unwind-dw2-fde-dip.c Tue Dec 31 14:54:55 2013 -0500 -+++ b/libgcc/unwind-dw2-fde-dip.c Tue Dec 31 14:54:58 2013 -0500 -@@ -46,33 +46,13 @@ - #include "unwind-compat.h" - #include "gthr.h" ++#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.8.2.orig/gcc/config/microblaze/microblaze.h gcc-4.8.2/gcc/config/microblaze/microblaze.h +--- gcc-4.8.2.orig/gcc/config/microblaze/microblaze.h 2013-03-14 16:43:23.000000000 +0100 ++++ gcc-4.8.2/gcc/config/microblaze/microblaze.h 2014-04-14 10:40:44.602902861 +0200 +@@ -213,6 +213,12 @@ + #define STRICT_ALIGNMENT 1 + #define PCC_BITFIELD_TYPE_MATTERS 1 --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ -- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) -+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) - # define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(__BIONIC__) --# define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(__FreeBSD__) && __FreeBSD__ >= 7 --# define ElfW __ElfN --# define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(__OpenBSD__) --# define ElfW(type) Elf_##type --# define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(TARGET_DL_ITERATE_PHDR) \ -- && defined(__sun__) && defined(__svr4__) --# define USE_PT_GNU_EH_FRAME -+# ifdef __OpenBSD__ -+# define ElfW(type) Elf_##typ -+# elif defined(__FreeBSD__) && __FreeBSD__ >= 7 -+# define ElfW __ElfN -+# endif ++#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.8.2.orig/gcc/config/mips/linux.h gcc-4.8.2/gcc/config/mips/linux.h +--- gcc-4.8.2.orig/gcc/config/mips/linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/mips/linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -18,3 +18,10 @@ + . */ + + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" ++ ++#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.8.2.orig/gcc/config/rs6000/linux64.h gcc-4.8.2/gcc/config/rs6000/linux64.h +--- gcc-4.8.2.orig/gcc/config/rs6000/linux64.h 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/config/rs6000/linux64.h 2014-04-14 10:40:44.602902861 +0200 +@@ -354,17 +354,21 @@ + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1" + #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 - - #if defined(USE_PT_GNU_EH_FRAME) -diff -r 03604918697c gcc/configure ---- a/gcc/configure Tue Dec 31 14:54:58 2013 -0500 -+++ b/gcc/configure Tue Dec 31 14:55:01 2013 -0500 -@@ -26739,6 +26739,9 @@ - else - gcc_cv_libc_provides_ssp=no - case "$target" in -+ *-*-musl*) -+ # All versions of musl provide stack protector -+ gcc_cv_libc_provides_ssp=yes;; - *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) - # glibc 2.4 and later provides __stack_chk_fail and - # either __stack_chk_guard, or TLS access to stack guard canary. -@@ -26772,6 +26775,7 @@ - # ) and for now - # simply assert that glibc does provide this, which is true for all - # realistically usable GNU/Hurd configurations. -+ # All supported versions of musl provide it as well - gcc_cv_libc_provides_ssp=yes;; - *-*-darwin* | *-*-freebsd*) - ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail" -@@ -26854,6 +26858,9 @@ - gcc_cv_target_dl_iterate_phdr=no - fi - ;; -+ *-linux-musl*) -+ gcc_cv_target_dl_iterate_phdr=yes -+ ;; - esac - - if test x$gcc_cv_target_dl_iterate_phdr = xyes; then -diff -r 03604918697c gcc/configure.ac ---- a/gcc/configure.ac Tue Dec 31 14:54:58 2013 -0500 -+++ b/gcc/configure.ac Tue Dec 31 14:55:01 2013 -0500 -@@ -4722,6 +4722,9 @@ - gcc_cv_libc_provides_ssp, - [gcc_cv_libc_provides_ssp=no - case "$target" in -+ *-*-musl*) -+ # All versions of musl provide stack protector -+ gcc_cv_libc_provides_ssp=yes;; - *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) - [# glibc 2.4 and later provides __stack_chk_fail and - # either __stack_chk_guard, or TLS access to stack guard canary. -@@ -4755,6 +4758,7 @@ - # ) and for now - # simply assert that glibc does provide this, which is true for all - # realistically usable GNU/Hurd configurations. -+ # All supported versions of musl provide it as well - gcc_cv_libc_provides_ssp=yes;; - *-*-darwin* | *-*-freebsd*) - AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes], -@@ -4820,6 +4824,9 @@ - gcc_cv_target_dl_iterate_phdr=no - fi - ;; -+ *-linux-musl*) -+ gcc_cv_target_dl_iterate_phdr=yes -+ ;; - esac - GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR]) - if test x$gcc_cv_target_dl_iterate_phdr = xyes; then -# HG changeset patch -# Parent 600a8a422ccaf5627ad1f5a138e7398df2b9e9d8 -Get rid of ever-broken fixincludes on musl. - -diff -r 600a8a422cca fixincludes/mkfixinc.sh ---- a/fixincludes/mkfixinc.sh Tue Dec 31 14:55:01 2013 -0500 -+++ b/fixincludes/mkfixinc.sh Tue Dec 31 14:55:04 2013 -0500 -@@ -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} -# HG changeset patch -# Parent 4696c3bf3d913eca88e9385ea9717541dfe1e033 -Support for i386-linux-musl and x86_64-linux-musl. - -diff -r 4696c3bf3d91 gcc/config/i386/linux.h ---- a/gcc/config/i386/linux.h Tue Dec 31 14:55:04 2013 -0500 -+++ b/gcc/config/i386/linux.h Tue Dec 31 14:55:08 2013 -0500 -@@ -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 -r 4696c3bf3d91 gcc/config/i386/linux64.h ---- a/gcc/config/i386/linux64.h Tue Dec 31 14:55:04 2013 -0500 -+++ b/gcc/config/i386/linux64.h Tue Dec 31 14:55:08 2013 -0500 -@@ -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 -r 4696c3bf3d91 libitm/config/linux/x86/tls.h ---- a/libitm/config/linux/x86/tls.h Tue Dec 31 14:55:04 2013 -0500 -+++ b/libitm/config/linux/x86/tls.h Tue Dec 31 14:55:08 2013 -0500 -@@ -25,16 +25,19 @@ - #ifndef LIBITM_X86_TLS_H - #define LIBITM_X86_TLS_H 1 - --#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) -+#if defined(__GLIBC_PREREQ) -+#if __GLIBC_PREREQ(2, 10) - /* Use slots in the TCB head rather than __thread lookups. - GLIBC has reserved words 10 through 13 for TM. */ - #define HAVE_ARCH_GTM_THREAD 1 - #define HAVE_ARCH_GTM_THREAD_DISP 1 - #endif -+#endif - - #include "config/generic/tls.h" - --#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) -+#if defined(__GLIBC_PREREQ) -+#if __GLIBC_PREREQ(2, 10) - namespace GTM HIDDEN { - - #ifdef __x86_64__ -@@ -101,5 +104,6 @@ - - } // namespace GTM - #endif /* >= GLIBC 2.10 */ -+#endif - - #endif // LIBITM_X86_TLS_H -# HG changeset patch -# Parent 6738fd6f6fcc2a72f2ba527bda3325642af26885 -Support for arm-linux-musl. - -diff -r 6738fd6f6fcc gcc/config/arm/linux-eabi.h ---- a/gcc/config/arm/linux-eabi.h Tue Dec 31 14:55:08 2013 -0500 -+++ b/gcc/config/arm/linux-eabi.h Tue Dec 31 14:55:11 2013 -0500 -@@ -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 -r 6738fd6f6fcc libitm/config/arm/hwcap.cc ---- a/libitm/config/arm/hwcap.cc Tue Dec 31 14:55:08 2013 -0500 -+++ b/libitm/config/arm/hwcap.cc Tue Dec 31 14:55:11 2013 -0500 -@@ -40,7 +40,11 @@ - - #ifdef __linux__ - #include -+#ifdef __GLIBC__ - #include -+#else -+#include -+#endif - #include - - static void __attribute__((constructor)) -# HG changeset patch -# Parent 7d7383f638705a01fdc18e0e7e0c9cdb6387fc5d -Support for mips-linux-musl. - -diff -r 7d7383f63870 gcc/config/mips/linux.h ---- a/gcc/config/mips/linux.h Tue Dec 31 14:55:11 2013 -0500 -+++ b/gcc/config/mips/linux.h Tue Dec 31 14:55:14 2013 -0500 -@@ -18,3 +18,10 @@ - . */ - - #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" -+ -+#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" -# HG changeset patch -# Parent 89df6d7e91c686da676ce27ef9b9d10522810c26 -Support for powerpc-linux-musl. - -diff -r 89df6d7e91c6 gcc/config.gcc ---- a/gcc/config.gcc Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config.gcc Tue Dec 31 14:55:17 2013 -0500 -@@ -2117,6 +2117,10 @@ - powerpc*-*-linux*paired*) - tm_file="${tm_file} rs6000/750cl.h" ;; - esac -+ case ${target} in -+ *-linux*-musl*) -+ enable_secureplt=yes ;; -+ esac - if test x${enable_secureplt} = xyes; then - tm_file="rs6000/secureplt.h ${tm_file}" - fi -diff -r 89df6d7e91c6 gcc/config/rs6000/linux64.h ---- a/gcc/config/rs6000/linux64.h Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config/rs6000/linux64.h Tue Dec 31 14:55:17 2013 -0500 -@@ -354,17 +354,21 @@ - #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1" - #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 \ -- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) -+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) + #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 \ +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) #undef DEFAULT_ASM_ENDIAN #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN) -diff -r 89df6d7e91c6 gcc/config/rs6000/secureplt.h ---- a/gcc/config/rs6000/secureplt.h Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config/rs6000/secureplt.h Tue Dec 31 14:55:17 2013 -0500 +diff -Nur gcc-4.8.2.orig/gcc/config/rs6000/secureplt.h gcc-4.8.2/gcc/config/rs6000/secureplt.h +--- gcc-4.8.2.orig/gcc/config/rs6000/secureplt.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/rs6000/secureplt.h 2014-04-14 10:40:44.602902861 +0200 @@ -18,3 +18,4 @@ . */ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt" +#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt" -diff -r 89df6d7e91c6 gcc/config/rs6000/sysv4.h ---- a/gcc/config/rs6000/sysv4.h Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config/rs6000/sysv4.h Tue Dec 31 14:55:17 2013 -0500 +diff -Nur gcc-4.8.2.orig/gcc/config/rs6000/sysv4.h gcc-4.8.2/gcc/config/rs6000/sysv4.h +--- gcc-4.8.2.orig/gcc/config/rs6000/sysv4.h 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/config/rs6000/sysv4.h 2014-04-14 10:40:44.602902861 +0200 @@ -550,6 +550,9 @@ #ifndef CC1_SECURE_PLT_DEFAULT_SPEC #define CC1_SECURE_PLT_DEFAULT_SPEC "" @@ -606,93 +378,295 @@ diff -r 89df6d7e91c6 gcc/config/rs6000/sysv4.h { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ -diff -r d7ce17b2f2d6 gcc/config/aarch64/aarch64-linux.h ---- a/gcc/config/aarch64/aarch64-linux.h Tue Dec 31 14:55:17 2013 -0500 -+++ b/gcc/config/aarch64/aarch64-linux.h Tue Dec 31 14:55:20 2013 -0500 -@@ -21,7 +21,11 @@ - #ifndef GCC_AARCH64_LINUX_H - #define GCC_AARCH64_LINUX_H - -+/* The AArch64 port currently supports two dynamic linkers: -+ - ld-linux-aarch64.so.1 - GLIBC dynamic linker -+ - ld-musl-aarch64.so.1 - musl libc dynamic linker */ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1" - - #define CPP_SPEC "%{pthread:-D_REENTRANT}" +diff -Nur gcc-4.8.2.orig/gcc/config/sh/linux.h gcc-4.8.2/gcc/config/sh/linux.h +--- gcc-4.8.2.orig/gcc/config/sh/linux.h 2013-03-14 04:01:53.000000000 +0100 ++++ gcc-4.8.2/gcc/config/sh/linux.h 2014-04-14 10:42:16.650563570 +0200 +@@ -43,7 +43,14 @@ -# HG changeset patch -# Parent f2601e4063d0d58d8ab04185e8baefd560d09496 -Microblaze support (again). - - -diff -r f2601e4063d0 -r 0736dfe1aa0d gcc/config/microblaze/linux.h ---- a/gcc/config/microblaze/linux.h Tue Dec 31 14:55:20 2013 -0500 -+++ b/gcc/config/microblaze/linux.h Tue Dec 31 15:09:52 2013 -0500 -@@ -25,7 +25,22 @@ - #undef TLS_NEEDS_GOT - #define TLS_NEEDS_GOT 1 + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack --#define DYNAMIC_LINKER "/lib/ld.so.1" -+#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */ -+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}" ++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */ ++#define MUSL_DYNAMIC_LINKER_E "eb" +#else -+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}" ++#define MUSL_DYNAMIC_LINKER_E +#endif + -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1" -+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1" + + #undef SUBTARGET_LINK_EMUL_SUFFIX + #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" +diff -Nur gcc-4.8.2.orig/gcc/config/sh/sh.c gcc-4.8.2/gcc/config/sh/sh.c +--- gcc-4.8.2.orig/gcc/config/sh/sh.c 2013-03-13 19:09:10.000000000 +0100 ++++ gcc-4.8.2/gcc/config/sh/sh.c 2014-04-14 10:41:29.816848543 +0200 +@@ -24,6 +24,9 @@ + malloc & co, which are poisoned by "system.h". The proper solution is + to include in "system.h" instead of . */ + #include ++#include ++#include ++#include + + #include "config.h" + #include "system.h" +@@ -60,9 +63,6 @@ + #include "tm-constrs.h" + #include "opts.h" + +-#include +-#include +-#include + + int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch; + +diff -Nur gcc-4.8.2.orig/gcc/config.gcc gcc-4.8.2/gcc/config.gcc +--- gcc-4.8.2.orig/gcc/config.gcc 2013-10-03 02:47:24.000000000 +0200 ++++ gcc-4.8.2/gcc/config.gcc 2014-04-14 10:40:44.602902861 +0200 +@@ -550,7 +550,7 @@ + esac + + # Common C libraries. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" + + # Common parts for widely ported systems. + case ${target} in +@@ -653,6 +653,9 @@ + *-*-*uclibc*) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" + ;; ++ *-*-*musl*) ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" ++ ;; + *) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + ;; +@@ -2114,6 +2117,10 @@ + powerpc*-*-linux*paired*) + tm_file="${tm_file} rs6000/750cl.h" ;; + esac ++ case ${target} in ++ *-linux*-musl*) ++ enable_secureplt=yes ;; ++ esac + if test x${enable_secureplt} = xyes; then + tm_file="rs6000/secureplt.h ${tm_file}" + fi +diff -Nur gcc-4.8.2.orig/gcc/configure gcc-4.8.2/gcc/configure +--- gcc-4.8.2.orig/gcc/configure 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/configure 2014-04-14 10:40:44.598902675 +0200 +@@ -26739,6 +26739,9 @@ + else + gcc_cv_libc_provides_ssp=no + case "$target" in ++ *-*-musl*) ++ # All versions of musl provide stack protector ++ gcc_cv_libc_provides_ssp=yes;; + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) + # glibc 2.4 and later provides __stack_chk_fail and + # either __stack_chk_guard, or TLS access to stack guard canary. +@@ -26772,6 +26775,7 @@ + # ) and for now + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. ++ # All supported versions of musl provide it as well + gcc_cv_libc_provides_ssp=yes;; + *-*-darwin* | *-*-freebsd*) + ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail" +@@ -26854,6 +26858,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +diff -Nur gcc-4.8.2.orig/gcc/configure.ac gcc-4.8.2/gcc/configure.ac +--- gcc-4.8.2.orig/gcc/configure.ac 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/configure.ac 2014-04-14 10:40:44.598902675 +0200 +@@ -4722,6 +4722,9 @@ + gcc_cv_libc_provides_ssp, + [gcc_cv_libc_provides_ssp=no + case "$target" in ++ *-*-musl*) ++ # All versions of musl provide stack protector ++ gcc_cv_libc_provides_ssp=yes;; + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) + [# glibc 2.4 and later provides __stack_chk_fail and + # either __stack_chk_guard, or TLS access to stack guard canary. +@@ -4755,6 +4758,7 @@ + # ) and for now + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. ++ # All supported versions of musl provide it as well + gcc_cv_libc_provides_ssp=yes;; + *-*-darwin* | *-*-freebsd*) + AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes], +@@ -4820,6 +4824,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR]) + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +diff -Nur gcc-4.8.2.orig/gcc/ginclude/stddef.h gcc-4.8.2/gcc/ginclude/stddef.h +--- gcc-4.8.2.orig/gcc/ginclude/stddef.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/ginclude/stddef.h 2014-04-14 10:40:44.594902489 +0200 +@@ -181,6 +181,7 @@ + #ifndef _GCC_SIZE_T + #ifndef _SIZET_ + #ifndef __size_t ++#ifndef __DEFINED_size_t /* musl */ + #define __size_t__ /* BeOS */ + #define __SIZE_T__ /* Cray Unicos/Mk */ + #define _SIZE_T +@@ -197,6 +198,7 @@ + #define ___int_size_t_h + #define _GCC_SIZE_T + #define _SIZET_ ++#define __DEFINED_size_t /* musl */ + #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ + || defined(__FreeBSD_kernel__) + /* __size_t is a typedef on FreeBSD 5, must not trash it. */ +@@ -214,6 +216,7 @@ + typedef long ssize_t; + #endif /* __BEOS__ */ + #endif /* !(defined (__GNUG__) && defined (size_t)) */ ++#endif /* __DEFINED_size_t */ + #endif /* __size_t */ + #endif /* _SIZET_ */ + #endif /* _GCC_SIZE_T */ +diff -Nur gcc-4.8.2.orig/libgcc/unwind-dw2-fde-dip.c gcc-4.8.2/libgcc/unwind-dw2-fde-dip.c +--- gcc-4.8.2.orig/libgcc/unwind-dw2-fde-dip.c 2013-02-04 20:06:20.000000000 +0100 ++++ gcc-4.8.2/libgcc/unwind-dw2-fde-dip.c 2014-04-14 10:40:44.594902489 +0200 +@@ -46,33 +46,13 @@ + #include "unwind-compat.h" + #include "gthr.h" + +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__BIONIC__) +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__FreeBSD__) && __FreeBSD__ >= 7 +-# define ElfW __ElfN +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__OpenBSD__) +-# define ElfW(type) Elf_##type +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(TARGET_DL_ITERATE_PHDR) \ +- && defined(__sun__) && defined(__svr4__) ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) + # define USE_PT_GNU_EH_FRAME ++# ifdef __OpenBSD__ ++# define ElfW(type) Elf_##typ ++# elif defined(__FreeBSD__) && __FreeBSD__ >= 7 ++# define ElfW __ElfN ++# endif + #endif + + #if defined(USE_PT_GNU_EH_FRAME) +diff -Nur gcc-4.8.2.orig/libgomp/config/posix/time.c gcc-4.8.2/libgomp/config/posix/time.c +--- gcc-4.8.2.orig/libgomp/config/posix/time.c 2013-01-14 19:18:49.000000000 +0100 ++++ gcc-4.8.2/libgomp/config/posix/time.c 2014-04-14 10:40:44.594902489 +0200 +@@ -28,6 +28,8 @@ + The following implementation uses the most simple POSIX routines. + If present, POSIX 4 clocks should be used instead. */ + ++#define _POSIX_C_SOURCE 199309L /* for clocks */ + -+#if DEFAULT_LIBC == LIBC_MUSL -+#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER + #include "libgomp.h" + #include + #if TIME_WITH_SYS_TIME +diff -Nur gcc-4.8.2.orig/libitm/config/arm/hwcap.cc gcc-4.8.2/libitm/config/arm/hwcap.cc +--- gcc-4.8.2.orig/libitm/config/arm/hwcap.cc 2013-02-03 18:46:11.000000000 +0100 ++++ gcc-4.8.2/libitm/config/arm/hwcap.cc 2014-04-14 10:40:44.602902861 +0200 +@@ -40,7 +40,11 @@ + + #ifdef __linux__ + #include ++#ifdef __GLIBC__ + #include +#else -+#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER ++#include +#endif -+ -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "dynamic_linker", DYNAMIC_LINKER } -From 478ee0c03a08e2ef9371fd88d516738936943e78 Mon Sep 17 00:00:00 2001 -From: David Holsgrove -Date: Fri, 28 Sep 2012 16:32:03 +1000 -Subject: [PATCH 06/11] [Patch, microblaze]: Add SIZE_TYPE and PTRDIFF_TYPE to - microblaze.h - -Fixes warnings like; - -warning: format '%zX' expects argument of type 'size_t', -but argument 3 has type 'unsigned int' [-Wformat] - -Changelog - -2013-03-18 David Holsgrove - - * gcc/config/microblaze/microblaze.h: Define SIZE_TYPE - and PTRDIFF_TYPE. - -Signed-off-by: David Holsgrove ---- - gcc/config/microblaze/microblaze.h | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h -index 19cdfed..e772a3f 100644 ---- a/gcc/config/microblaze/microblaze.h -+++ b/gcc/config/microblaze/microblaze.h -@@ -213,6 +213,12 @@ extern enum pipeline_type microblaze_pipe; - #define STRICT_ALIGNMENT 1 - #define PCC_BITFIELD_TYPE_MATTERS 1 + #include -+#undef SIZE_TYPE -+#define SIZE_TYPE "unsigned int" + static void __attribute__((constructor)) +diff -Nur gcc-4.8.2.orig/libitm/config/linux/x86/tls.h gcc-4.8.2/libitm/config/linux/x86/tls.h +--- gcc-4.8.2.orig/libitm/config/linux/x86/tls.h 2013-02-03 18:46:11.000000000 +0100 ++++ gcc-4.8.2/libitm/config/linux/x86/tls.h 2014-04-14 10:40:44.602902861 +0200 +@@ -25,16 +25,19 @@ + #ifndef LIBITM_X86_TLS_H + #define LIBITM_X86_TLS_H 1 + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + /* Use slots in the TCB head rather than __thread lookups. + GLIBC has reserved words 10 through 13 for TM. */ + #define HAVE_ARCH_GTM_THREAD 1 + #define HAVE_ARCH_GTM_THREAD_DISP 1 + #endif ++#endif + + #include "config/generic/tls.h" + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + namespace GTM HIDDEN { + + #ifdef __x86_64__ +@@ -101,5 +104,6 @@ + + } // namespace GTM + #endif /* >= GLIBC 2.10 */ ++#endif + + #endif // LIBITM_X86_TLS_H +diff -Nur gcc-4.8.2.orig/libstdc++-v3/configure.host gcc-4.8.2/libstdc++-v3/configure.host +--- gcc-4.8.2.orig/libstdc++-v3/configure.host 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/libstdc++-v3/configure.host 2014-04-14 10:40:44.594902489 +0200 +@@ -264,6 +264,13 @@ + os_include_dir="os/bsd/freebsd" + ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) ++ # check for musl by target ++ case "${host_os}" in ++ *-musl*) ++ os_include_dir="os/generic" ++ ;; ++ *) + -+#undef PTRDIFF_TYPE -+#define PTRDIFF_TYPE "int" + if [ "$uclibc" = "yes" ]; then + os_include_dir="os/uclibc" + elif [ "$bionic" = "yes" ]; then +@@ -272,6 +279,9 @@ + os_include_dir="os/gnu-linux" + fi + ;; + - #define CONSTANT_ALIGNMENT(EXP, ALIGN) \ - ((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR) \ - && (ALIGN) < BITS_PER_WORD \ --- -1.7.9.5 - ++ esac ++ ;; + hpux*) + os_include_dir="os/hpux" + ;; diff --git a/package/gcc/patches/4.8.2/musl-sh.patch b/package/gcc/patches/4.8.2/musl-sh.patch deleted file mode 100644 index 237f76f63..000000000 --- a/package/gcc/patches/4.8.2/musl-sh.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Nur gcc-4.8.2.orig/gcc/config/sh/linux.h gcc-4.8.2/gcc/config/sh/linux.h ---- gcc-4.8.2.orig/gcc/config/sh/linux.h 2013-03-14 04:01:53.000000000 +0100 -+++ gcc-4.8.2/gcc/config/sh/linux.h 2014-03-01 11:33:10.000000000 +0100 -@@ -44,6 +44,7 @@ - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack - - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh.so.1" - - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" diff --git a/toolchain/gcc/patches/4.8.2/musl-cross.patch b/toolchain/gcc/patches/4.8.2/musl-cross.patch index 5c5db86b3..5afbe360d 100644 --- a/toolchain/gcc/patches/4.8.2/musl-cross.patch +++ b/toolchain/gcc/patches/4.8.2/musl-cross.patch @@ -1,63 +1,80 @@ -# HG changeset patch -# Parent df1a439b9058b07024ca556225d55535f5feb5dd -Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one. - -diff -r df1a439b9058 libstdc++-v3/configure.host ---- a/libstdc++-v3/configure.host Tue Dec 31 14:52:24 2013 -0500 -+++ b/libstdc++-v3/configure.host Tue Dec 31 14:54:49 2013 -0500 -@@ -264,6 +264,13 @@ - os_include_dir="os/bsd/freebsd" - ;; - gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) -+ # check for musl by target -+ case "${host_os}" in -+ *-musl*) -+ os_include_dir="os/generic" -+ ;; -+ *) +diff -Nur gcc-4.8.2.orig/fixincludes/mkfixinc.sh gcc-4.8.2/fixincludes/mkfixinc.sh +--- gcc-4.8.2.orig/fixincludes/mkfixinc.sh 2012-10-28 22:42:48.000000000 +0100 ++++ gcc-4.8.2/fixincludes/mkfixinc.sh 2014-04-14 10:40:44.602902861 +0200 +@@ -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.8.2.orig/gcc/config/aarch64/aarch64-linux.h gcc-4.8.2/gcc/config/aarch64/aarch64-linux.h +--- gcc-4.8.2.orig/gcc/config/aarch64/aarch64-linux.h 2013-08-13 15:22:18.000000000 +0200 ++++ gcc-4.8.2/gcc/config/aarch64/aarch64-linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -21,7 +21,11 @@ + #ifndef GCC_AARCH64_LINUX_H + #define GCC_AARCH64_LINUX_H + ++/* The AArch64 port currently supports two dynamic linkers: ++ - ld-linux-aarch64.so.1 - GLIBC dynamic linker ++ - ld-musl-aarch64.so.1 - musl libc dynamic linker */ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1" + + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + +diff -Nur gcc-4.8.2.orig/gcc/config/arm/linux-eabi.h gcc-4.8.2/gcc/config/arm/linux-eabi.h +--- gcc-4.8.2.orig/gcc/config/arm/linux-eabi.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/arm/linux-eabi.h 2014-04-14 10:40:44.602902861 +0200 +@@ -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" + - if [ "$uclibc" = "yes" ]; then - os_include_dir="os/uclibc" - elif [ "$bionic" = "yes" ]; then -@@ -272,6 +279,9 @@ - os_include_dir="os/gnu-linux" - fi - ;; + /* 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.8.2.orig/gcc/config/i386/linux64.h gcc-4.8.2/gcc/config/i386/linux64.h +--- gcc-4.8.2.orig/gcc/config/i386/linux64.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/i386/linux64.h 2014-04-14 10:40:44.602902861 +0200 +@@ -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" + -+ esac -+ ;; - hpux*) - os_include_dir="os/hpux" - ;; -# HG changeset patch -# Parent e5b4564f249f8634194bdabef4b3057d0e54ee97 -Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. - -diff -r e5b4564f249f gcc/config.gcc ---- a/gcc/config.gcc Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/config.gcc Tue Dec 31 14:54:52 2013 -0500 -@@ -550,7 +550,7 @@ - esac - - # Common C libraries. --tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" -+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" ++#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.8.2.orig/gcc/config/i386/linux.h gcc-4.8.2/gcc/config/i386/linux.h +--- gcc-4.8.2.orig/gcc/config/i386/linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/i386/linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -21,3 +21,4 @@ - # Common parts for widely ported systems. - case ${target} in -@@ -653,6 +653,9 @@ - *-*-*uclibc*) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" - ;; -+ *-*-*musl*) -+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" -+ ;; - *) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" - ;; -diff -r e5b4564f249f gcc/config/linux.h ---- a/gcc/config/linux.h Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/config/linux.h Tue Dec 31 14:54:52 2013 -0500 + #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.8.2.orig/gcc/config/linux.h gcc-4.8.2/gcc/config/linux.h +--- gcc-4.8.2.orig/gcc/config/linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/linux.h 2014-04-14 10:40:44.594902489 +0200 @@ -32,10 +32,12 @@ #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) @@ -203,9 +220,9 @@ diff -r e5b4564f249f gcc/config/linux.h + { 0, 0, 0, 0, 0, 0 } \ + } +#endif -diff -r e5b4564f249f gcc/config/linux.opt ---- a/gcc/config/linux.opt Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/config/linux.opt Tue Dec 31 14:54:52 2013 -0500 +diff -Nur gcc-4.8.2.orig/gcc/config/linux.opt gcc-4.8.2/gcc/config/linux.opt +--- gcc-4.8.2.orig/gcc/config/linux.opt 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/linux.opt 2014-04-14 10:40:44.594902489 +0200 @@ -30,3 +30,7 @@ muclibc Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic) @@ -214,348 +231,103 @@ diff -r e5b4564f249f gcc/config/linux.opt +mmusl +Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc) +Use musl C library -diff -r e5b4564f249f gcc/ginclude/stddef.h ---- a/gcc/ginclude/stddef.h Tue Dec 31 14:54:49 2013 -0500 -+++ b/gcc/ginclude/stddef.h Tue Dec 31 14:54:52 2013 -0500 -@@ -181,6 +181,7 @@ - #ifndef _GCC_SIZE_T - #ifndef _SIZET_ - #ifndef __size_t -+#ifndef __DEFINED_size_t /* musl */ - #define __size_t__ /* BeOS */ - #define __SIZE_T__ /* Cray Unicos/Mk */ - #define _SIZE_T -@@ -197,6 +198,7 @@ - #define ___int_size_t_h - #define _GCC_SIZE_T - #define _SIZET_ -+#define __DEFINED_size_t /* musl */ - #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ - || defined(__FreeBSD_kernel__) - /* __size_t is a typedef on FreeBSD 5, must not trash it. */ -@@ -214,6 +216,7 @@ - typedef long ssize_t; - #endif /* __BEOS__ */ - #endif /* !(defined (__GNUG__) && defined (size_t)) */ -+#endif /* __DEFINED_size_t */ - #endif /* __size_t */ - #endif /* _SIZET_ */ - #endif /* _GCC_SIZE_T */ -# HG changeset patch -# Parent e08e44e39f5edde422f444487422046147d5821e -A fix for libgomp to correctly request a POSIX version for time support. - -diff -r e08e44e39f5e libgomp/config/posix/time.c ---- a/libgomp/config/posix/time.c Tue Dec 31 14:54:52 2013 -0500 -+++ b/libgomp/config/posix/time.c Tue Dec 31 14:54:55 2013 -0500 -@@ -28,6 +28,8 @@ - The following implementation uses the most simple POSIX routines. - If present, POSIX 4 clocks should be used instead. */ +diff -Nur gcc-4.8.2.orig/gcc/config/microblaze/linux.h gcc-4.8.2/gcc/config/microblaze/linux.h +--- gcc-4.8.2.orig/gcc/config/microblaze/linux.h 2013-03-14 16:43:23.000000000 +0100 ++++ gcc-4.8.2/gcc/config/microblaze/linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -25,7 +25,22 @@ + #undef TLS_NEEDS_GOT + #define TLS_NEEDS_GOT 1 -+#define _POSIX_C_SOURCE 199309L /* for clocks */ +-#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 + - #include "libgomp.h" - #include - #if TIME_WITH_SYS_TIME -diff -r 809c85574bfe libgcc/unwind-dw2-fde-dip.c ---- a/libgcc/unwind-dw2-fde-dip.c Tue Dec 31 14:54:55 2013 -0500 -+++ b/libgcc/unwind-dw2-fde-dip.c Tue Dec 31 14:54:58 2013 -0500 -@@ -46,33 +46,13 @@ - #include "unwind-compat.h" - #include "gthr.h" ++#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.8.2.orig/gcc/config/microblaze/microblaze.h gcc-4.8.2/gcc/config/microblaze/microblaze.h +--- gcc-4.8.2.orig/gcc/config/microblaze/microblaze.h 2013-03-14 16:43:23.000000000 +0100 ++++ gcc-4.8.2/gcc/config/microblaze/microblaze.h 2014-04-14 10:40:44.602902861 +0200 +@@ -213,6 +213,12 @@ + #define STRICT_ALIGNMENT 1 + #define PCC_BITFIELD_TYPE_MATTERS 1 --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ -- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) -+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) - # define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(__BIONIC__) --# define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(__FreeBSD__) && __FreeBSD__ >= 7 --# define ElfW __ElfN --# define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(__OpenBSD__) --# define ElfW(type) Elf_##type --# define USE_PT_GNU_EH_FRAME --#endif -- --#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -- && defined(TARGET_DL_ITERATE_PHDR) \ -- && defined(__sun__) && defined(__svr4__) --# define USE_PT_GNU_EH_FRAME -+# ifdef __OpenBSD__ -+# define ElfW(type) Elf_##typ -+# elif defined(__FreeBSD__) && __FreeBSD__ >= 7 -+# define ElfW __ElfN -+# endif ++#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.8.2.orig/gcc/config/mips/linux.h gcc-4.8.2/gcc/config/mips/linux.h +--- gcc-4.8.2.orig/gcc/config/mips/linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/mips/linux.h 2014-04-14 10:40:44.602902861 +0200 +@@ -18,3 +18,10 @@ + . */ + + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" ++ ++#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.8.2.orig/gcc/config/rs6000/linux64.h gcc-4.8.2/gcc/config/rs6000/linux64.h +--- gcc-4.8.2.orig/gcc/config/rs6000/linux64.h 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/config/rs6000/linux64.h 2014-04-14 10:40:44.602902861 +0200 +@@ -354,17 +354,21 @@ + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1" + #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 - - #if defined(USE_PT_GNU_EH_FRAME) -diff -r 03604918697c gcc/configure ---- a/gcc/configure Tue Dec 31 14:54:58 2013 -0500 -+++ b/gcc/configure Tue Dec 31 14:55:01 2013 -0500 -@@ -26739,6 +26739,9 @@ - else - gcc_cv_libc_provides_ssp=no - case "$target" in -+ *-*-musl*) -+ # All versions of musl provide stack protector -+ gcc_cv_libc_provides_ssp=yes;; - *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) - # glibc 2.4 and later provides __stack_chk_fail and - # either __stack_chk_guard, or TLS access to stack guard canary. -@@ -26772,6 +26775,7 @@ - # ) and for now - # simply assert that glibc does provide this, which is true for all - # realistically usable GNU/Hurd configurations. -+ # All supported versions of musl provide it as well - gcc_cv_libc_provides_ssp=yes;; - *-*-darwin* | *-*-freebsd*) - ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail" -@@ -26854,6 +26858,9 @@ - gcc_cv_target_dl_iterate_phdr=no - fi - ;; -+ *-linux-musl*) -+ gcc_cv_target_dl_iterate_phdr=yes -+ ;; - esac - - if test x$gcc_cv_target_dl_iterate_phdr = xyes; then -diff -r 03604918697c gcc/configure.ac ---- a/gcc/configure.ac Tue Dec 31 14:54:58 2013 -0500 -+++ b/gcc/configure.ac Tue Dec 31 14:55:01 2013 -0500 -@@ -4722,6 +4722,9 @@ - gcc_cv_libc_provides_ssp, - [gcc_cv_libc_provides_ssp=no - case "$target" in -+ *-*-musl*) -+ # All versions of musl provide stack protector -+ gcc_cv_libc_provides_ssp=yes;; - *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) - [# glibc 2.4 and later provides __stack_chk_fail and - # either __stack_chk_guard, or TLS access to stack guard canary. -@@ -4755,6 +4758,7 @@ - # ) and for now - # simply assert that glibc does provide this, which is true for all - # realistically usable GNU/Hurd configurations. -+ # All supported versions of musl provide it as well - gcc_cv_libc_provides_ssp=yes;; - *-*-darwin* | *-*-freebsd*) - AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes], -@@ -4820,6 +4824,9 @@ - gcc_cv_target_dl_iterate_phdr=no - fi - ;; -+ *-linux-musl*) -+ gcc_cv_target_dl_iterate_phdr=yes -+ ;; - esac - GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR]) - if test x$gcc_cv_target_dl_iterate_phdr = xyes; then -# HG changeset patch -# Parent 600a8a422ccaf5627ad1f5a138e7398df2b9e9d8 -Get rid of ever-broken fixincludes on musl. - -diff -r 600a8a422cca fixincludes/mkfixinc.sh ---- a/fixincludes/mkfixinc.sh Tue Dec 31 14:55:01 2013 -0500 -+++ b/fixincludes/mkfixinc.sh Tue Dec 31 14:55:04 2013 -0500 -@@ -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} -# HG changeset patch -# Parent 4696c3bf3d913eca88e9385ea9717541dfe1e033 -Support for i386-linux-musl and x86_64-linux-musl. - -diff -r 4696c3bf3d91 gcc/config/i386/linux.h ---- a/gcc/config/i386/linux.h Tue Dec 31 14:55:04 2013 -0500 -+++ b/gcc/config/i386/linux.h Tue Dec 31 14:55:08 2013 -0500 -@@ -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 -r 4696c3bf3d91 gcc/config/i386/linux64.h ---- a/gcc/config/i386/linux64.h Tue Dec 31 14:55:04 2013 -0500 -+++ b/gcc/config/i386/linux64.h Tue Dec 31 14:55:08 2013 -0500 -@@ -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 -r 4696c3bf3d91 libitm/config/linux/x86/tls.h ---- a/libitm/config/linux/x86/tls.h Tue Dec 31 14:55:04 2013 -0500 -+++ b/libitm/config/linux/x86/tls.h Tue Dec 31 14:55:08 2013 -0500 -@@ -25,16 +25,19 @@ - #ifndef LIBITM_X86_TLS_H - #define LIBITM_X86_TLS_H 1 - --#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) -+#if defined(__GLIBC_PREREQ) -+#if __GLIBC_PREREQ(2, 10) - /* Use slots in the TCB head rather than __thread lookups. - GLIBC has reserved words 10 through 13 for TM. */ - #define HAVE_ARCH_GTM_THREAD 1 - #define HAVE_ARCH_GTM_THREAD_DISP 1 - #endif -+#endif - - #include "config/generic/tls.h" - --#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) -+#if defined(__GLIBC_PREREQ) -+#if __GLIBC_PREREQ(2, 10) - namespace GTM HIDDEN { - - #ifdef __x86_64__ -@@ -101,5 +104,6 @@ - - } // namespace GTM - #endif /* >= GLIBC 2.10 */ -+#endif - - #endif // LIBITM_X86_TLS_H -# HG changeset patch -# Parent 6738fd6f6fcc2a72f2ba527bda3325642af26885 -Support for arm-linux-musl. - -diff -r 6738fd6f6fcc gcc/config/arm/linux-eabi.h ---- a/gcc/config/arm/linux-eabi.h Tue Dec 31 14:55:08 2013 -0500 -+++ b/gcc/config/arm/linux-eabi.h Tue Dec 31 14:55:11 2013 -0500 -@@ -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 -r 6738fd6f6fcc libitm/config/arm/hwcap.cc ---- a/libitm/config/arm/hwcap.cc Tue Dec 31 14:55:08 2013 -0500 -+++ b/libitm/config/arm/hwcap.cc Tue Dec 31 14:55:11 2013 -0500 -@@ -40,7 +40,11 @@ - - #ifdef __linux__ - #include -+#ifdef __GLIBC__ - #include -+#else -+#include -+#endif - #include - - static void __attribute__((constructor)) -# HG changeset patch -# Parent 7d7383f638705a01fdc18e0e7e0c9cdb6387fc5d -Support for mips-linux-musl. - -diff -r 7d7383f63870 gcc/config/mips/linux.h ---- a/gcc/config/mips/linux.h Tue Dec 31 14:55:11 2013 -0500 -+++ b/gcc/config/mips/linux.h Tue Dec 31 14:55:14 2013 -0500 -@@ -18,3 +18,10 @@ - . */ - - #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" -+ -+#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" -# HG changeset patch -# Parent 89df6d7e91c686da676ce27ef9b9d10522810c26 -Support for powerpc-linux-musl. - -diff -r 89df6d7e91c6 gcc/config.gcc ---- a/gcc/config.gcc Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config.gcc Tue Dec 31 14:55:17 2013 -0500 -@@ -2117,6 +2117,10 @@ - powerpc*-*-linux*paired*) - tm_file="${tm_file} rs6000/750cl.h" ;; - esac -+ case ${target} in -+ *-linux*-musl*) -+ enable_secureplt=yes ;; -+ esac - if test x${enable_secureplt} = xyes; then - tm_file="rs6000/secureplt.h ${tm_file}" - fi -diff -r 89df6d7e91c6 gcc/config/rs6000/linux64.h ---- a/gcc/config/rs6000/linux64.h Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config/rs6000/linux64.h Tue Dec 31 14:55:17 2013 -0500 -@@ -354,17 +354,21 @@ - #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1" - #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 \ -- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) -+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) + #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 \ +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) #undef DEFAULT_ASM_ENDIAN #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN) -diff -r 89df6d7e91c6 gcc/config/rs6000/secureplt.h ---- a/gcc/config/rs6000/secureplt.h Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config/rs6000/secureplt.h Tue Dec 31 14:55:17 2013 -0500 +diff -Nur gcc-4.8.2.orig/gcc/config/rs6000/secureplt.h gcc-4.8.2/gcc/config/rs6000/secureplt.h +--- gcc-4.8.2.orig/gcc/config/rs6000/secureplt.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/config/rs6000/secureplt.h 2014-04-14 10:40:44.602902861 +0200 @@ -18,3 +18,4 @@ . */ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt" +#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt" -diff -r 89df6d7e91c6 gcc/config/rs6000/sysv4.h ---- a/gcc/config/rs6000/sysv4.h Tue Dec 31 14:55:14 2013 -0500 -+++ b/gcc/config/rs6000/sysv4.h Tue Dec 31 14:55:17 2013 -0500 +diff -Nur gcc-4.8.2.orig/gcc/config/rs6000/sysv4.h gcc-4.8.2/gcc/config/rs6000/sysv4.h +--- gcc-4.8.2.orig/gcc/config/rs6000/sysv4.h 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/config/rs6000/sysv4.h 2014-04-14 10:40:44.602902861 +0200 @@ -550,6 +550,9 @@ #ifndef CC1_SECURE_PLT_DEFAULT_SPEC #define CC1_SECURE_PLT_DEFAULT_SPEC "" @@ -606,93 +378,295 @@ diff -r 89df6d7e91c6 gcc/config/rs6000/sysv4.h { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ -diff -r d7ce17b2f2d6 gcc/config/aarch64/aarch64-linux.h ---- a/gcc/config/aarch64/aarch64-linux.h Tue Dec 31 14:55:17 2013 -0500 -+++ b/gcc/config/aarch64/aarch64-linux.h Tue Dec 31 14:55:20 2013 -0500 -@@ -21,7 +21,11 @@ - #ifndef GCC_AARCH64_LINUX_H - #define GCC_AARCH64_LINUX_H - -+/* The AArch64 port currently supports two dynamic linkers: -+ - ld-linux-aarch64.so.1 - GLIBC dynamic linker -+ - ld-musl-aarch64.so.1 - musl libc dynamic linker */ - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1" -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1" - - #define CPP_SPEC "%{pthread:-D_REENTRANT}" +diff -Nur gcc-4.8.2.orig/gcc/config/sh/linux.h gcc-4.8.2/gcc/config/sh/linux.h +--- gcc-4.8.2.orig/gcc/config/sh/linux.h 2013-03-14 04:01:53.000000000 +0100 ++++ gcc-4.8.2/gcc/config/sh/linux.h 2014-04-14 10:42:16.650563570 +0200 +@@ -43,7 +43,14 @@ -# HG changeset patch -# Parent f2601e4063d0d58d8ab04185e8baefd560d09496 -Microblaze support (again). - - -diff -r f2601e4063d0 -r 0736dfe1aa0d gcc/config/microblaze/linux.h ---- a/gcc/config/microblaze/linux.h Tue Dec 31 14:55:20 2013 -0500 -+++ b/gcc/config/microblaze/linux.h Tue Dec 31 15:09:52 2013 -0500 -@@ -25,7 +25,22 @@ - #undef TLS_NEEDS_GOT - #define TLS_NEEDS_GOT 1 + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack --#define DYNAMIC_LINKER "/lib/ld.so.1" -+#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */ -+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}" ++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */ ++#define MUSL_DYNAMIC_LINKER_E "eb" +#else -+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}" ++#define MUSL_DYNAMIC_LINKER_E +#endif + -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1" -+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1" + + #undef SUBTARGET_LINK_EMUL_SUFFIX + #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" +diff -Nur gcc-4.8.2.orig/gcc/config/sh/sh.c gcc-4.8.2/gcc/config/sh/sh.c +--- gcc-4.8.2.orig/gcc/config/sh/sh.c 2013-03-13 19:09:10.000000000 +0100 ++++ gcc-4.8.2/gcc/config/sh/sh.c 2014-04-14 10:41:29.816848543 +0200 +@@ -24,6 +24,9 @@ + malloc & co, which are poisoned by "system.h". The proper solution is + to include in "system.h" instead of . */ + #include ++#include ++#include ++#include + + #include "config.h" + #include "system.h" +@@ -60,9 +63,6 @@ + #include "tm-constrs.h" + #include "opts.h" + +-#include +-#include +-#include + + int code_for_indirect_jump_scratch = CODE_FOR_indirect_jump_scratch; + +diff -Nur gcc-4.8.2.orig/gcc/config.gcc gcc-4.8.2/gcc/config.gcc +--- gcc-4.8.2.orig/gcc/config.gcc 2013-10-03 02:47:24.000000000 +0200 ++++ gcc-4.8.2/gcc/config.gcc 2014-04-14 10:40:44.602902861 +0200 +@@ -550,7 +550,7 @@ + esac + + # Common C libraries. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" + + # Common parts for widely ported systems. + case ${target} in +@@ -653,6 +653,9 @@ + *-*-*uclibc*) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" + ;; ++ *-*-*musl*) ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" ++ ;; + *) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + ;; +@@ -2114,6 +2117,10 @@ + powerpc*-*-linux*paired*) + tm_file="${tm_file} rs6000/750cl.h" ;; + esac ++ case ${target} in ++ *-linux*-musl*) ++ enable_secureplt=yes ;; ++ esac + if test x${enable_secureplt} = xyes; then + tm_file="rs6000/secureplt.h ${tm_file}" + fi +diff -Nur gcc-4.8.2.orig/gcc/configure gcc-4.8.2/gcc/configure +--- gcc-4.8.2.orig/gcc/configure 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/configure 2014-04-14 10:40:44.598902675 +0200 +@@ -26739,6 +26739,9 @@ + else + gcc_cv_libc_provides_ssp=no + case "$target" in ++ *-*-musl*) ++ # All versions of musl provide stack protector ++ gcc_cv_libc_provides_ssp=yes;; + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) + # glibc 2.4 and later provides __stack_chk_fail and + # either __stack_chk_guard, or TLS access to stack guard canary. +@@ -26772,6 +26775,7 @@ + # ) and for now + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. ++ # All supported versions of musl provide it as well + gcc_cv_libc_provides_ssp=yes;; + *-*-darwin* | *-*-freebsd*) + ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail" +@@ -26854,6 +26858,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +diff -Nur gcc-4.8.2.orig/gcc/configure.ac gcc-4.8.2/gcc/configure.ac +--- gcc-4.8.2.orig/gcc/configure.ac 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/gcc/configure.ac 2014-04-14 10:40:44.598902675 +0200 +@@ -4722,6 +4722,9 @@ + gcc_cv_libc_provides_ssp, + [gcc_cv_libc_provides_ssp=no + case "$target" in ++ *-*-musl*) ++ # All versions of musl provide stack protector ++ gcc_cv_libc_provides_ssp=yes;; + *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) + [# glibc 2.4 and later provides __stack_chk_fail and + # either __stack_chk_guard, or TLS access to stack guard canary. +@@ -4755,6 +4758,7 @@ + # ) and for now + # simply assert that glibc does provide this, which is true for all + # realistically usable GNU/Hurd configurations. ++ # All supported versions of musl provide it as well + gcc_cv_libc_provides_ssp=yes;; + *-*-darwin* | *-*-freebsd*) + AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes], +@@ -4820,6 +4824,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR]) + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +diff -Nur gcc-4.8.2.orig/gcc/ginclude/stddef.h gcc-4.8.2/gcc/ginclude/stddef.h +--- gcc-4.8.2.orig/gcc/ginclude/stddef.h 2013-01-10 21:38:27.000000000 +0100 ++++ gcc-4.8.2/gcc/ginclude/stddef.h 2014-04-14 10:40:44.594902489 +0200 +@@ -181,6 +181,7 @@ + #ifndef _GCC_SIZE_T + #ifndef _SIZET_ + #ifndef __size_t ++#ifndef __DEFINED_size_t /* musl */ + #define __size_t__ /* BeOS */ + #define __SIZE_T__ /* Cray Unicos/Mk */ + #define _SIZE_T +@@ -197,6 +198,7 @@ + #define ___int_size_t_h + #define _GCC_SIZE_T + #define _SIZET_ ++#define __DEFINED_size_t /* musl */ + #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ + || defined(__FreeBSD_kernel__) + /* __size_t is a typedef on FreeBSD 5, must not trash it. */ +@@ -214,6 +216,7 @@ + typedef long ssize_t; + #endif /* __BEOS__ */ + #endif /* !(defined (__GNUG__) && defined (size_t)) */ ++#endif /* __DEFINED_size_t */ + #endif /* __size_t */ + #endif /* _SIZET_ */ + #endif /* _GCC_SIZE_T */ +diff -Nur gcc-4.8.2.orig/libgcc/unwind-dw2-fde-dip.c gcc-4.8.2/libgcc/unwind-dw2-fde-dip.c +--- gcc-4.8.2.orig/libgcc/unwind-dw2-fde-dip.c 2013-02-04 20:06:20.000000000 +0100 ++++ gcc-4.8.2/libgcc/unwind-dw2-fde-dip.c 2014-04-14 10:40:44.594902489 +0200 +@@ -46,33 +46,13 @@ + #include "unwind-compat.h" + #include "gthr.h" + +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \ +- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__BIONIC__) +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__FreeBSD__) && __FreeBSD__ >= 7 +-# define ElfW __ElfN +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(__OpenBSD__) +-# define ElfW(type) Elf_##type +-# define USE_PT_GNU_EH_FRAME +-#endif +- +-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ +- && defined(TARGET_DL_ITERATE_PHDR) \ +- && defined(__sun__) && defined(__svr4__) ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) + # define USE_PT_GNU_EH_FRAME ++# ifdef __OpenBSD__ ++# define ElfW(type) Elf_##typ ++# elif defined(__FreeBSD__) && __FreeBSD__ >= 7 ++# define ElfW __ElfN ++# endif + #endif + + #if defined(USE_PT_GNU_EH_FRAME) +diff -Nur gcc-4.8.2.orig/libgomp/config/posix/time.c gcc-4.8.2/libgomp/config/posix/time.c +--- gcc-4.8.2.orig/libgomp/config/posix/time.c 2013-01-14 19:18:49.000000000 +0100 ++++ gcc-4.8.2/libgomp/config/posix/time.c 2014-04-14 10:40:44.594902489 +0200 +@@ -28,6 +28,8 @@ + The following implementation uses the most simple POSIX routines. + If present, POSIX 4 clocks should be used instead. */ + ++#define _POSIX_C_SOURCE 199309L /* for clocks */ + -+#if DEFAULT_LIBC == LIBC_MUSL -+#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER + #include "libgomp.h" + #include + #if TIME_WITH_SYS_TIME +diff -Nur gcc-4.8.2.orig/libitm/config/arm/hwcap.cc gcc-4.8.2/libitm/config/arm/hwcap.cc +--- gcc-4.8.2.orig/libitm/config/arm/hwcap.cc 2013-02-03 18:46:11.000000000 +0100 ++++ gcc-4.8.2/libitm/config/arm/hwcap.cc 2014-04-14 10:40:44.602902861 +0200 +@@ -40,7 +40,11 @@ + + #ifdef __linux__ + #include ++#ifdef __GLIBC__ + #include +#else -+#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER ++#include +#endif -+ -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "dynamic_linker", DYNAMIC_LINKER } -From 478ee0c03a08e2ef9371fd88d516738936943e78 Mon Sep 17 00:00:00 2001 -From: David Holsgrove -Date: Fri, 28 Sep 2012 16:32:03 +1000 -Subject: [PATCH 06/11] [Patch, microblaze]: Add SIZE_TYPE and PTRDIFF_TYPE to - microblaze.h - -Fixes warnings like; - -warning: format '%zX' expects argument of type 'size_t', -but argument 3 has type 'unsigned int' [-Wformat] - -Changelog - -2013-03-18 David Holsgrove - - * gcc/config/microblaze/microblaze.h: Define SIZE_TYPE - and PTRDIFF_TYPE. - -Signed-off-by: David Holsgrove ---- - gcc/config/microblaze/microblaze.h | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h -index 19cdfed..e772a3f 100644 ---- a/gcc/config/microblaze/microblaze.h -+++ b/gcc/config/microblaze/microblaze.h -@@ -213,6 +213,12 @@ extern enum pipeline_type microblaze_pipe; - #define STRICT_ALIGNMENT 1 - #define PCC_BITFIELD_TYPE_MATTERS 1 + #include -+#undef SIZE_TYPE -+#define SIZE_TYPE "unsigned int" + static void __attribute__((constructor)) +diff -Nur gcc-4.8.2.orig/libitm/config/linux/x86/tls.h gcc-4.8.2/libitm/config/linux/x86/tls.h +--- gcc-4.8.2.orig/libitm/config/linux/x86/tls.h 2013-02-03 18:46:11.000000000 +0100 ++++ gcc-4.8.2/libitm/config/linux/x86/tls.h 2014-04-14 10:40:44.602902861 +0200 +@@ -25,16 +25,19 @@ + #ifndef LIBITM_X86_TLS_H + #define LIBITM_X86_TLS_H 1 + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + /* Use slots in the TCB head rather than __thread lookups. + GLIBC has reserved words 10 through 13 for TM. */ + #define HAVE_ARCH_GTM_THREAD 1 + #define HAVE_ARCH_GTM_THREAD_DISP 1 + #endif ++#endif + + #include "config/generic/tls.h" + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + namespace GTM HIDDEN { + + #ifdef __x86_64__ +@@ -101,5 +104,6 @@ + + } // namespace GTM + #endif /* >= GLIBC 2.10 */ ++#endif + + #endif // LIBITM_X86_TLS_H +diff -Nur gcc-4.8.2.orig/libstdc++-v3/configure.host gcc-4.8.2/libstdc++-v3/configure.host +--- gcc-4.8.2.orig/libstdc++-v3/configure.host 2013-06-19 03:18:38.000000000 +0200 ++++ gcc-4.8.2/libstdc++-v3/configure.host 2014-04-14 10:40:44.594902489 +0200 +@@ -264,6 +264,13 @@ + os_include_dir="os/bsd/freebsd" + ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) ++ # check for musl by target ++ case "${host_os}" in ++ *-musl*) ++ os_include_dir="os/generic" ++ ;; ++ *) + -+#undef PTRDIFF_TYPE -+#define PTRDIFF_TYPE "int" + if [ "$uclibc" = "yes" ]; then + os_include_dir="os/uclibc" + elif [ "$bionic" = "yes" ]; then +@@ -272,6 +279,9 @@ + os_include_dir="os/gnu-linux" + fi + ;; + - #define CONSTANT_ALIGNMENT(EXP, ALIGN) \ - ((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR) \ - && (ALIGN) < BITS_PER_WORD \ --- -1.7.9.5 - ++ esac ++ ;; + hpux*) + os_include_dir="os/hpux" + ;; diff --git a/toolchain/gcc/patches/4.8.2/musl-sh.patch b/toolchain/gcc/patches/4.8.2/musl-sh.patch deleted file mode 100644 index 237f76f63..000000000 --- a/toolchain/gcc/patches/4.8.2/musl-sh.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Nur gcc-4.8.2.orig/gcc/config/sh/linux.h gcc-4.8.2/gcc/config/sh/linux.h ---- gcc-4.8.2.orig/gcc/config/sh/linux.h 2013-03-14 04:01:53.000000000 +0100 -+++ gcc-4.8.2/gcc/config/sh/linux.h 2014-03-01 11:33:10.000000000 +0100 -@@ -44,6 +44,7 @@ - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack - - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh.so.1" - - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" -- cgit v1.2.3