gcc: update to 6.2.1.

This commit is contained in:
Enno Boland 2016-11-26 19:02:36 +01:00
parent 82de3192d9
commit a0e3cb9a42
13 changed files with 6120 additions and 908 deletions

View File

@ -50,13 +50,18 @@ libmvec.so.1 glibc-2.22_1
libz.so.1 zlib-1.2.3_1
libbz2.so.1 bzip2-1.0.5_1
libarchive.so.13 libarchive-3.1.2_1
libcc1.so.0 gcc-6.2.1_1
libcc1plugin.so.0 gcc-6.2.1_1
libitm.so.1 libitm-4.7.3_1
libgcj_bc.so.1 libgcj-4.7.3_1
liblto_plugin.so.0 gcc-4.7.3_1
libgcc_s.so.1 libgcc-4.4.0_1
libgcj.so.15 libgcj-4.9.0_1
libgcj-tools.so.15 libgcj-4.9.0_1
libgij.so.15 libgcj-4.9.0_1
libgcj.so.17 libgcj-6.2.0_1
libgcj-tools.so.17 libgcj-6.2.1_1
libgij.so.17 libgcj-6.2.1_1
libgo.so.9 libgo-6.2.1_1
libmpx.so.2 libmpx-6.2.1_1
libmpxwrappers.so.2 libmpx-6.2.1_1
libperl.so.5.24 perl-5.24.0_1
libmp.so.3 gmp-5.0.1_1
libgmp.so.10 gmp-5.0.1_1
@ -1652,7 +1657,7 @@ libextractor_common.so.1 libextractor-1.1_1
libpano13.so.3 libpano13-2.9.19_1
libubsan.so.0 libsanitizer-4.9.0_1
libtsan.so.0 libsanitizer-4.9.0_1
libasan.so.1 libsanitizer-4.9.0_1
libasan.so.3 libsanitizer-6.2.0_1
liblsan.so.0 libsanitizer-4.9.0_1
libcilkrts.so.5 libcilkrts-4.9.0_1
libvtv.so.0 libvtv-4.9.0_1

File diff suppressed because it is too large Load Diff

View File

@ -1,730 +0,0 @@
820c77b17a4a
# HG changeset patch
# Parent 1f830bec5a3f04b2718ce1395743d8e35c26341c
Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one.
diff -r 1f830bec5a3f libstdc++-v3/configure.host
--- a/libstdc++-v3/configure.host Thu Jan 29 14:04:56 2015 -0500
+++ b/libstdc++-v3/configure.host Thu Jan 29 14:06:11 2015 -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"
+ ;;
+ *)
+
if [ "$uclibc" = "yes" ]; then
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
@@ -272,6 +279,9 @@
os_include_dir="os/gnu-linux"
fi
;;
+
+ esac
+ ;;
hpux*)
os_include_dir="os/hpux"
;;
# HG changeset patch
# Parent fc7bb9343dcd071463a63dfc1b356d579eb0872f
Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker.
diff -r fc7bb9343dcd gcc/config.gcc
--- a/gcc/config.gcc Thu Jan 29 14:06:11 2015 -0500
+++ b/gcc/config.gcc Thu Jan 29 14:06:13 2015 -0500
@@ -594,7 +594,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"
# 32-bit x86 processors supported by --with-arch=. Each processor
# MUST be separated by exactly one space.
@@ -719,6 +719,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 fc7bb9343dcd gcc/config/linux.h
--- a/gcc/config/linux.h Thu Jan 29 14:06:11 2015 -0500
+++ b/gcc/config/linux.h Thu Jan 29 14:06:13 2015 -0500
@@ -32,10 +32,12 @@
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
#else
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
#endif
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
@@ -53,18 +55,21 @@
uClibc or Bionic is the default C library and whether
-muclibc or -mglibc or -mbionic has been passed to change the default. */
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
#if DEFAULT_LIBC == LIBC_GLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
#elif DEFAULT_LIBC == LIBC_UCLIBC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
#elif DEFAULT_LIBC == LIBC_BIONIC
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+#elif DEFAULT_LIBC == LIBC_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
#else
#error "Unsupported DEFAULT_LIBC"
#endif /* DEFAULT_LIBC */
@@ -84,21 +89,92 @@
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
- BIONIC_DYNAMIC_LINKER)
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define GNU_USER_DYNAMIC_LINKER32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
- BIONIC_DYNAMIC_LINKER32)
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
- BIONIC_DYNAMIC_LINKER64)
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
#define GNU_USER_DYNAMIC_LINKERX32 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
- BIONIC_DYNAMIC_LINKERX32)
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
/* 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
+
#if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
/* This is a *uclinux* target. We don't define below macros to normal linux
versions, because doing so would require *uclinux* targets to include
diff -r fc7bb9343dcd gcc/config/linux.opt
--- a/gcc/config/linux.opt Thu Jan 29 14:06:11 2015 -0500
+++ b/gcc/config/linux.opt Thu Jan 29 14:06:13 2015 -0500
@@ -30,3 +30,7 @@
muclibc
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
Use uClibc C library
+
+mmusl
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+Use musl C library
diff -r fc7bb9343dcd gcc/ginclude/stddef.h
--- a/gcc/ginclude/stddef.h Thu Jan 29 14:06:11 2015 -0500
+++ b/gcc/ginclude/stddef.h Thu Jan 29 14:06:13 2015 -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 ad6952ac547606025a6fb8496584cbfe1b73a8b7
A fix for libgomp to correctly request a POSIX version for time support.
diff -r ad6952ac5476 libgomp/config/posix/time.c
--- a/libgomp/config/posix/time.c Thu Jan 29 14:06:13 2015 -0500
+++ b/libgomp/config/posix/time.c Thu Jan 29 14:06:16 2015 -0500
@@ -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 */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -r ffa879f29d52 libgcc/unwind-dw2-fde-dip.c
--- a/libgcc/unwind-dw2-fde-dip.c Thu Jan 29 14:06:15 2015 -0500
+++ b/libgcc/unwind-dw2-fde-dip.c Thu Jan 29 14:06:18 2015 -0500
@@ -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_##type
+# elif defined(__FreeBSD__) && __FreeBSD__ >= 7
+# define ElfW __ElfN
+# endif
#endif
#if defined(USE_PT_GNU_EH_FRAME)
diff -r b35df09b819f gcc/configure
--- a/gcc/configure Thu Jan 29 14:06:18 2015 -0500
+++ b/gcc/configure Thu Jan 29 14:06:20 2015 -0500
@@ -27356,6 +27356,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.
@@ -27388,6 +27391,7 @@
# <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"
@@ -27477,6 +27481,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 b35df09b819f gcc/configure.ac
--- a/gcc/configure.ac Thu Jan 29 14:06:18 2015 -0500
+++ b/gcc/configure.ac Thu Jan 29 14:06:20 2015 -0500
@@ -5039,6 +5039,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.
@@ -5065,6 +5068,7 @@
# <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],
@@ -5131,6 +5135,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 b6a339cae9f0607a291a2fe8de80caecd48f1ebd
Get rid of ever-broken fixincludes on musl.
diff -r b6a339cae9f0 fixincludes/mkfixinc.sh
--- a/fixincludes/mkfixinc.sh Thu Jan 29 14:06:20 2015 -0500
+++ b/fixincludes/mkfixinc.sh Thu Jan 29 14:06:22 2015 -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 6c0bb7083dd2eba825f2693dc30d0e39359c1a66
Support for i386-linux-musl and x86_64-linux-musl.
diff -r 6c0bb7083dd2 gcc/config/i386/linux.h
--- a/gcc/config/i386/linux.h Thu Jan 29 14:06:22 2015 -0500
+++ b/gcc/config/i386/linux.h Thu Jan 29 14:06:25 2015 -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 6c0bb7083dd2 gcc/config/i386/linux64.h
--- a/gcc/config/i386/linux64.h Thu Jan 29 14:06:22 2015 -0500
+++ b/gcc/config/i386/linux64.h Thu Jan 29 14:06:25 2015 -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 6c0bb7083dd2 libitm/config/linux/x86/tls.h
--- a/libitm/config/linux/x86/tls.h Thu Jan 29 14:06:22 2015 -0500
+++ b/libitm/config/linux/x86/tls.h Thu Jan 29 14:06:25 2015 -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 4802c181abe099c2f903184ace267c6a527ca91c
Support for arm-linux-musl.
diff -r 4802c181abe0 gcc/config/arm/linux-eabi.h
--- a/gcc/config/arm/linux-eabi.h Thu Jan 29 14:06:25 2015 -0500
+++ b/gcc/config/arm/linux-eabi.h Thu Jan 29 14:06:27 2015 -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 4802c181abe0 libitm/config/arm/hwcap.cc
--- a/libitm/config/arm/hwcap.cc Thu Jan 29 14:06:25 2015 -0500
+++ b/libitm/config/arm/hwcap.cc Thu Jan 29 14:06:27 2015 -0500
@@ -40,7 +40,11 @@
#ifdef __linux__
#include <unistd.h>
+#ifdef __GLIBC__
#include <sys/fcntl.h>
+#else
+#include <fcntl.h>
+#endif
#include <elf.h>
static void __attribute__((constructor))
# HG changeset patch
# Parent f34ce414667f8513979b8a0507f3d6b934f1ebeb
Support for mips-linux-musl.
diff -r f34ce414667f gcc/config/mips/linux.h
--- a/gcc/config/mips/linux.h Thu Jan 29 14:06:27 2015 -0500
+++ b/gcc/config/mips/linux.h Thu Jan 29 14:06:29 2015 -0500
@@ -23,3 +23,10 @@
#undef UCLIBC_DYNAMIC_LINKER
#define UCLIBC_DYNAMIC_LINKER \
"%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
+
+#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 d4bad9a6572b0e8eacc08d2b1c40d03a6608bee5
Support for powerpc-linux-musl.
diff -r d4bad9a6572b gcc/config.gcc
--- a/gcc/config.gcc Thu Jan 29 14:06:29 2015 -0500
+++ b/gcc/config.gcc Thu Jan 29 14:06:32 2015 -0500
@@ -2334,6 +2334,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 d4bad9a6572b gcc/config/rs6000/linux64.h
--- a/gcc/config/rs6000/linux64.h Thu Jan 29 14:06:29 2015 -0500
+++ b/gcc/config/rs6000/linux64.h Thu Jan 29 14:06:32 2015 -0500
@@ -375,17 +375,21 @@
#endif
#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)
#undef DEFAULT_ASM_ENDIAN
#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
diff -r d4bad9a6572b gcc/config/rs6000/secureplt.h
--- a/gcc/config/rs6000/secureplt.h Thu Jan 29 14:06:29 2015 -0500
+++ b/gcc/config/rs6000/secureplt.h Thu Jan 29 14:06:32 2015 -0500
@@ -18,3 +18,4 @@
<http://www.gnu.org/licenses/>. */
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
diff -r d4bad9a6572b gcc/config/rs6000/sysv4.h
--- a/gcc/config/rs6000/sysv4.h Thu Jan 29 14:06:29 2015 -0500
+++ b/gcc/config/rs6000/sysv4.h Thu Jan 29 14:06:32 2015 -0500
@@ -537,6 +537,9 @@
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
#endif
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+#endif
/* Pass -G xxx to the compiler. */
#define CC1_SPEC "%{G*} %(cc1_cpu)" \
@@ -585,7 +588,8 @@
/* Override the default target of the linker. */
#define LINK_TARGET_SPEC \
- ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
+ ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
+ "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
/* Any specific OS flags. */
#define LINK_OS_SPEC "\
@@ -763,15 +767,18 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.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_MUSL
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
#elif !defined (DEFAULT_LIBC) || 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 "}}"
#else
#error "Unsupported DEFAULT_LIBC"
#endif
#define GNU_USER_DYNAMIC_LINKER \
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
@@ -894,6 +901,7 @@
{ "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff -r 47a8492e5aa7 gcc/config/aarch64/aarch64-linux.h
--- a/gcc/config/aarch64/aarch64-linux.h Thu Jan 29 14:06:31 2015 -0500
+++ b/gcc/config/aarch64/aarch64-linux.h Thu Jan 29 14:06:34 2015 -0500
@@ -23,6 +23,8 @@
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
+
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
#define LINUX_TARGET_LINK_SPEC "%{h*} \
# HG changeset patch
# Parent 9f4208089e8987637569ce7b294256c536396299
Microblaze support (again).
diff -r 9f4208089e89 gcc/config/microblaze/linux.h
--- a/gcc/config/microblaze/linux.h Thu Jan 29 14:06:34 2015 -0500
+++ b/gcc/config/microblaze/linux.h Thu Jan 29 14:06:36 2015 -0500
@@ -25,7 +25,22 @@
#undef TLS_NEEDS_GOT
#define TLS_NEEDS_GOT 1
-#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
+
+#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 }
From 478ee0c03a08e2ef9371fd88d516738936943e78 Mon Sep 17 00:00:00 2001
From: David Holsgrove <david.holsgrove@xilinx.com>
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 <david.holsgrove@xilinx.com>
* gcc/config/microblaze/microblaze.h: Define SIZE_TYPE
and PTRDIFF_TYPE.
Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
---
gcc/config/microblaze/microblaze.h | 6 ++++++
1 file changed, 6 insertions(+)
diff -r 0dbe9a3f7670 gcc/config/microblaze/microblaze.h
--- a/gcc/config/microblaze/microblaze.h Thu Jan 29 14:06:36 2015 -0500
+++ b/gcc/config/microblaze/microblaze.h Thu Jan 29 14:06:38 2015 -0500
@@ -218,6 +218,12 @@
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
+#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 -r 94ebb0799454 gcc/config/sh/linux.h
--- a/gcc/config/sh/linux.h Fri Sep 28 16:32:03 2012 +1000
+++ b/gcc/config/sh/linux.h Thu Jan 29 14:06:41 2015 -0500
@@ -43,7 +43,14 @@
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
+#define MUSL_DYNAMIC_LINKER_E "eb"
+#else
+#define MUSL_DYNAMIC_LINKER_E
+#endif
+
#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"
Use libc write(2) instead of undefined __write() to get rid
of an error when later linking against libgcc.a
This should fix the webkitgtk build, see:
http://build.voidlinux.eu/builders/armv6l-musl_builder/builds/2991/steps/shell_3/logs/stdio
--- a/libgcc/config/arm/linux-atomic-64bit.c 2014-01-02 23:25:22.000000000 +0100
+++ b/libgcc/config/arm/linux-atomic-64bit.c 2015-08-14 10:56:03.383219614 +0200
@@ -33,7 +33,7 @@
kernels; we check for that in an init section and bail out rather
unceremoneously. */
-extern unsigned int __write (int fd, const void *buf, unsigned int count);
+extern unsigned int write (int fd, const void *buf, unsigned int count);
extern void abort (void);
/* Kernel helper for compare-and-exchange. */
@@ -56,7 +56,7 @@
for the user - I'm not sure I can rely on much else being
available at this point, so do the same as generic-morestack.c
write () and abort (). */
- __write (2 /* stderr. */, err, sizeof (err));
+ write (2 /* stderr. */, err, sizeof (err));
abort ();
}
};

View File

@ -0,0 +1,556 @@
# HG changeset patch
# Parent 90a7a3809a7ccb60e357b5e88382260877f82257
Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one.
diff -r 90a7a3809a7c libstdc++-v3/configure.host
--- a/libstdc++-v3/configure.host Thu Dec 24 11:22:15 2015 -0500
+++ b/libstdc++-v3/configure.host Thu Dec 24 11:24:45 2015 -0500
@@ -266,6 +266,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"
+ ;;
+ *)
+
if [ "$uclibc" = "yes" ]; then
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
@@ -281,6 +281,9 @@
os_include_dir="os/gnu-linux"
fi
;;
+
+ esac
+ ;;
hpux*)
os_include_dir="os/hpux"
;;
diff -r 30a957f60ddb gcc/ginclude/stddef.h
--- a/gcc/ginclude/stddef.h Thu Dec 24 11:24:45 2015 -0500
+++ b/gcc/ginclude/stddef.h Thu Dec 24 11:24:47 2015 -0500
@@ -184,6 +184,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
@@ -200,6 +201,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__DragonFly__) \
|| defined(__FreeBSD_kernel__)
@@ -218,6 +220,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 90228af47e55eb338c7f672e4aca5ac81cf5f14c
A fix for libgomp to correctly request a POSIX version for time support.
diff -r 90228af47e55 libgomp/config/posix/time.c
--- a/libgomp/config/posix/time.c Thu Dec 24 11:24:47 2015 -0500
+++ b/libgomp/config/posix/time.c Thu Dec 24 11:24:49 2015 -0500
@@ -29,6 +29,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 */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -r b08d4bc3d2ba libgcc/unwind-dw2-fde-dip.c
--- a/libgcc/unwind-dw2-fde-dip.c Thu Dec 24 11:24:49 2015 -0500
+++ b/libgcc/unwind-dw2-fde-dip.c Thu Dec 24 11:24:51 2015 -0500
@@ -46,6 +46,10 @@
#include "unwind-compat.h"
#include "gthr.h"
+#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) \
&& (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
diff -r 1f375ed3689f gcc/gcc.c
--- a/gcc/gcc.c Thu Dec 24 11:24:53 2015 -0500
+++ b/gcc/gcc.c Thu Dec 24 11:24:56 2015 -0500
@@ -860,7 +860,7 @@
#ifndef LINK_SSP_SPEC
#ifdef TARGET_LIBC_PROVIDES_SSP
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
- "|fstack-protector-strong|fstack-protector-explicit:}"
+ "|fstack-protector-strong|fstack-protector-explicit:-lssp_nonshared}"
#else
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
"|fstack-protector-strong|fstack-protector-explicit" \
# HG changeset patch
# Parent 76b553fabcf19eec5df2df7f05ce15a4bf8c3996
Support for mips-linux-musl.
diff -r 76b553fabcf1 gcc/config/mips/linux.h
--- a/gcc/config/mips/linux.h Thu Dec 24 11:25:02 2015 -0500
+++ b/gcc/config/mips/linux.h Thu Dec 24 11:25:04 2015 -0500
@@ -31,6 +31,13 @@
#undef UCLIBC_DYNAMIC_LINKER32
#define UCLIBC_DYNAMIC_LINKER32 \
"%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
+
+#undef MUSL_DYNAMIC_LINKER32
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1"
+#undef MUSL_DYNAMIC_LINKER64
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1"
+#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1"
+
#undef UCLIBC_DYNAMIC_LINKER64
#define UCLIBC_DYNAMIC_LINKER64 \
"%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
# HG changeset patch
# Parent 971d410411735f0b04eb07236659097986926213
Support for powerpc-linux-musl.
diff -r 971d41041173 gcc/config.gcc
--- a/gcc/config.gcc Fri Dec 25 08:44:09 2015 -0500
+++ b/gcc/config.gcc Fri Dec 25 09:42:16 2015 -0500
@@ -2464,6 +2464,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 9555ffb5873b gcc/config/aarch64/aarch64-linux.h
--- a/gcc/config/aarch64/aarch64-linux.h Thu Dec 24 11:25:06 2015 -0500
+++ b/gcc/config/aarch64/aarch64-linux.h Thu Dec 24 11:25:09 2015 -0500
@@ -32,6 +32,8 @@
#undef CC1_SPEC
#define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
+
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
#define LINUX_TARGET_LINK_SPEC "%{h*} \
diff -r a522e4b04c77 gcc/config/microblaze/microblaze.h
--- a/gcc/config/microblaze/microblaze.h Thu Dec 24 11:25:11 2015 -0500
+++ b/gcc/config/microblaze/microblaze.h Thu Dec 24 11:25:13 2015 -0500
@@ -218,6 +218,12 @@
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
+#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 -r f2936ad874dd gcc/config/sh/linux.h
--- a/gcc/config/sh/linux.h Fri Sep 28 16:32:03 2012 +1000
+++ b/gcc/config/sh/linux.h Thu Dec 24 11:25:15 2015 -0500
@@ -64,7 +64,14 @@
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
+#define MUSL_DYNAMIC_LINKER_E "eb"
+#else
+#define MUSL_DYNAMIC_LINKER_E
+#endif
+
#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"
Do not use weak references on any targets for gthread. Necessary on musl, safe elsewhere.
diff -r e180e4cfc879 libgcc/gthr.h
--- a/libgcc/gthr.h Thu Dec 24 11:25:15 2015 -0500
+++ b/libgcc/gthr.h Thu Dec 24 11:25:17 2015 -0500
@@ -136,10 +136,8 @@
/* The pe-coff weak support isn't fully compatible to ELF's weak.
For static libraries it might would work, but as we need to deal
with shared versions too, we disable it for mingw-targets. */
-#ifdef __MINGW32__
#undef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 0
-#endif
#ifndef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 1
From 0a9ed0479203cb7e69c3745b0c259007410f39ba Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 24 Oct 2015 20:09:53 +0000
Subject: [PATCH 47/47] libgcc_s: Use alias for __cpu_indicator_init instead of
symver
Adapter from
https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00899.html
This fix was debated but hasnt been applied gcc upstream since
they expect musl to support '@' in symbol versioning which is
a sun/gnu versioning extention. This patch however avoids the
need for the '@' symbols at all
libgcc/Changelog:
2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
* config/i386/cpuinfo.c (__cpu_indicator_init_local): Add.
(__cpu_indicator_init@GCC_4.8.0, __cpu_model@GCC_4.8.0): Remove.
* config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Remove -DUSE_ELF_SYMVER.
gcc/Changelog:
2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
* config/i386/i386.c (ix86_expand_builtin): Make __builtin_cpu_init
call __cpu_indicator_init_local instead of __cpu_indicator_init.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Rejected
gcc/config/i386/i386.c | 4 ++--
libgcc/config/i386/cpuinfo.c | 6 +++---
libgcc/config/i386/t-linux | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 861a029..1c97d72 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -40323,10 +40323,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
{
case IX86_BUILTIN_CPU_INIT:
{
- /* Make it call __cpu_indicator_init in libgcc. */
+ /* Make it call __cpu_indicator_init_local in libgcc.a. */
tree call_expr, fndecl, type;
type = build_function_type_list (integer_type_node, NULL_TREE);
- fndecl = build_fn_decl ("__cpu_indicator_init", type);
+ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
call_expr = build_call_expr (fndecl, 0);
return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
}
diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
index 8c2248d..6c82f15 100644
--- a/libgcc/config/i386/cpuinfo.c
+++ b/libgcc/config/i386/cpuinfo.c
@@ -485,7 +485,7 @@ __cpu_indicator_init (void)
return 0;
}
-#if defined SHARED && defined USE_ELF_SYMVER
-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
-__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
+#ifndef SHARED
+int __cpu_indicator_init_local (void)
+ __attribute__ ((weak, alias ("__cpu_indicator_init")));
#endif
diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
index 11bb46e..4f47f7b 100644
--- a/libgcc/config/i386/t-linux
+++ b/libgcc/config/i386/t-linux
@@ -3,4 +3,4 @@
# t-slibgcc-elf-ver and t-linux
SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
+HOST_LIBGCC2_CFLAGS += -mlong-double-80
--
2.9.0
--- a/boehm-gc/os_dep.c 2013-09-17 07:46:00.969884340 +0000
+++ b/boehm-gc/os_dep.c 2013-09-17 06:53:53.629884946 +0000
@@ -26,7 +26,7 @@
# define __KERNEL__
# include <asm/signal.h>
# undef __KERNEL__
-# else
+# elif defined(__GLIBC__)
/* Kernels prior to 2.1.1 defined struct sigcontext_struct instead of */
/* struct sigcontext. libc6 (glibc2) uses "struct sigcontext" in */
/* prototypes, so we have to include the top-level sigcontext.h to */
--- a/boehm-gc/dyn_load.c
+++ b/boehm-gc/dyn_load.c
@@ -459,9 +459,7 @@
/* For glibc 2.2.4+. Unfortunately, it doesn't work for older */
/* versions. Thanks to Jakub Jelinek for most of the code. */
-# if (defined(LINUX) || defined (__GLIBC__)) /* Are others OK here, too? */ \
- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
+# if (defined(LINUX) || defined (__GLIBC__))
/* We have the header files for a glibc that includes dl_iterate_phdr. */
/* It may still not be available in the library on the target system. */
--- a/boehm-gc/include/private/gcconfig.h
+++ b/boehm-gc/include/private/gcconfig.h
@@ -684,7 +684,7 @@
# ifdef __ELF__
# define DYNAMIC_LOADING
# include <features.h>
-# if defined(__GLIBC__)&& __GLIBC__>=2
+# if 1
# define SEARCH_FOR_DATA_START
# else /* !GLIBC2 */
extern char **__environ;
@@ -1147,7 +1147,7 @@
# define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
# endif
# include <features.h>
-# if defined(__GLIBC__) && __GLIBC__ >= 2
+# if 1
# define SEARCH_FOR_DATA_START
# else
extern char **__environ;
@@ -1367,7 +1367,7 @@
# define HBLKSIZE 4096
# endif
# define USE_GENERIC_PUSH_REGS
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
+# if 1
# define LINUX_STACKBOTTOM
# else
# define STACKBOTTOM 0x80000000
@@ -1858,7 +1858,7 @@
# ifdef __ELF__
# define DYNAMIC_LOADING
# include <features.h>
-# if defined(__GLIBC__) && __GLIBC__ >= 2
+# if 1
# define SEARCH_FOR_DATA_START
# else
extern char **__environ;
--- a/libjava/gnu/gcj/convert/natIconv.cc
+++ b/libjava/gnu/gcj/convert/natIconv.cc
@@ -24,6 +24,13 @@
#ifdef HAVE_ICONV
#include <iconv.h>
+#include <endian.h>
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define UCS2_CHARSET "UCS-2BE"
+#else
+#define UCS2_CHARSET "UCS-2LE"
+#endif
template<typename T>
static inline size_t
@@ -45,7 +52,7 @@
_Jv_GetStringUTFRegion (encoding, 0, encoding->length(), buffer);
buffer[len] = '\0';
- iconv_t h = iconv_open ("UCS-2", buffer);
+ iconv_t h = iconv_open (UCS2_CHARSET, buffer);
if (h == (iconv_t) -1)
throw new ::java::io::UnsupportedEncodingException (encoding);
@@ -99,18 +106,6 @@
throw new ::java::io::CharConversionException ();
}
- if (iconv_byte_swap)
- {
- size_t max = (old_out - outavail) / sizeof (jchar);
- for (size_t i = 0; i < max; ++i)
- {
- // Byte swap.
- jchar c = (((out[outpos + i] & 0xff) << 8)
- | ((out[outpos + i] >> 8) & 0xff));
- outbuf[i] = c;
- }
- }
-
inpos += old_in - inavail;
return (old_out - outavail) / sizeof (jchar);
#else /* HAVE_ICONV */
@@ -145,7 +140,7 @@
_Jv_GetStringUTFRegion (encoding, 0, encoding->length(), buffer);
buffer[len] = '\0';
- iconv_t h = iconv_open (buffer, "UCS-2");
+ iconv_t h = iconv_open (buffer, UCS2_CHARSET);
if (h == (iconv_t) -1)
throw new ::java::io::UnsupportedEncodingException (encoding);
@@ -187,20 +182,6 @@
char *inbuf = (char *) &chars[inpos];
char *outbuf = (char *) &out[count];
- if (iconv_byte_swap)
- {
- // Ugly performance penalty -- don't use losing systems!
- temp_buffer = (jchar *) _Jv_Malloc (inlength * sizeof (jchar));
- for (int i = 0; i < inlength; ++i)
- {
- // Byte swap.
- jchar c = (((chars[inpos + i] & 0xff) << 8)
- | ((chars[inpos + i] >> 8) & 0xff));
- temp_buffer[i] = c;
- }
- inbuf = (char *) temp_buffer;
- }
-
size_t loop_old_in = old_in;
while (1)
{
@@ -252,44 +233,7 @@
jboolean
gnu::gcj::convert::IOConverter::iconv_init (void)
{
- // Some versions of iconv() always return their UCS-2 results in
- // big-endian order, and they also require UCS-2 inputs to be in
- // big-endian order. For instance, glibc 2.1.3 does this. If the
- // UTF-8=>UCS-2 iconv converter has this feature, then we assume
- // that all UCS-2 converters do. (This might not be the best
- // heuristic, but is is all we've got.)
- jboolean result = false;
-#ifdef HAVE_ICONV
- iconv_t handle = iconv_open ("UCS-2", "UTF-8");
- if (handle != (iconv_t) -1)
- {
- jchar c;
- unsigned char in[4];
- char *inp, *outp;
- size_t inc, outc, r;
-
- // This is the UTF-8 encoding of \ufeff. At least Tru64 UNIX libiconv
- // needs the trailing NUL byte, otherwise iconv fails with EINVAL.
- in[0] = 0xef;
- in[1] = 0xbb;
- in[2] = 0xbf;
- in[3] = 0x00;
-
- inp = (char *) in;
- inc = 4;
- outp = (char *) &c;
- outc = 2;
-
- r = iconv_adapter (iconv, handle, &inp, &inc, &outp, &outc);
- // Conversion must be complete for us to use the result.
- if (r != (size_t) -1 && inc == 0 && outc == 0)
- result = (c != 0xfeff);
-
- // Release iconv handle.
- iconv_close (handle);
- }
-#endif /* HAVE_ICONV */
- return result;
+ return false;
}
void
--- a/libjava/gnu/classpath/natSystemProperties.cc
+++ b/libjava/gnu/classpath/natSystemProperties.cc
@@ -289,7 +289,7 @@
// just default to `en_US'.
setlocale (LC_ALL, "");
char *locale = setlocale (LC_MESSAGES, "");
- if (locale && strlen (locale) >= 2)
+ if (locale && strlen (locale) >= 2 && (locale[2] == '\0' || locale[2] == '_'))
{
char buf[3];
buf[2] = '\0';
--- a/libjava/posix-threads.cc
+++ b/libjava/posix-threads.cc
@@ -657,6 +657,7 @@
struct sched_param param;
pthread_attr_t attr;
struct starter *info;
+ size_t ss;
if (data->flags & FLAG_START)
return;
@@ -675,8 +676,25 @@
// Set stack size if -Xss option was given.
if (gcj::stack_size > 0)
{
- int e = pthread_attr_setstacksize (&attr, gcj::stack_size);
+ ss = gcj::stack_size;
+ }
+ else
+ {
+ int e = pthread_attr_getstacksize (&attr, &ss);
+ if (e != 0)
+ JvFail (strerror (e));
+
+ // Request at least 1meg of stack
+ if (ss >= 1024 * 1024)
+ ss = 0;
+ else
+ ss = 1024 * 1024;
+ }
+
+ if (ss)
+ {
+ int e = pthread_attr_setstacksize (&attr, ss);
if (e != 0)
JvFail (strerror (e));
}
info = (struct starter *) _Jv_AllocBytes (sizeof (struct starter));
--- a/libgo/mksysinfo.sh
+++ b/libgo/mksysinfo.sh
@@ -166,6 +166,13 @@ cat > sysinfo.c <<EOF
#if defined(HAVE_SCHED_H)
#include <sched.h>
#endif
+#if !defined(__GLIBC__)
+#include <sys/types.h>
+#undef off64_t
+#undef loff_t
+typedef off_t loff_t;
+typedef off_t off64_t;
+#endif
/* Constants that may only be defined as expressions on some systems,
expressions too complex for -fdump-go-spec to handle. These are
--- a/libgo/runtime/proc.c 2016-09-23 16:17:22.000000000 +0200
+++ b/libgo/runtime/proc.c 2016-10-03 07:33:42.186000000 +0200
@@ -150,6 +150,20 @@
asm ("st %%g7, %0" : "=m"(c->uc_mcontext.gregs[REG_G7]));
}
+# elif !defined(__GLIBC__)
+
+static inline void
+initcontext(void)
+{
+ // FIXME: Do we need to save (part of) the current context?
+}
+
+static inline void
+fixcontext(ucontext_t *c __attribute__ ((unused)))
+{
+ // FIXME: Do we need to restore (part of) the current context?
+}
+
# else
# error unknown case for SETCONTEXT_CLOBBERS_TLS

View File

@ -0,0 +1,10 @@
--- Makefile.in.orig
+++ Makefile.in
@@ -169,6 +169,7 @@
# built for the build system to override those in BASE_FLAGS_TO_PASSS.
EXTRA_BUILD_FLAGS = \
CFLAGS="$(CFLAGS_FOR_BUILD)" \
+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
LDFLAGS="$(LDFLAGS_FOR_BUILD)"
# This is the list of directories to built for the host system.

View File

@ -0,0 +1,33 @@
There is no <execinfo.h> in musl libc
--- libvtv/vtv_rts.cc 2016-09-23 16:17:11.000000000 +0200
+++ libvtc/vtv_rts.cc 2016-09-25 15:08:57.896000000 +0200
@@ -124,7 +124,7 @@
#include <windows.h>
#include <winternl.h>
#include <psapi.h>
-#else
+#elif defined (__GLIBC__)
#include <execinfo.h>
#endif
--- libvtv/vtv_utils.cc 2016-09-23 16:17:11.000000000 +0200
+++ libvtv/vtv_utils.cc 2016-09-25 15:15:35.529000000 +0200
@@ -34,7 +34,7 @@
#include <string.h>
#if defined (__CYGWIN__) || defined (__MINGW32__)
#include <windows.h>
-#else
+#elif defined (__GLIBC__)
#include <execinfo.h>
#endif
@@ -178,7 +178,7 @@
__vtv_add_to_log (vtv_failures_log_fd, "%s", log_msg);
-#if !defined (__CYGWIN__) && !defined (__MINGW32__)
+#if !defined (__CYGWIN__) && !defined (__MINGW32__) && defined(__GLIBC__)
if (generate_backtrace)
{
#define STACK_DEPTH 20

View File

@ -1,87 +0,0 @@
2013-08-22 Magnus Granberg <zorry@gentoo.org>
* gcc/gcc.c (main): Add support for external spec file via the GCC_SPECS env var
and move the process of the user specifed specs.
This allows us to easily control pie/ssp defaults with gcc-config profiles.
Original patch by Rob Holland
Extended to support multiple entries separated by ':' by Kevin F. Quinn
Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
Modified to process the GCC_SPECS env var befor DRIVER_SELF_SPECS by Magnus Granberg
--- gcc/gcc.c 2013-02-05 16:55:31.000000000 +0100
+++ gcc/gcc.c 2013-07-26 02:32:14.625089864 +0200
@@ -6427,6 +6428,48 @@ main (int argc, char **argv)
do_option_spec (option_default_specs[i].name,
option_default_specs[i].spec);
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
+ /* Add specs listed in GCC_SPECS. Note; in the process of separating
+ * each spec listed, the string is overwritten at token boundaries
+ * (':') with '\0', an effect of strtok_r().
+ */
+ specs_file = getenv ("GCC_SPECS");
+ if (specs_file && (strlen(specs_file) > 0))
+ {
+ char *spec, *saveptr;
+ for (spec=strtok_r(specs_file,":",&saveptr);
+ spec!=NULL;
+ spec=strtok_r(NULL,":",&saveptr))
+ {
+ struct user_specs *user = (struct user_specs *)
+ xmalloc (sizeof (struct user_specs));
+ user->next = (struct user_specs *) 0;
+ user->filename = spec;
+ if (user_specs_tail)
+ user_specs_tail->next = user;
+ else
+ user_specs_head = user;
+ user_specs_tail = user;
+ }
+ }
+#endif
+ /* Process any user specified specs in the order given on the command
+ * line. */
+ for (uptr = user_specs_head; uptr; uptr = uptr->next)
+ {
+ char *filename = find_a_file (&startfile_prefixes, uptr->filename,
+ R_OK, true);
+ read_specs (filename ? filename : uptr->filename, false, true);
+ }
+ /* Process any user self specs. */
+ {
+ struct spec_list *sl;
+ for (sl = specs; sl; sl = sl->next)
+ if (sl->name_len == sizeof "self_spec" - 1
+ && !strcmp (sl->name, "self_spec"))
+ do_self_spec (*sl->ptr_spec);
+ }
+
/* Process DRIVER_SELF_SPECS, adding any new options to the end
of the command line. */
@@ -6535,24 +6578,6 @@ main (int argc, char **argv)
PREFIX_PRIORITY_LAST, 0, 1);
}
- /* Process any user specified specs in the order given on the command
- line. */
- for (uptr = user_specs_head; uptr; uptr = uptr->next)
- {
- char *filename = find_a_file (&startfile_prefixes, uptr->filename,
- R_OK, true);
- read_specs (filename ? filename : uptr->filename, false, true);
- }
-
- /* Process any user self specs. */
- {
- struct spec_list *sl;
- for (sl = specs; sl; sl = sl->next)
- if (sl->name_len == sizeof "self_spec" - 1
- && !strcmp (sl->name, "self_spec"))
- do_self_spec (*sl->ptr_spec);
- }
-
if (compare_debug)
{
enum save_temps save;

View File

@ -12,7 +12,7 @@ time_t is some day promoted to a 64 bit value.
--- libcpp/macro.c
+++ libcpp/macro.c
@@ -349,14 +349,38 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
@@ -356,14 +356,38 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
slow on some systems. */
time_t tt;
struct tm *tb = NULL;

View File

@ -1,30 +0,0 @@
diff --git gcc/config/i386/pmm_malloc.h gcc/config/i386/pmm_malloc.h
index 901001b..321fcd3 100644
--- gcc/config/i386/pmm_malloc.h
+++ gcc/config/i386/pmm_malloc.h
@@ -27,12 +27,13 @@
#include <stdlib.h>
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
- may not be visible. */
+ may not be visible and we can't pollute the namespace either. */
#ifndef __cplusplus
-extern int posix_memalign (void **, size_t, size_t);
+extern int __gcc_posix_memalign (void **, size_t, size_t)
#else
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
+extern "C" int __gcc_posix_memalign (void **, size_t, size_t) throw ()
#endif
+__asm__("posix_memalign");
static __inline void *
_mm_malloc (size_t size, size_t alignment)
@@ -42,7 +43,7 @@ _mm_malloc (size_t size, size_t alignment)
return malloc (size);
if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
alignment = sizeof (void *);
- if (posix_memalign (&ptr, alignment, size) == 0)
+ if (__gcc_posix_memalign (&ptr, alignment, size) == 0)
return ptr;
else
return NULL;

View File

@ -1,15 +1,16 @@
# Template build file for 'gcc'
_majorver=6.2
_gcjrel=17
pkgname=gcc
_majorver=4.9
version=${_majorver}.4
version=${_majorver}.1
revision=1
short_desc="The GNU C Compiler"
maintainer="Juan RP <xtraeme@voidlinux.eu>"
homepage="http://gcc.gnu.org"
license="GFDL-1.2, GPL-3, LGPL-2.1"
distfiles="${GNU_SITE}/gcc/gcc-$version/gcc-$version.tar.bz2"
checksum=6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092
_gcjrel=15
distfiles="https://repo.voidlinux.eu/distfiles/gcc-$version.tar.xz"
checksum=a7addd2d4e42e66c3b56ced8baee5a11ef7fb577e23615a4f43877273eaf9409
nopie=yes
lib32disabled=yes
@ -18,25 +19,24 @@ bootstrap=yes
if [ "$CHROOT_READY" ]; then
hostmakedepends="perl flex"
fi
makedepends="zlib-devel libmpc-devel cloog-devel"
depends="binutils libgcc-devel-${version}_${revision}"
makedepends="zlib-devel libmpc-devel isl15-devel"
depends="binutils libgcc-devel-${version}_${revision}
libstdc++-devel-${version}_${revision} libssp-devel-${version}_${revision}"
subpackages="libgcc libgomp libgomp-devel libatomic libatomic-devel"
subpackages+=" libssp libssp-devel gcc-c++"
subpackages+=" libssp libssp-devel"
if [ -n "$CHROOT_READY" -a -z "$CROSS_BUILD" ]; then
# Required by gcj
hostmakedepends+=" zip unzip"
subpackages+=" gcc-fortran gcc-objc gcc-objc++"
subpackages+=" libgfortran-devel libgfortran"
subpackages+=" libobjc-devel libobjc"
subpackages+=" gcc-gcj libgcj-devel libgcj gcc-gcj-jdk-compat"
case "$XBPS_TARGET_MACHINE" in
*-musl)
# XXX disable go and java with musl
*-musl) # Go won't link for musl libc
;;
*)
# Required by gcj
hostmakedepends+=" zip unzip"
subpackages+=" gcc-go libgo-devel libgo gcc-gcj libgcj-devel libgcj gcc-gcj-jdk-compat"
*) subpackages+=" gcc-go libgo-devel libgo"
;;
esac
fi
@ -74,19 +74,19 @@ case "$XBPS_TARGET_MACHINE" in
esac
case "$XBPS_TARGET_MACHINE" in
mips*) ;;
x86_64*|i686*) subpackages+=" libitm libitm-devel libmpx libmpx-devel";;
*) subpackages+=" libitm libitm-devel";;
esac
# gcc-c++ merged in main pkg
replaces="gcc-c++>=0"
pre_configure() {
case "$XBPS_TARGET_MACHINE" in
*-musl) patch -Np1 -i ${FILESDIR}/gcc-4.9.2-musl.diff;;
*-musl) patch -Np1 -i ${FILESDIR}/gcc-${version}-musl.diff;;
esac
# _FORTIFY_SOURCE needs an optimization level.
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {gcc,libiberty}/configure
# As specified in the LFS book, disable installing libiberty.
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
# Do not run fixincludes
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
}
do_configure() {
local _langs _args _hash
@ -118,7 +118,9 @@ do_configure() {
export GCC_FOR_TARGET="$CC"
export CXX_FOR_TARGET="$CXX"
_args+=" --disable-multilib --host=$XBPS_CROSS_TRIPLET --with-build-sysroot=${XBPS_CROSS_BASE}"
_args+=" --disable-multilib"
_args+=" --host=$XBPS_CROSS_TRIPLET"
_args+=" --with-build-sysroot=${XBPS_CROSS_BASE}"
_args+=" --enable-sjlj-exceptions=no"
else
if [ -z "$CHROOT_READY" ]; then
@ -127,15 +129,18 @@ do_configure() {
_args+=" --with-mpfr=${XBPS_MASTERDIR}/usr"
_args+=" --with-isl=${XBPS_MASTERDIR}/usr"
_args+=" --with-mpc=${XBPS_MASTERDIR}/usr"
_args+=" --with-cloog=${XBPS_MASTERDIR}/usr"
_args+=" --build=${_triplet}"
else
_langs="c,c++,objc,obj-c++,fortran,lto,java"
case "$XBPS_TARGET_MACHINE" in
# XXX disable go and java with musl
*-musl) _langs="c,c++,objc,obj-c++,fortran,lto";;
*) _langs="c,c++,objc,obj-c++,fortran,lto,go,java";;
*-musl) # Linking libgo.so is broken for musl libc
;;
*) _langs+=",go"
;;
esac
_args+=" --build=${_triplet} --enable-java-gc=boehm --enable-fast-character"
_args+=" --build=${_triplet}"
_args+=" --enable-java-gc=boehm"
_args+=" --enable-fast-character"
fi
fi
@ -143,34 +148,60 @@ do_configure() {
aarch64*|*-musl) _args+=" --disable-libsanitizer";;
esac
case "$XBPS_TARGET_MACHINE" in
*-musl) _args+=" --disable-symvers libat_cv_have_ifunc=no";;
*-musl) _args+=" --disable-symvers"
_args+=" libat_cv_have_ifunc=no"
;;
esac
export CFLAGS="${CFLAGS/-D_FORTIFY_SOURCE=2/}"
export CXXFLAGS="${CXXFLAGS/-D_FORTIFY_SOURCE=2/}"
CONFIG_SHELL=/bin/bash \
./configure --prefix=/usr --mandir=/usr/share/man \
--infodir=/usr/share/info --libexecdir=/usr/lib --libdir=/usr/lib \
--enable-threads=posix --enable-__cxa_atexit --disable-multilib \
--with-system-zlib --enable-shared --enable-lto \
--enable-linker-build-id --disable-werror --disable-nls \
--enable-checking=release --disable-libstdcxx-pch \
--enable-cloog-backend=isl --with-linker-hash-style=$_hash \
--enable-languages=${_langs} ${_args}
_args+=" --prefix=/usr"
_args+=" --mandir=/usr/share/man"
_args+=" --infodir=/usr/share/info"
_args+=" --libexecdir=/usr/lib"
_args+=" --libdir=/usr/lib"
_args+=" --enable-threads=posix"
_args+=" --enable-__cxa_atexit"
_args+=" --disable-multilib"
_args+=" --with-system-zlib"
_args+=" --enable-shared"
_args+=" --enable-lto"
_args+=" --enable-vtable-verify"
_args+=" --enable-linker-build-id"
_args+=" --enable-serial-configure"
_args+=" --disable-werror"
_args+=" --disable-nls"
_args+=" --enable-checking=release"
_args+=" --disable-libstdcxx-pch"
_args+=" --with-isl"
_args+=" --with-linker-hash-style=$_hash"
_args+=" --disable-libunwind-exceptions"
_args+=" --disable-target-libiberty"
_args+=" --with-default-libstdcxx-abi=gcc4-compatible"
_args+=" --enable-languages=${_langs}"
mkdir -p build
cd build
CONFIG_SHELL=/bin/bash ${wrksrc}/configure ${_args}
}
do_build() {
if [ -z "$CHROOT_READY" ]; then
export LD_LIBRARY_PATH="${XBPS_MASTERDIR}/usr/lib"
fi
cd build
make ${makejobs}
}
pre_install() {
if [ "$CROSS_BUILD" ]; then
# XXX otherwise links to host libpthread
for f in $(find ${wrksrc}/${XBPS_CROSS_TRIPLET} -type f -name libtool); do
for f in $(find ${wrksrc}/build/${XBPS_CROSS_TRIPLET} -type f -name libtool); do
sed -e "s,add_dir=\"-L\$libdir\",add_dir=\"-L${XBPS_CROSS_BASE}\$libdir\",g" -i $f
done
fi
}
do_install() {
cd build
case "$XBPS_TARGET_MACHINE" in
x86_64*|aarch64*)
vmkdir usr/lib
@ -325,7 +356,7 @@ gcc-fortran_package() {
}
gcc-objc++_package() {
lib32disabled=yes
depends="gcc-c++>=${_majorver} gcc-objc>=${_majorver}"
depends="gcc-objc>=${_majorver}"
short_desc+=" - Objective-C++ support"
pkg_install() {
vmove usr/lib/gcc/${_triplet}/${_majorver}/cc1objplus
@ -354,7 +385,7 @@ libgcj-devel_package() {
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/gcj*"
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/jvm*"
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/jawt*"
vmove usr/lib/pkgconfig/libgcj-${_majorver}.pc
vmove usr/lib/pkgconfig/libgcj-${_majorver%.*}.pc
}
}
libgcj_package() {
@ -374,7 +405,10 @@ libgfortran-devel_package() {
short_desc+=" - Fortran library - development files"
pkg_install() {
vmove usr/lib/libgfortran.a
vmove usr/lib/gcc/${_triplet}/${_majorver}/libgfortranbegin.a
# This does not seem to exist anymore?
if [ -f usr/lib/gcc/${_triplet}/${_majorver}/libgfortranbegin.a ]; then
vmove usr/lib/gcc/${_triplet}/${_majorver}/libgfortranbegin.a
fi
}
}
libgfortran_package() {
@ -391,6 +425,7 @@ libgo-devel_package() {
pkg_install() {
vmove usr/lib/libgo.a
vmove usr/lib/libgobegin.a
vmove usr/lib/libgo.so
}
}
libgo_package() {
@ -529,6 +564,23 @@ libitm_package() {
vmove "usr/lib/libitm.so.*"
}
}
libmpx-devel_package() {
depends="libmpx>=${_majorver}"
short_desc+=" - Intel MPX support - development files"
pkg_install() {
vmove usr/lib/libmpx.a
vmove usr/lib/libmpx.so
vmove usr/lib/libmpxwrappers.so
vmove usr/lib/libmpxwrappers.a
}
}
libmpx_package() {
short_desc+=" - Intel MPX support"
pkg_install() {
vmove usr/lib/libmpx.so.*
vmove usr/lib/libmpxwrappers.so.*
}
}
libsanitizer-devel_package() {
depends="libsanitizer>=${_majorver}"
short_desc+=" - Sanitizer libraries - development files"
@ -546,7 +598,7 @@ libsanitizer_package() {
}
}
libssp-devel_package() {
depends="glibc-devel libssp>=${_majorver}"
depends="libssp>=${_majorver}"
short_desc+=" - SSP (StackSmashingProtection) library - development files"
pkg_install() {
vmove "usr/lib/libssp*.a"
@ -576,15 +628,3 @@ libstdc++_package() {
vlicense ${wrksrc}/COPYING.RUNTIME RUNTIME.LIBRARY.EXCEPTION
}
}
gcc-c++_package() {
lib32disabled=yes
depends="gcc>=${_majorver} libstdc++-devel>=${_majorver}"
short_desc+=" - C++ support"
pkg_install() {
for f in g++ c++ ${_triplet}-g++ ${_triplet}-c++; do
vmove usr/bin/${f}
done
vmove usr/lib/gcc/${_triplet}/${_majorver}/cc1plus
vmove usr/share/man/man1/g++.1
}
}

1
srcpkgs/libmpx-devel Symbolic link
View File

@ -0,0 +1 @@
gcc

View File

@ -403,9 +403,9 @@ readonly XBPS_VERSION_REQ="0.46"
readonly XBPS_VERSION=$(xbps-uhelper -V|awk '{print $2}')
readonly XBPS_SRC_VERSION="113"
export XBPS_MACHINE=$(xbps-uhelper arch)
readonly XBPS_GCC_VERSION_MAJOR=4
readonly XBPS_GCC_VERSION_MINOR=9
readonly XBPS_GCC_VERSION_BUILD=4
readonly XBPS_GCC_VERSION_MAJOR=6
readonly XBPS_GCC_VERSION_MINOR=2
readonly XBPS_GCC_VERSION_BUILD=1
readonly XBPS_GCC_VERSION=${XBPS_GCC_VERSION_MAJOR}.${XBPS_GCC_VERSION_MINOR}.${XBPS_GCC_VERSION_BUILD}
#