Last active
April 25, 2017 17:19
-
-
Save Lochnair/91cb7dbcb29c76311f214b1f181e86b6 to your computer and use it in GitHub Desktop.
musl support for GCC 4.7.2
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
diff -r -U3 a/config.sub b/config.sub | |
--- a/config.sub 2017-04-25 18:33:42.050700561 +0200 | |
+++ b/config.sub 2017-04-25 18:45:28.590275476 +0200 | |
@@ -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* \ | |
diff -r -U3 a/fixincludes/mkfixinc.sh b/fixincludes/mkfixinc.sh | |
--- a/fixincludes/mkfixinc.sh 2017-04-25 18:33:42.054033824 +0200 | |
+++ b/fixincludes/mkfixinc.sh 2017-04-25 18:45:28.590275476 +0200 | |
@@ -20,7 +20,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} | |
diff -r -U3 a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h | |
--- a/gcc/config/arm/linux-eabi.h 2017-04-25 18:33:41.737373617 +0200 | |
+++ b/gcc/config/arm/linux-eabi.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -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 -U3 a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h | |
--- a/gcc/config/i386/linux64.h 2017-04-25 18:33:41.734040349 +0200 | |
+++ b/gcc/config/i386/linux64.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -31,3 +31,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 -U3 a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h | |
--- a/gcc/config/i386/linux.h 2017-04-25 18:33:41.734040349 +0200 | |
+++ b/gcc/config/i386/linux.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -22,3 +22,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 -U3 a/gcc/config/linux.h b/gcc/config/linux.h | |
--- a/gcc/config/linux.h 2017-04-25 18:33:41.734040349 +0200 | |
+++ b/gcc/config/linux.h 2017-04-25 18:45:28.586942178 +0200 | |
@@ -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 -U3 a/gcc/config/linux.opt b/gcc/config/linux.opt | |
--- a/gcc/config/linux.opt 2017-04-25 18:33:41.737373617 +0200 | |
+++ b/gcc/config/linux.opt 2017-04-25 18:45:28.586942178 +0200 | |
@@ -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 -U3 a/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h | |
--- a/gcc/config/mips/linux64.h 2017-04-25 18:33:41.744040148 +0200 | |
+++ b/gcc/config/mips/linux64.h 2017-04-25 19:15:16.601889869 +0200 | |
@@ -28,6 +28,15 @@ | |
#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1" | |
#define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0" | |
#define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" | |
+ | |
+#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_LINKERN32 "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1" | |
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64" MUSL_DYNAMIC_LINKER_E ".so.1" | |
+ | |
#define GNU_USER_DYNAMIC_LINKERN32 \ | |
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \ | |
- BIONIC_DYNAMIC_LINKERN32) | |
+ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKERN32) | |
diff -r -U3 a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h | |
--- a/gcc/config/mips/linux.h 2017-04-25 18:33:41.744040148 +0200 | |
+++ b/gcc/config/mips/linux.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -19,3 +19,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" | |
diff -r -U3 a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h | |
--- a/gcc/config/rs6000/linux64.h 2017-04-25 18:33:41.740706880 +0200 | |
+++ b/gcc/config/rs6000/linux64.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -362,17 +362,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 -U3 a/gcc/config/rs6000/secureplt.h b/gcc/config/rs6000/secureplt.h | |
--- a/gcc/config/rs6000/secureplt.h 2017-04-25 18:33:41.740706880 +0200 | |
+++ b/gcc/config/rs6000/secureplt.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -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 -U3 a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h | |
--- a/gcc/config/rs6000/sysv4.h 2017-04-25 18:33:41.740706880 +0200 | |
+++ b/gcc/config/rs6000/sysv4.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -566,6 +566,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) \ | |
@@ -626,7 +629,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 "\ | |
@@ -804,15 +808,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} \ | |
@@ -938,6 +945,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 }, \ | |
diff -r -U3 a/gcc/config.gcc b/gcc/config.gcc | |
--- a/gcc/config.gcc 2017-04-25 18:33:41.750706679 +0200 | |
+++ b/gcc/config.gcc 2017-04-25 18:45:28.590275476 +0200 | |
@@ -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" | |
;; | |
@@ -2075,6 +2078,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 -U3 a/gcc/configure b/gcc/configure | |
--- a/gcc/configure 2017-04-25 18:33:41.717374025 +0200 | |
+++ b/gcc/configure 2017-04-25 18:45:28.590275476 +0200 | |
@@ -26741,6 +26741,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. | |
@@ -26774,6 +26777,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" | |
@@ -26856,6 +26860,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 -U3 a/gcc/configure.ac b/gcc/configure.ac | |
--- a/gcc/configure.ac 2017-04-25 18:33:41.750706679 +0200 | |
+++ b/gcc/configure.ac 2017-04-25 18:45:28.590275476 +0200 | |
@@ -4628,6 +4628,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. | |
@@ -4661,6 +4664,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], | |
@@ -4726,6 +4730,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 | |
Only in b/gcc: configure.ac.orig | |
Only in b/gcc: configure.orig | |
diff -r -U3 a/gcc/c-typeck.c b/gcc/c-typeck.c | |
--- a/gcc/c-typeck.c 2017-04-25 18:33:41.764039740 +0200 | |
+++ b/gcc/c-typeck.c 2017-04-25 18:45:28.590275476 +0200 | |
@@ -68,9 +68,9 @@ | |
/* The level of nesting inside "typeof". */ | |
int in_typeof; | |
-/* Nonzero if we've already printed a "missing braces around initializer" | |
- message within this initializer. */ | |
-static int missing_braces_mentioned; | |
+/* Nonzero if we might need to print a "missing braces around | |
+ initializer" message within this initializer. */ | |
+static int found_missing_braces; | |
static int require_constant_value; | |
static int require_constant_elements; | |
@@ -6446,6 +6446,9 @@ | |
/* 1 if this constructor is erroneous so far. */ | |
static int constructor_erroneous; | |
+/* 1 if this constructor is the universal zero initializer { 0 }. */ | |
+static int constructor_zeroinit; | |
+ | |
/* Structure for managing pending initializer elements, organized as an | |
AVL tree. */ | |
@@ -6607,7 +6610,7 @@ | |
constructor_stack = 0; | |
constructor_range_stack = 0; | |
- missing_braces_mentioned = 0; | |
+ found_missing_braces = 0; | |
spelling_base = 0; | |
spelling_size = 0; | |
@@ -6702,6 +6705,7 @@ | |
constructor_type = type; | |
constructor_incremental = 1; | |
constructor_designated = 0; | |
+ constructor_zeroinit = 1; | |
designator_depth = 0; | |
designator_erroneous = 0; | |
@@ -6899,11 +6903,8 @@ | |
set_nonincremental_init (braced_init_obstack); | |
} | |
- if (implicit == 1 && warn_missing_braces && !missing_braces_mentioned) | |
- { | |
- missing_braces_mentioned = 1; | |
- warning_init (OPT_Wmissing_braces, "missing braces around initializer"); | |
- } | |
+ if (implicit == 1) | |
+ found_missing_braces = 1; | |
if (TREE_CODE (constructor_type) == RECORD_TYPE | |
|| TREE_CODE (constructor_type) == UNION_TYPE) | |
@@ -7036,17 +7037,23 @@ | |
} | |
} | |
+ if (VEC_length (constructor_elt, constructor_elements) != 1) | |
+ constructor_zeroinit = 0; | |
+ | |
+ /* Warn when some structs are initialized with direct aggregation. */ | |
+ if (!implicit && found_missing_braces && warn_missing_braces | |
+ && !constructor_zeroinit) | |
+ { | |
+ warning_init (OPT_Wmissing_braces, | |
+ "missing braces around initializer"); | |
+ } | |
+ | |
/* Warn when some struct elements are implicitly initialized to zero. */ | |
if (warn_missing_field_initializers | |
&& constructor_type | |
&& TREE_CODE (constructor_type) == RECORD_TYPE | |
&& constructor_unfilled_fields) | |
{ | |
- bool constructor_zeroinit = | |
- (VEC_length (constructor_elt, constructor_elements) == 1 | |
- && integer_zerop | |
- (VEC_index (constructor_elt, constructor_elements, 0)->value)); | |
- | |
/* Do not warn for flexible array members or zero-length arrays. */ | |
while (constructor_unfilled_fields | |
&& (!DECL_SIZE (constructor_unfilled_fields) | |
@@ -8161,6 +8168,9 @@ | |
designator_depth = 0; | |
designator_erroneous = 0; | |
+ if (!implicit && value.value && !integer_zerop (value.value)) | |
+ constructor_zeroinit = 0; | |
+ | |
/* Handle superfluous braces around string cst as in | |
char x[] = {"foo"}; */ | |
if (string_flag | |
Only in b/gcc: c-typeck.c.orig | |
diff -r -U3 a/gcc/gcc.c b/gcc/gcc.c | |
--- a/gcc/gcc.c 2017-04-25 18:33:41.764039740 +0200 | |
+++ b/gcc/gcc.c 2017-04-25 18:45:28.590275476 +0200 | |
@@ -602,7 +602,7 @@ | |
#ifndef LINK_SSP_SPEC | |
#ifdef TARGET_LIBC_PROVIDES_SSP | |
-#define LINK_SSP_SPEC "%{fstack-protector:}" | |
+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared}" | |
#else | |
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}" | |
#endif | |
Only in b/gcc: gcc.c.orig | |
diff -r -U3 a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h | |
--- a/gcc/ginclude/stddef.h 2017-04-25 18:33:41.757373209 +0200 | |
+++ b/gcc/ginclude/stddef.h 2017-04-25 18:45:28.586942178 +0200 | |
@@ -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 */ | |
diff -r -U3 a/libgcc/config/rs6000/linux-unwind.h b/libgcc/config/rs6000/linux-unwind.h | |
--- a/libgcc/config/rs6000/linux-unwind.h 2017-04-25 18:33:42.054033824 +0200 | |
+++ b/libgcc/config/rs6000/linux-unwind.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -176,6 +176,7 @@ | |
} | |
#endif | |
+#ifdef __GLIBC__ | |
/* Find an entry in the process auxiliary vector. The canonical way to | |
test for VMX is to look at AT_HWCAP. */ | |
@@ -207,6 +208,7 @@ | |
return auxp->a_val; | |
return 0; | |
} | |
+#endif | |
/* Do code reading to identify a signal frame, and set the frame | |
state data appropriately. See unwind-dw2.c for the structs. */ | |
@@ -253,7 +255,11 @@ | |
if (hwcap == 0) | |
{ | |
+#ifdef __GLIBC__ | |
hwcap = ppc_linux_aux_vector (16); | |
+#else | |
+ hwcap = -1; | |
+#endif | |
/* These will already be set if we found AT_HWCAP. A nonzero | |
value stops us looking again if for some reason we couldn't | |
find AT_HWCAP. */ | |
diff -r -U3 a/libgcc/unwind-dw2-fde-dip.c b/libgcc/unwind-dw2-fde-dip.c | |
--- a/libgcc/unwind-dw2-fde-dip.c 2017-04-25 18:33:42.060700355 +0200 | |
+++ b/libgcc/unwind-dw2-fde-dip.c 2017-04-25 18:47:38.708867480 +0200 | |
@@ -47,22 +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))) | |
-# 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(TARGET_DL_ITERATE_PHDR) \ | |
- && defined(__sun__) && defined(__svr4__) | |
+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR) | |
# 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 -U3 a/libgomp/config/posix/time.c b/libgomp/config/posix/time.c | |
--- a/libgomp/config/posix/time.c 2017-04-25 18:33:41.714040757 +0200 | |
+++ b/libgomp/config/posix/time.c 2017-04-25 18:45:28.586942178 +0200 | |
@@ -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 -U3 a/libitm/config/arm/hwcap.cc b/libitm/config/arm/hwcap.cc | |
--- a/libitm/config/arm/hwcap.cc 2017-04-25 18:33:42.070700154 +0200 | |
+++ b/libitm/config/arm/hwcap.cc 2017-04-25 18:45:28.590275476 +0200 | |
@@ -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)) | |
diff -r -U3 a/libitm/config/linux/x86/tls.h b/libitm/config/linux/x86/tls.h | |
--- a/libitm/config/linux/x86/tls.h 2017-04-25 18:33:42.070700154 +0200 | |
+++ b/libitm/config/linux/x86/tls.h 2017-04-25 18:45:28.590275476 +0200 | |
@@ -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 | |
diff -r -U3 a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host | |
--- a/libstdc++-v3/configure.host 2017-04-25 18:33:42.047367294 +0200 | |
+++ b/libstdc++-v3/configure.host 2017-04-25 18:45:28.586942178 +0200 | |
@@ -243,6 +243,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 | |
@@ -251,6 +258,9 @@ | |
os_include_dir="os/gnu-linux" | |
fi | |
;; | |
+ | |
+ esac | |
+ ;; | |
hpux*) | |
os_include_dir="os/hpux" | |
;; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment