diff options
Diffstat (limited to 'main/gcc/gcc-4.8-musl.patch')
-rw-r--r-- | main/gcc/gcc-4.8-musl.patch | 297 |
1 files changed, 296 insertions, 1 deletions
diff --git a/main/gcc/gcc-4.8-musl.patch b/main/gcc/gcc-4.8-musl.patch index 4c32a3e58..dcc9ad71a 100644 --- a/main/gcc/gcc-4.8-musl.patch +++ b/main/gcc/gcc-4.8-musl.patch @@ -1,4 +1,3 @@ -11b7c7e47a01 tip # HG changeset patch # Parent 6b1b8174ce29396d7dbd482296f43eba38948222 Support for arm-linux-musl. @@ -32,6 +31,19 @@ diff -r 6b1b8174ce29 libitm/config/arm/hwcap.cc #include <elf.h> static void __attribute__((constructor)) +--- a/gcc/configure ++++ b/gcc/configure +@@ -26970,6 +26970,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 + # HG changeset patch # Parent 2b29df135cf04fe23c38301f6d0fc5796366aecf Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. @@ -180,6 +192,246 @@ diff -r 2b94537ce249 libgomp/config/posix/time.c #include <unistd.h> #if TIME_WITH_SYS_TIME # HG changeset patch +# Parent 94e435662aff38e86c9ca0dff4bbf451e0190b34 +Get rid of ever-broken fixincludes on musl. + + +diff -r 94e435662aff -r e27957848dc8 fixincludes/mkfixinc.sh +--- a/fixincludes/mkfixinc.sh Sat Jul 27 23:37:20 2013 -0400 ++++ b/fixincludes/mkfixinc.sh Sat Jul 27 23:43:03 2013 -0400 +@@ -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 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. @@ -342,6 +594,49 @@ diff -r 2ffe76b215fd libgcc/config/rs6000/linux-unwind.h #define MD_FROB_UPDATE_CONTEXT frob_update_context +diff -r 7cba4201a2ae libgcc/unwind-dw2-fde-dip.c +--- a/libgcc/unwind-dw2-fde-dip.c Sat Jul 27 22:53:05 2013 -0400 ++++ b/libgcc/unwind-dw2-fde-dip.c Sat Jul 27 22:57:08 2013 -0400 +@@ -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))) ++#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 + #endif + + #if defined(USE_PT_GNU_EH_FRAME) # HG changeset patch # Parent 3ea10cd626cb7abdfd56d3fe8d2c9ed58a82797b Support for i386-linux-musl and x86_64-linux-musl. |