summaryrefslogtreecommitdiffstats
path: root/main/gcc/gcc-4.8-musl.patch
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2013-09-06 11:24:41 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-09-10 09:12:29 +0000
commitea0af854b52e5d2b44e6af094572e6ae38d1ba5a (patch)
tree9980f07181336553da3ae7452b7a69a41750f5fe /main/gcc/gcc-4.8-musl.patch
parent6a32c55e54342aadd5b4d4319ab084d34913e16b (diff)
downloadaports-ea0af854b52e5d2b44e6af094572e6ae38d1ba5a.tar.bz2
aports-ea0af854b52e5d2b44e6af094572e6ae38d1ba5a.tar.xz
main/gcc: fixes, support crosscompiler creation
- implement cross compiler creation - fix musl build - fix cross-building - fix ada to default to shared linking - fix gcc-gnat dependencies
Diffstat (limited to 'main/gcc/gcc-4.8-musl.patch')
-rw-r--r--main/gcc/gcc-4.8-musl.patch297
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.