diff options
author | Timo Teräs <timo.teras@iki.fi> | 2013-09-23 11:47:08 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-09-23 11:57:24 +0000 |
commit | 0dceb86c0b230eb083bc86711a57e9abd1b459f3 (patch) | |
tree | 6bb1372ca2fe1912861cea0b54bcc37952c3ab96 /main/gcc/gcc-4.8-musl.patch | |
parent | d61fa697f573aeec58efbebee57c4654ffc4750a (diff) | |
download | aports-0dceb86c0b230eb083bc86711a57e9abd1b459f3.tar.bz2 aports-0dceb86c0b230eb083bc86711a57e9abd1b459f3.tar.xz |
main/gcc: implement crosscompiler creation and crossbuilding, musl fixes
Diffstat (limited to 'main/gcc/gcc-4.8-musl.patch')
-rw-r--r-- | main/gcc/gcc-4.8-musl.patch | 461 |
1 files changed, 427 insertions, 34 deletions
diff --git a/main/gcc/gcc-4.8-musl.patch b/main/gcc/gcc-4.8-musl.patch index 4c32a3e58..a394630b0 100644 --- a/main/gcc/gcc-4.8-musl.patch +++ b/main/gcc/gcc-4.8-musl.patch @@ -1,25 +1,51 @@ -11b7c7e47a01 tip +--- a/gcc/config/aarch64/aarch64-linux.h 2013-01-10 21:38:27.000000000 +0100 ++++ b/gcc/config/aarch64/aarch64-linux.h 2013-09-12 21:39:34.004829498 +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 LINUX_TARGET_LINK_SPEC "%{h*} \ + %{static:-Bstatic} \ # HG changeset patch -# Parent 6b1b8174ce29396d7dbd482296f43eba38948222 +# Parent e87035576969de2cc4d03decf5f81d682addf305 Support for arm-linux-musl. -diff -r 6b1b8174ce29 gcc/config/arm/linux-eabi.h ---- a/gcc/config/arm/linux-eabi.h Fri Mar 29 16:41:20 2013 -0400 -+++ b/gcc/config/arm/linux-eabi.h Fri Mar 29 16:41:23 2013 -0400 -@@ -77,6 +77,10 @@ +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 +@@ -77,6 +77,23 @@ %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \ %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}" -+/* musl has no "classic" (i.e. broken) mode */ ++/* For ARM musl currently supports two 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. ++ 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. */ +#undef MUSL_DYNAMIC_LINKER -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.so.1" ++#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 ++ ++#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 "}" + /* 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 6b1b8174ce29 libitm/config/arm/hwcap.cc ---- a/libitm/config/arm/hwcap.cc Fri Mar 29 16:41:20 2013 -0400 -+++ b/libitm/config/arm/hwcap.cc Fri Mar 29 16:41:23 2013 -0400 +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 @@ -40,7 +40,11 @@ #ifdef __linux__ @@ -32,13 +58,26 @@ 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 +# Parent 572f7b4d1c50cefde3aa2c43d06040fc308ad989 Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. -diff -r 2b29df135cf0 gcc/config.gcc ---- a/gcc/config.gcc Fri Mar 29 16:41:11 2013 -0400 -+++ b/gcc/config.gcc Fri Mar 29 16:41:14 2013 -0400 +diff -r 572f7b4d1c50 gcc/config.gcc +--- a/gcc/config.gcc Sun Sep 08 22:58:18 2013 -0400 ++++ b/gcc/config.gcc Mon Sep 09 12:48:34 2013 -0400 @@ -549,7 +549,7 @@ esac @@ -58,9 +97,9 @@ diff -r 2b29df135cf0 gcc/config.gcc *) tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" ;; -diff -r 2b29df135cf0 gcc/config/linux.h ---- a/gcc/config/linux.h Fri Mar 29 16:41:11 2013 -0400 -+++ b/gcc/config/linux.h Fri Mar 29 16:41:14 2013 -0400 +diff -r 572f7b4d1c50 gcc/config/linux.h +--- a/gcc/config/linux.h Sun Sep 08 22:58:18 2013 -0400 ++++ b/gcc/config/linux.h Mon Sep 09 12:48:34 2013 -0400 @@ -32,10 +32,12 @@ #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) @@ -104,7 +143,7 @@ diff -r 2b29df135cf0 gcc/config/linux.h #else #error "Unsupported DEFAULT_LIBC" #endif /* DEFAULT_LIBC */ -@@ -84,16 +89,16 @@ +@@ -84,21 +89,21 @@ #define GNU_USER_DYNAMIC_LINKER \ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \ @@ -125,9 +164,90 @@ diff -r 2b29df135cf0 gcc/config/linux.h /* Determine whether the entire c99 runtime is present in the runtime library. */ -diff -r 2b29df135cf0 gcc/config/linux.opt ---- a/gcc/config/linux.opt Fri Mar 29 16:41:11 2013 -0400 -+++ b/gcc/config/linux.opt Fri Mar 29 16:41:14 2013 -0400 + #undef TARGET_C99_FUNCTIONS +-#define TARGET_C99_FUNCTIONS (OPTION_GLIBC) ++#define TARGET_C99_FUNCTIONS (OPTION_GLIBC || OPTION_MUSL) + + /* Whether we have sincos that follows the GNU extension. */ + #undef TARGET_HAS_SINCOS +@@ -107,3 +112,74 @@ + /* Whether we have Bionic libc runtime */ + #undef TARGET_HAS_BIONIC + #define TARGET_HAS_BIONIC (OPTION_BIONIC) ++ ++/* musl avoids problematic includes by rearranging the include directories. ++ * Unfortunately, this is mostly duplicated from cppdefault.c */ ++#if DEFAULT_LIBC == LIBC_MUSL ++#define INCLUDE_DEFAULTS_MUSL_GPP \ ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, ++ ++#ifdef LOCAL_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++#else ++#define INCLUDE_DEFAULTS_MUSL_LOCAL ++#endif ++ ++#ifdef PREFIX_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \ ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_PREFIX ++#endif ++ ++#ifdef CROSS_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_CROSS \ ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_CROSS ++#endif ++ ++#ifdef TOOL_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_TOOL \ ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_TOOL ++#endif ++ ++#ifdef NATIVE_SYSTEM_HEADER_DIR ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \ ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++#else ++#define INCLUDE_DEFAULTS_MUSL_NATIVE ++#endif ++ ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT) ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL ++# define INCLUDE_DEFAULTS_MUSL_LOCAL ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE ++# define INCLUDE_DEFAULTS_MUSL_NATIVE ++#else ++# undef INCLUDE_DEFAULTS_MUSL_CROSS ++# define INCLUDE_DEFAULTS_MUSL_CROSS ++#endif ++ ++#undef INCLUDE_DEFAULTS ++#define INCLUDE_DEFAULTS \ ++ { \ ++ INCLUDE_DEFAULTS_MUSL_GPP \ ++ INCLUDE_DEFAULTS_MUSL_PREFIX \ ++ INCLUDE_DEFAULTS_MUSL_CROSS \ ++ INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_NATIVE \ ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { 0, 0, 0, 0, 0, 0 } \ ++ } ++#endif +diff -r 572f7b4d1c50 gcc/config/linux.opt +--- a/gcc/config/linux.opt Sun Sep 08 22:58:18 2013 -0400 ++++ b/gcc/config/linux.opt Mon Sep 09 12:48:34 2013 -0400 @@ -30,3 +30,7 @@ muclibc Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic) @@ -136,9 +256,9 @@ diff -r 2b29df135cf0 gcc/config/linux.opt +mmusl +Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc) +Use musl C library -diff -r 2b29df135cf0 gcc/ginclude/stddef.h ---- a/gcc/ginclude/stddef.h Fri Mar 29 16:41:11 2013 -0400 -+++ b/gcc/ginclude/stddef.h Fri Mar 29 16:41:14 2013 -0400 +diff -r 572f7b4d1c50 gcc/ginclude/stddef.h +--- a/gcc/ginclude/stddef.h Sun Sep 08 22:58:18 2013 -0400 ++++ b/gcc/ginclude/stddef.h Mon Sep 09 12:48:34 2013 -0400 @@ -181,6 +181,7 @@ #ifndef _GCC_SIZE_T #ifndef _SIZET_ @@ -180,6 +300,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. @@ -331,17 +691,49 @@ diff -r 2ffe76b215fd 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 2ffe76b215fd libgcc/config/rs6000/linux-unwind.h ---- a/libgcc/config/rs6000/linux-unwind.h Fri Mar 29 16:41:26 2013 -0400 -+++ b/libgcc/config/rs6000/linux-unwind.h Fri Mar 29 16:41:28 2013 -0400 -@@ -258,6 +258,7 @@ +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" - return _URC_NO_REASON; - } -+#endif - - #define MD_FROB_UPDATE_CONTEXT frob_update_context +-#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. @@ -397,3 +789,4 @@ diff -r 3ea10cd626cb libitm/config/linux/x86/tls.h +#endif #endif // LIBITM_X86_TLS_H + |