Created
October 30, 2014 02:16
-
-
Save omeid/76ea3c1a96fa5ace8138 to your computer and use it in GitHub Desktop.
GCC 4.7.3 Musl-1 Patch.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submitted By: Andrew Bradford <[email protected]> | |
Date: 2013-10-14 | |
Initial Package Version: 4.7.3 | |
Origin: Gregor Richards' musl-cross | |
Upstream Status: None | |
Description: Patches to gcc to build for musl-libc. | |
# HG changeset patch | |
# Parent f50bb54f331f73405131a30b4f353cfda1c70304 | |
Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one. | |
diff -r f50bb54f331f libstdc++-v3/configure.host | |
--- a/libstdc++-v3/configure.host Fri Mar 29 16:38:52 2013 -0400 | |
+++ b/libstdc++-v3/configure.host Fri Mar 29 16:41:10 2013 -0400 | |
@@ -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 8cd76d5f6674f04c31523971d1dfc81c91388c38 | |
Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. | |
diff -r 8cd76d5f6674 gcc/config.gcc | |
--- a/gcc/config.gcc Mon Sep 09 12:54:21 2013 -0400 | |
+++ b/gcc/config.gcc Mon Sep 09 12:54:37 2013 -0400 | |
@@ -522,7 +522,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" | |
# Common parts for widely ported systems. | |
case ${target} in | |
@@ -625,6 +625,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 8cd76d5f6674 gcc/config/linux.h | |
--- a/gcc/config/linux.h Mon Sep 09 12:54:21 2013 -0400 | |
+++ b/gcc/config/linux.h Mon Sep 09 12:54:37 2013 -0400 | |
@@ -33,10 +33,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() \ | |
@@ -54,18 +56,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 */ | |
@@ -85,21 +90,21 @@ | |
#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) | |
/* Determine whether the entire c99 runtime | |
is present in the runtime library. */ | |
#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 | |
@@ -108,3 +113,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 8cd76d5f6674 gcc/config/linux.opt | |
--- a/gcc/config/linux.opt Mon Sep 09 12:54:21 2013 -0400 | |
+++ b/gcc/config/linux.opt Mon Sep 09 12:54:37 2013 -0400 | |
@@ -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 8cd76d5f6674 gcc/ginclude/stddef.h | |
--- a/gcc/ginclude/stddef.h Mon Sep 09 12:54:21 2013 -0400 | |
+++ b/gcc/ginclude/stddef.h Mon Sep 09 12:54:37 2013 -0400 | |
@@ -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(__FreeBSD_kernel__) | |
/* __size_t is a typedef on FreeBSD 5, must not trash it. */ | |
@@ -215,6 +217,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 2b94537ce2496c88e7e797c617e5b95e8d7e4785 | |
A fix for libgomp to correctly request a POSIX version for time support. | |
diff -r 2b94537ce249 libgomp/config/posix/time.c | |
--- a/libgomp/config/posix/time.c Fri Mar 29 16:41:14 2013 -0400 | |
+++ b/libgomp/config/posix/time.c Fri Mar 29 16:41:17 2013 -0400 | |
@@ -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 2ebb44d1e6f1 libgcc/unwind-dw2-fde-dip.c | |
--- a/libgcc/unwind-dw2-fde-dip.c Sun Jul 28 12:15:47 2013 -0400 | |
+++ b/libgcc/unwind-dw2-fde-dip.c Sun Jul 28 12:17:02 2013 -0400 | |
@@ -47,28 +47,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(__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) | |
diff -r 75d9c38318a7 gcc/configure | |
--- a/gcc/configure Tue Sep 24 06:52:49 2013 -0400 | |
+++ b/gcc/configure Tue Sep 24 06:54:33 2013 -0400 | |
@@ -26736,6 +26736,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. | |
@@ -26769,6 +26772,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" | |
@@ -26851,6 +26855,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 75d9c38318a7 gcc/configure.ac | |
--- a/gcc/configure.ac Tue Sep 24 06:52:49 2013 -0400 | |
+++ b/gcc/configure.ac Tue Sep 24 06:54:33 2013 -0400 | |
@@ -4719,6 +4719,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. | |
@@ -4752,6 +4755,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], | |
@@ -4817,6 +4821,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 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 65cd23493c45f2a531ca15ffea563d6110143cdd | |
New config.sub for GCC versions too early for the update. | |
diff -r 65cd23493c45 -r 355cec477536 config.sub | |
--- a/config.sub Tue Aug 27 15:49:27 2013 -0400 | |
+++ b/config.sub Tue Aug 27 15:51:14 2013 -0400 | |
@@ -4,7 +4,7 @@ | |
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, | |
# 2011 Free Software Foundation, Inc. | |
-timestamp='2011-10-29' | |
+timestamp='2011-03-23' | |
# This file is (in principle) common to ALL GNU software. | |
# The presence of a machine in this file suggests that SOME GNU software | |
@@ -125,6 +125,7 @@ | |
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` | |
case $maybe_os in | |
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ | |
+ linux-musl* | \ | |
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ | |
knetbsd*-gnu* | netbsd*-gnu* | \ | |
kopensolaris*-gnu* | \ | |
@@ -251,17 +252,13 @@ | |
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | |
| am33_2.0 \ | |
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | |
- | be32 | be64 \ | |
| bfin \ | |
| c4x | clipper \ | |
| d10v | d30v | dlx | dsp16xx \ | |
- | epiphany \ | |
| fido | fr30 | frv \ | |
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | |
- | hexagon \ | |
| i370 | i860 | i960 | ia64 \ | |
| ip2k | iq2000 \ | |
- | le32 | le64 \ | |
| lm32 \ | |
| m32c | m32r | m32rle | m68000 | m68k | m88k \ | |
| maxq | mb | microblaze | mcore | mep | metag \ | |
@@ -295,7 +292,7 @@ | |
| pdp10 | pdp11 | pj | pjl \ | |
| powerpc | powerpc64 | powerpc64le | powerpcle \ | |
| pyramid \ | |
- | rl78 | rx \ | |
+ | rx \ | |
| score \ | |
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | |
| sh64 | sh64le \ | |
@@ -304,7 +301,7 @@ | |
| spu \ | |
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | |
| ubicom32 \ | |
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | |
+ | v850 | v850e \ | |
| we32k \ | |
| x86 | xc16x | xstormy16 | xtensa \ | |
| z8k | z80) | |
@@ -361,7 +358,6 @@ | |
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | |
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | |
| avr-* | avr32-* \ | |
- | be32-* | be64-* \ | |
| bfin-* | bs2000-* \ | |
| c[123]* | c30-* | [cjt]90-* | c4x-* \ | |
| clipper-* | craynv-* | cydra-* \ | |
@@ -370,10 +366,8 @@ | |
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | |
| h8300-* | h8500-* \ | |
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | |
- | hexagon-* \ | |
| i*86-* | i860-* | i960-* | ia64-* \ | |
| ip2k-* | iq2000-* \ | |
- | le32-* | le64-* \ | |
| lm32-* \ | |
| m32c-* | m32r-* | m32rle-* \ | |
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | |
@@ -407,7 +401,7 @@ | |
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | |
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | |
| pyramid-* \ | |
- | rl78-* | romp-* | rs6000-* | rx-* \ | |
+ | romp-* | rs6000-* | rx-* \ | |
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | |
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | |
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | |
@@ -415,11 +409,10 @@ | |
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | |
| tahoe-* \ | |
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | |
- | tile*-* \ | |
+ | tile-* | tilegx-* \ | |
| tron-* \ | |
| ubicom32-* \ | |
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | |
- | vax-* \ | |
+ | v850-* | v850e-* | vax-* \ | |
| we32k-* \ | |
| x86-* | x86_64-* | xc16x-* | xps100-* \ | |
| xstormy16-* | xtensa*-* \ | |
@@ -820,10 +813,6 @@ | |
basic_machine=i370-ibm | |
os=-mvs | |
;; | |
- nacl) | |
- basic_machine=le32-unknown | |
- os=-nacl | |
- ;; | |
ncr3000) | |
basic_machine=i486-ncr | |
os=-sysv4 | |
@@ -1132,8 +1121,13 @@ | |
basic_machine=t90-cray | |
os=-unicos | |
;; | |
+ # This must be matched before tile*. | |
+ tilegx*) | |
+ basic_machine=tilegx-unknown | |
+ os=-linux-gnu | |
+ ;; | |
tile*) | |
- basic_machine=$basic_machine-unknown | |
+ basic_machine=tile-unknown | |
os=-linux-gnu | |
;; | |
tx39) | |
@@ -1346,6 +1340,7 @@ | |
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | |
| -mingw32* | -linux-gnu* | -linux-android* \ | |
| -linux-newlib* | -linux-uclibc* \ | |
+ | -linux-musl* \ | |
| -uxpv* | -beos* | -mpeix* | -udk* \ | |
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | |
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | |
# HG changeset patch | |
# Parent 3ea10cd626cb7abdfd56d3fe8d2c9ed58a82797b | |
Support for i386-linux-musl and x86_64-linux-musl. | |
diff -r 3ea10cd626cb gcc/config/i386/linux.h | |
--- a/gcc/config/i386/linux.h Fri Mar 29 16:41:17 2013 -0400 | |
+++ b/gcc/config/i386/linux.h Fri Mar 29 16:41:20 2013 -0400 | |
@@ -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 3ea10cd626cb gcc/config/i386/linux64.h | |
--- a/gcc/config/i386/linux64.h Fri Mar 29 16:41:17 2013 -0400 | |
+++ b/gcc/config/i386/linux64.h Fri Mar 29 16:41:20 2013 -0400 | |
@@ -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 3ea10cd626cb libitm/config/linux/x86/tls.h | |
--- a/libitm/config/linux/x86/tls.h Fri Mar 29 16:41:17 2013 -0400 | |
+++ b/libitm/config/linux/x86/tls.h Fri Mar 29 16:41:20 2013 -0400 | |
@@ -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 | |
Support for arm-linux-musl. | |
diff -r 8801a3f6d050 gcc/config/arm/linux-eabi.h | |
--- a/gcc/config/arm/linux-eabi.h Tue Aug 27 15:47:31 2013 -0400 | |
+++ b/gcc/config/arm/linux-eabi.h Tue Aug 27 15:47:37 2013 -0400 | |
@@ -64,6 +64,23 @@ | |
#undef GLIBC_DYNAMIC_LINKER | |
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3" | |
+/* 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 8801a3f6d050 libitm/config/arm/hwcap.cc | |
--- a/libitm/config/arm/hwcap.cc Tue Aug 27 15:47:31 2013 -0400 | |
+++ b/libitm/config/arm/hwcap.cc Tue Aug 27 15:47:37 2013 -0400 | |
@@ -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 4618ad6f036f1e944a5262ae5875dcdf62c41f8b | |
Support for mips-linux-musl. | |
diff -r 4618ad6f036f gcc/config/mips/linux.h | |
--- a/gcc/config/mips/linux.h Thu Sep 19 08:56:47 2013 -0400 | |
+++ b/gcc/config/mips/linux.h Thu Sep 19 09:08:11 2013 -0400 | |
@@ -18,3 +18,10 @@ | |
<http://www.gnu.org/licenses/>. */ | |
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" | |
+ | |
+#if TARGET_ENDIAN_DEFAULT == 0 /* LE */ | |
+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}" | |
+#else | |
+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}" | |
+#endif | |
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1" | |
# HG changeset patch | |
# Parent 2ffe76b215fdb082cbbc262536077627757fa9bf | |
Support for powerpc-linux-musl. | |
diff -r 2ffe76b215fd gcc/config.gcc | |
--- a/gcc/config.gcc Fri Mar 29 16:41:26 2013 -0400 | |
+++ b/gcc/config.gcc Fri Mar 29 16:41:28 2013 -0400 | |
@@ -2112,6 +2112,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 2ffe76b215fd gcc/config/rs6000/linux64.h | |
--- a/gcc/config/rs6000/linux64.h Fri Mar 29 16:41:26 2013 -0400 | |
+++ b/gcc/config/rs6000/linux64.h Fri Mar 29 16:41:28 2013 -0400 | |
@@ -364,17 +364,21 @@ | |
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld64.so.1" | |
#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) | |
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ | |
diff -r 2ffe76b215fd gcc/config/rs6000/secureplt.h | |
--- a/gcc/config/rs6000/secureplt.h Fri Mar 29 16:41:26 2013 -0400 | |
+++ b/gcc/config/rs6000/secureplt.h Fri Mar 29 16:41:28 2013 -0400 | |
@@ -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 2ffe76b215fd gcc/config/rs6000/sysv4.h | |
--- a/gcc/config/rs6000/sysv4.h Fri Mar 29 16:41:26 2013 -0400 | |
+++ b/gcc/config/rs6000/sysv4.h Fri Mar 29 16:41:28 2013 -0400 | |
@@ -551,6 +551,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 and set correct endian mode. */ | |
#define CC1_SPEC "%{G*} %(cc1_cpu) \ | |
@@ -611,7 +614,8 @@ | |
%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } \ | |
%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ | |
%{mcall-i960-old: --oformat elf32-powerpcle} \ | |
- }}}}" | |
+ }}}} \ | |
+%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}" | |
/* Any specific OS flags. */ | |
#define LINK_OS_SPEC "\ | |
@@ -789,15 +793,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} \ | |
@@ -923,6 +930,7 @@ | |
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ | |
{ "cc1_endian_default", CC1_ENDIAN_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 }, \ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment