diff options
Diffstat (limited to 'main/gcc/gcc-4.8-musl.patch')
-rw-r--r-- | main/gcc/gcc-4.8-musl.patch | 327 |
1 files changed, 75 insertions, 252 deletions
diff --git a/main/gcc/gcc-4.8-musl.patch b/main/gcc/gcc-4.8-musl.patch index a394630b0e..26f89eb68e 100644 --- a/main/gcc/gcc-4.8-musl.patch +++ b/main/gcc/gcc-4.8-musl.patch @@ -13,39 +13,39 @@ #define LINUX_TARGET_LINK_SPEC "%{h*} \ %{static:-Bstatic} \ # HG changeset patch -# Parent e87035576969de2cc4d03decf5f81d682addf305 +# Parent c3eb69047e35491fda9cd9ab1ee2ace1299c793c Support for arm-linux-musl. -diff -r e87035576969 gcc/config/arm/linux-eabi.h ---- a/gcc/config/arm/linux-eabi.h Sun Sep 08 16:10:51 2013 -0400 -+++ b/gcc/config/arm/linux-eabi.h Sun Sep 08 16:12:57 2013 -0400 +diff -r c3eb69047e35 gcc/config/arm/linux-eabi.h +--- a/gcc/config/arm/linux-eabi.h Thu Sep 19 07:11:38 2013 -0400 ++++ b/gcc/config/arm/linux-eabi.h Thu Sep 19 08:56:47 2013 -0400 @@ -77,6 +77,23 @@ %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \ %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}" -+/* For ARM musl currently supports two dynamic linkers: ++/* 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. -+ musl does not support the legacy OABI (i.e. broken) mode. ++ - 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, but this can be overridden by changing both -+ MUSL_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI. */ ++ We default to soft-float, EL. */ +#undef MUSL_DYNAMIC_LINKER -+#define MUSL_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-musl-arm.so.1" -+#define MUSL_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-musl-armhf.so.1" -+#define MUSL_DYNAMIC_LINKER_DEFAULT MUSL_DYNAMIC_LINKER_SOFT_FLOAT -+ ++#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 \ -+ "%{mfloat-abi=hard:" MUSL_DYNAMIC_LINKER_HARD_FLOAT "} \ -+ %{mfloat-abi=soft*:" MUSL_DYNAMIC_LINKER_SOFT_FLOAT "} \ -+ %{!mfloat-abi=*:" MUSL_DYNAMIC_LINKER_DEFAULT "}" ++ "/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 e87035576969 libitm/config/arm/hwcap.cc ---- a/libitm/config/arm/hwcap.cc Sun Sep 08 16:10:51 2013 -0400 -+++ b/libitm/config/arm/hwcap.cc Sun Sep 08 16:12:57 2013 -0400 +diff -r c3eb69047e35 libitm/config/arm/hwcap.cc +--- a/libitm/config/arm/hwcap.cc Thu Sep 19 07:11:38 2013 -0400 ++++ b/libitm/config/arm/hwcap.cc Thu Sep 19 08:56:47 2013 -0400 @@ -40,7 +40,11 @@ #ifdef __linux__ @@ -58,9 +58,24 @@ diff -r e87035576969 libitm/config/arm/hwcap.cc #include <elf.h> static void __attribute__((constructor)) ---- a/gcc/configure -+++ b/gcc/configure -@@ -26970,6 +26970,9 @@ +diff -r ef9a64dbe461 gcc/configure +--- a/gcc/configure Thu Sep 19 09:37:33 2013 -0400 ++++ b/gcc/configure Thu Sep 19 09:40:09 2013 -0400 +@@ -26764,11 +26764,12 @@ + gcc_cv_libc_provides_ssp=yes + fi + ;; +- *-*-gnu*) ++ *-*-gnu* | *-*-musl*) + # Avoid complicated tests (see + # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) 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" +@@ -26851,6 +26852,9 @@ gcc_cv_target_dl_iterate_phdr=no fi ;; @@ -70,7 +85,33 @@ diff -r e87035576969 libitm/config/arm/hwcap.cc esac if test x$gcc_cv_target_dl_iterate_phdr = xyes; then - +diff -r ef9a64dbe461 gcc/configure.ac +--- a/gcc/configure.ac Thu Sep 19 09:37:33 2013 -0400 ++++ b/gcc/configure.ac Thu Sep 19 09:40:09 2013 -0400 +@@ -4747,11 +4747,12 @@ + gcc_cv_libc_provides_ssp=yes + fi] + ;; +- *-*-gnu*) ++ *-*-gnu* | *-*-musl*) + # Avoid complicated tests (see + # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) 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], +@@ -4817,6 +4818,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 572f7b4d1c50cefde3aa2c43d06040fc308ad989 Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. @@ -318,228 +359,6 @@ diff -r 94e435662aff -r e27957848dc8 fixincludes/mkfixinc.sh # THEN create a no-op fixer and exit (echo "#! /bin/sh" ; echo "exit 0" ) > ${target} # HG changeset patch -# Parent 8eb8b35e72f3987450f5050db45d6e4425084fb5 -libssp is provided in musl libc. - -diff -r 8eb8b35e72f3 gcc/configure ---- a/gcc/configure Mon Aug 26 15:14:02 2013 -0400 -+++ b/gcc/configure Mon Aug 26 15:46:55 2013 -0400 -@@ -26764,7 +26764,8 @@ - gcc_cv_libc_provides_ssp=yes - fi - ;; -- *-*-gnu*) -+ *-*-gnu* | \ -+ *-linux-musl*) - # Avoid complicated tests (see - # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now - # simply assert that glibc does provide this, which is true for all -diff -r 8eb8b35e72f3 gcc/configure.ac ---- a/gcc/configure.ac Mon Aug 26 15:14:02 2013 -0400 -+++ b/gcc/configure.ac Mon Aug 26 15:46:55 2013 -0400 -@@ -4747,7 +4747,8 @@ - gcc_cv_libc_provides_ssp=yes - fi] - ;; -- *-*-gnu*) -+ *-*-gnu* | \ -+ *-linux-musl*) - # Avoid complicated tests (see - # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now - # simply assert that glibc does provide this, which is true for all -@@ -4817,6 +4818,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 -r 8eb8b35e72f3 libssp/Makefile.am ---- a/libssp/Makefile.am Mon Aug 26 15:14:02 2013 -0400 -+++ b/libssp/Makefile.am Mon Aug 26 15:46:55 2013 -0400 -@@ -36,7 +36,11 @@ - - AM_CFLAGS = -Wall - -+if LIBSSP_IN_LIBC -+toolexeclib_LTLIBRARIES = libssp_nonshared.la -+else - toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la -+endif - - target_noncanonical = @target_noncanonical@ - libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include -diff -r 8eb8b35e72f3 libssp/Makefile.in ---- a/libssp/Makefile.in Mon Aug 26 15:14:02 2013 -0400 -+++ b/libssp/Makefile.in Mon Aug 26 15:46:55 2013 -0400 -@@ -93,12 +93,17 @@ - libssp_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libssp_la_LDFLAGS) $(LDFLAGS) -o $@ -+@LIBSSP_IN_LIBC_FALSE@am_libssp_la_rpath = -rpath $(toolexeclibdir) - am_libssp_nonshared_la_OBJECTS = libssp_nonshared_la-ssp-local.lo - libssp_nonshared_la_OBJECTS = $(am_libssp_nonshared_la_OBJECTS) - libssp_nonshared_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(libssp_nonshared_la_CFLAGS) $(CFLAGS) \ - $(libssp_nonshared_la_LDFLAGS) $(LDFLAGS) -o $@ -+@LIBSSP_IN_LIBC_FALSE@am_libssp_nonshared_la_rpath = -rpath \ -+@LIBSSP_IN_LIBC_FALSE@ $(toolexeclibdir) -+@LIBSSP_IN_LIBC_TRUE@am_libssp_nonshared_la_rpath = -rpath \ -+@LIBSSP_IN_LIBC_TRUE@ $(toolexeclibdir) - DEFAULT_INCLUDES = -I.@am__isrc@ - depcomp = $(SHELL) $(top_srcdir)/../depcomp - am__depfiles_maybe = depfiles -@@ -258,7 +263,8 @@ - @LIBSSP_USE_SYMVER_GNU_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = $(srcdir)/ssp.map - @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun - AM_CFLAGS = -Wall --toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la -+@LIBSSP_IN_LIBC_FALSE@toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la -+@LIBSSP_IN_LIBC_TRUE@toolexeclib_LTLIBRARIES = libssp_nonshared.la - libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include - nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h - libssp_la_SOURCES = \ -@@ -414,9 +420,9 @@ - rm -f "$${dir}/so_locations"; \ - done - libssp.la: $(libssp_la_OBJECTS) $(libssp_la_DEPENDENCIES) -- $(libssp_la_LINK) -rpath $(toolexeclibdir) $(libssp_la_OBJECTS) $(libssp_la_LIBADD) $(LIBS) -+ $(libssp_la_LINK) $(am_libssp_la_rpath) $(libssp_la_OBJECTS) $(libssp_la_LIBADD) $(LIBS) - libssp_nonshared.la: $(libssp_nonshared_la_OBJECTS) $(libssp_nonshared_la_DEPENDENCIES) -- $(libssp_nonshared_la_LINK) -rpath $(toolexeclibdir) $(libssp_nonshared_la_OBJECTS) $(libssp_nonshared_la_LIBADD) $(LIBS) -+ $(libssp_nonshared_la_LINK) $(am_libssp_nonshared_la_rpath) $(libssp_nonshared_la_OBJECTS) $(libssp_nonshared_la_LIBADD) $(LIBS) - - mostlyclean-compile: - -rm -f *.$(OBJEXT) -diff -r 8eb8b35e72f3 libssp/configure ---- a/libssp/configure Mon Aug 26 15:14:02 2013 -0400 -+++ b/libssp/configure Mon Aug 26 15:46:55 2013 -0400 -@@ -626,6 +626,8 @@ - ssp_have_usable_vsnprintf - EGREP - GREP -+LIBSSP_IN_LIBC_FALSE -+LIBSSP_IN_LIBC_TRUE - LIBSSP_USE_SYMVER_SUN_FALSE - LIBSSP_USE_SYMVER_SUN_TRUE - LIBSSP_USE_SYMVER_GNU_FALSE -@@ -735,6 +737,7 @@ - enable_multilib - enable_dependency_tracking - enable_symvers -+enable_ssp_in_libc - enable_shared - enable_static - with_pic -@@ -1374,6 +1377,7 @@ - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-symvers disable symbol versioning for libssp -+ --enable-ssp-in-libc do not build SSP, as it is in libc - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] -@@ -4206,6 +4210,36 @@ - fi - - -+# musl provides libssp in libc -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libssp is provided in libc" >&5 -+$as_echo_n "checking whether libssp is provided in libc... " >&6; } -+# Check whether --enable-ssp_in_libc was given. -+if test "${enable_ssp_in_libc+set}" = set; then : -+ enableval=$enable_ssp_in_libc; ssp_in_libc=$enableval -+else -+ ssp_in_libc=check -+fi -+ -+if test "x$ssp_in_libc" = "xcheck"; then -+ case "$host" in -+ *-musl*) -+ ssp_in_libc=yes -+ ;; -+ -+ *) -+ ssp_in_libc=no -+ ;; -+ esac -+fi -+ if test "x$ssp_in_libc" = xyes; then -+ LIBSSP_IN_LIBC_TRUE= -+ LIBSSP_IN_LIBC_FALSE='#' -+else -+ LIBSSP_IN_LIBC_TRUE='#' -+ LIBSSP_IN_LIBC_FALSE= -+fi -+ -+ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 - $as_echo_n "checking for grep that handles long lines and -e... " >&6; } -@@ -10658,7 +10692,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10661 "configure" -+#line 10695 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -10764,7 +10798,7 @@ - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF --#line 10767 "configure" -+#line 10801 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -@@ -11193,6 +11227,10 @@ - as_fn_error "conditional \"LIBSSP_USE_SYMVER_SUN\" was never defined. - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi -+if test -z "${LIBSSP_IN_LIBC_TRUE}" && test -z "${LIBSSP_IN_LIBC_FALSE}"; then -+ as_fn_error "conditional \"LIBSSP_IN_LIBC\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - - : ${CONFIG_STATUS=./config.status} - ac_write_fail=0 -diff -r 8eb8b35e72f3 libssp/configure.ac ---- a/libssp/configure.ac Mon Aug 26 15:14:02 2013 -0400 -+++ b/libssp/configure.ac Mon Aug 26 15:46:55 2013 -0400 -@@ -114,6 +114,26 @@ - AM_CONDITIONAL(LIBSSP_USE_SYMVER_GNU, [test "x$ssp_use_symver" = xgnu]) - AM_CONDITIONAL(LIBSSP_USE_SYMVER_SUN, [test "x$ssp_use_symver" = xsun]) - -+# musl provides libssp in libc -+AC_MSG_CHECKING([whether libssp is provided in libc]) -+AC_ARG_ENABLE(ssp_in_libc, -+AC_HELP_STRING([--enable-ssp-in-libc], -+ [do not build SSP, as it is in libc]), -+ssp_in_libc=$enableval, -+ssp_in_libc=check) -+if test "x$ssp_in_libc" = "xcheck"; then -+ case "$host" in -+ *-musl*) -+ ssp_in_libc=yes -+ ;; -+ -+ *) -+ ssp_in_libc=no -+ ;; -+ esac -+fi -+AM_CONDITIONAL(LIBSSP_IN_LIBC, [test "x$ssp_in_libc" = xyes]) -+ - AC_CHECK_HEADERS(alloca.h malloc.h paths.h syslog.h string.h unistd.h fcntl.h stdio.h limits.h) - - if test x$gcc_no_link = xyes; then -# HG changeset patch # Parent f50bb54f331f73405131a30b4f353cfda1c70304 Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one. @@ -571,18 +390,23 @@ diff -r f50bb54f331f libstdc++-v3/configure.host os_include_dir="os/hpux" ;; # HG changeset patch -# Parent 62831d7bf931658019ba16092c48375177d014b1 +# Parent 4618ad6f036f1e944a5262ae5875dcdf62c41f8b Support for mips-linux-musl. -diff -r 62831d7bf931 gcc/config/mips/linux.h ---- a/gcc/config/mips/linux.h Fri Mar 29 16:41:23 2013 -0400 -+++ b/gcc/config/mips/linux.h Fri Mar 29 16:41:25 2013 -0400 -@@ -18,3 +18,5 @@ +diff -r 4618ad6f036f gcc/config/mips/linux.h +--- a/gcc/config/mips/linux.h Thu Sep 19 08:56:47 2013 -0400 ++++ b/gcc/config/mips/linux.h Thu Sep 19 09:08:11 2013 -0400 +@@ -18,3 +18,10 @@ <http://www.gnu.org/licenses/>. */ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.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 2ffe76b215fdb082cbbc262536077627757fa9bf Support for powerpc-linux-musl. @@ -789,4 +613,3 @@ diff -r 3ea10cd626cb libitm/config/linux/x86/tls.h +#endif #endif // LIBITM_X86_TLS_H - |