diff options
author | Timo Teräs <timo.teras@iki.fi> | 2013-07-12 12:26:37 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-07-12 12:42:13 +0000 |
commit | 0a61db5bf5537be193aada0990fcdd355ebc264d (patch) | |
tree | aedde0cbf58eede8b359adac00964e7633f7fe98 /main/gcc | |
parent | 8f6d5f7df8924178bb5dba5e519d6577e0044922 (diff) | |
download | aports-0a61db5bf5537be193aada0990fcdd355ebc264d.tar.bz2 aports-0a61db5bf5537be193aada0990fcdd355ebc264d.tar.xz |
main/gcc: crosscompile, musl and arm support
Diffstat (limited to 'main/gcc')
-rw-r--r-- | main/gcc/APKBUILD | 71 | ||||
-rw-r--r-- | main/gcc/gcc-4.7.3-musl.patch | 439 | ||||
-rw-r--r-- | main/gcc/libgcc-always-build-gcceh.a.patch | 39 | ||||
-rw-r--r-- | main/gcc/libgcc-backports.patch | 124 | ||||
-rw-r--r-- | main/gcc/pr45078.patch | 36 |
5 files changed, 694 insertions, 15 deletions
diff --git a/main/gcc/APKBUILD b/main/gcc/APKBUILD index 7d480f752a..db0f88de0f 100644 --- a/main/gcc/APKBUILD +++ b/main/gcc/APKBUILD @@ -7,7 +7,7 @@ _specs_gcc_ver=4.4.3 _uclibc_abiver=0.9.32 -pkgrel=7 +pkgrel=8 pkgdesc="The GNU Compiler Collection" url="http://gcc.gnu.org" arch="all" @@ -19,9 +19,20 @@ makedepends="bison flex gmp-dev mpfr-dev texinfo mpc1-dev gawk zlib-dev zip subpackages="$pkgname-doc libgcc libgomp libstdc++:libcxx g++:gpp" replaces="libstdc++" -if [ -n "$BOOTSTRAP" ]; then +if [ "$CBUILD" != "$CHOST" ]; then + export CFLAGS_FOR_HOST="$CFLAGS" + export CXXFLAGS_FOR_HOST="$CXXFLAGS" + export CPPFLAGS_FOR_HOST="$CPPFLAGS" + export LDFLAGS_FOR_HOST="$LDFLAGS" + unset CFLAGS CXXFLAGS CPPFLAGS LDFLAGS + + export CFLAGS="--sysroot=${CBUILDROOT}" + export CXXFLAGS="--sysroot=${CBUILDROOT}" + export LDFLAGS="--sysroot=${CBUILDROOT}" + LANG_OBJC=off LANG_JAVA=off + LANG_GO=off LANG_FORTRAN=off fi @@ -60,6 +71,9 @@ source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.bz2 74_all_gcc47_cloog-dl.patch gcc-spec-env.patch + gcc-4.7.3-musl.patch + libgcc-backports.patch + libgcc-always-build-gcceh.a.patch pt_gnu_eh_frame.patch uclibc-getipinfo.patch gcc-4.7-dynamic-linker.patch @@ -67,6 +81,7 @@ source="ftp://gcc.gnu.org/pub/gcc/releases/gcc-$pkgver/gcc-$pkgver.tar.bz2 boehem-gc-uclibc.patch gcc-pure64.patch gcc-go.patch + pr45078.patch " @@ -97,7 +112,7 @@ prepare() { case "$i" in *.patch) msg "Applying $i" - patch -p1 -i "$srcdir"/$i || _err="$_err $i" + patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i" ;; esac done @@ -128,8 +143,10 @@ prepare() { build() { local _dynamic_linker= + local _arch_configure= + local _symvers="--disable-symvers" cd "$_gccdir" - export CFLAGS="-fno-stack-protector" + export CFLAGS="-fno-stack-protector $CFLAGS" [ -z "$CBUILD" ] && CBUILD="$CHOST" [ -z "$CTARGET" ] && CTARGET="$CHOST" @@ -142,9 +159,11 @@ build() { ;; x86_64-*-gnu) _dynamic_linker="--with-dynamic-linker=ld-linux-x86-64.so.2" + _symvers= ;; *-gnu) _dynamic_linker="--with-dynamic-linker=ld-linux.so.2" + _symvers= ;; *) _dynamic_linker= ;; @@ -152,7 +171,18 @@ build() { # --enable-target-optspace is broken on powerpc if [ "$CARCH" != "powerpc" ]; then - _target_optspace="--enable-target-optspace" + _arch_configure="$_arch_configure --enable-target-optspace" + fi + + case "$CARCH" in + arm*) _arch_configure="$_arch_configure --with-float=hard";; + esac + + if [ "${CHOST#*musl}" != "$CHOST" ]; then + # musl does not support mudflap + _arch_configure="$_arch_configure --disable-mudflap --disable-libmudflap" + else + _arch_configure="$_arch_configure --without-system-libunwind" fi msg "Building the following:" @@ -162,7 +192,7 @@ build() { echo " CTARGET=$CTARGET" echo " languages=$_languages" echo " dynamic_linker=$_dynamic_linker" - echo " target_optspace=$_target_optspace" + echo " arch_configure=$_arch_configure" echo "" mkdir -p "$_builddir" @@ -183,19 +213,19 @@ build() { --disable-multilib \ --disable-nls \ --disable-werror \ + $_symvers \ --enable-__cxa_atexit \ --enable-cld \ --enable-esp \ --enable-cloog-backend \ --enable-languages=$_languages \ --enable-shared \ - $_target_optspace \ + $_arch_configure \ --enable-tls \ --enable-threads \ $_dynamic_linker \ --with-dynamic-linker-prefix=/lib \ --with-system-zlib \ - --without-system-libunwind \ || return 1 make || return 1 @@ -228,7 +258,7 @@ package() { || return 1 # strip debug info from some statib libs - strip -g `find "$pkgdir" \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ + ${CROSS_COMPILE}strip -g `find "$pkgdir" \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \ -o -name libmudflap.a -o -name libmudflapth.a \ -o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \ -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \ @@ -240,8 +270,7 @@ package() { "$pkdir"/usr/lib/libgcj.spec # remove ffi - rm "$pkgdir"/usr/lib/libffi* "$pkgdir"/usr/share/man/man3/ffi* \ - || return 1 + rm -f "$pkgdir"/usr/lib/libffi* "$pkgdir"/usr/share/man/man3/ffi* find "$pkgdir" -name 'ffi*.h' | xargs rm -f mkdir -p "$pkgdir"/usr/share/gdb/python/auto-load/usr/lib @@ -299,7 +328,7 @@ libgcc() { pkgdesc="GNU C compiler runtime libraries" depends= mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/lib/libgcc_s.so.* "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/lib/libgcc_s.so.* "$subpkgdir"/usr/lib/ || return 1 } libgomp() { @@ -436,13 +465,17 @@ d8692c56f04b92667096f59d843e95c5 51_all_libiberty-pic.patch 406fc6f29ab3d746eaef0202c50fd7e9 67_all_gcc-poison-system-directories.patch f24f07ed008324eaecb0f75417c99116 74_all_gcc47_cloog-dl.patch a695d7648509b4f8e18b389a19e6037c gcc-spec-env.patch +789c5ace577a7c4aea769af614cffa86 gcc-4.7.3-musl.patch +15c03ac46867377f347412b05796ae72 libgcc-backports.patch +504c7dd8651c5d98229892c4cd9ea591 libgcc-always-build-gcceh.a.patch ab83248e10b2bf4b3d9240de0fefb52b pt_gnu_eh_frame.patch 6cc2385c5bbd6d0da6eaedd53c8bf547 uclibc-getipinfo.patch ac11128f201ee00287f8852697cb86a6 gcc-4.7-dynamic-linker.patch 32e8e4c0e23ed8f5de95a591cb30f1da gcc-4.6-pr32219.patch 2c6cb49bb9bfd8b6e690222e66ccc901 boehem-gc-uclibc.patch 2e2b787bb988d9007c9f7ce42178dfe6 gcc-pure64.patch -c94014ece84407a36d239417a2bad25d gcc-go.patch" +c94014ece84407a36d239417a2bad25d gcc-go.patch +aa98f3b0db9e5d342792cad4e197ccd9 pr45078.patch" sha256sums="2f7c37eb4fc14422ff2358a9ef59c974a75ab41204ef0e49fc34ab1d8981a9c3 gcc-4.7.3.tar.bz2 26aee7449cd3cd642065a0860d723dbb8062066ad87a398241f61210c68513d9 gcc-4.7.1-piepatches-v0.5.3.tar.bz2 f6c7cb99beead66dd4d06f7004c5731a9360330cbe878ce79792c618e008eed2 gcc-4.4.3-specs-0.2.0.tar.bz2 @@ -457,13 +490,17 @@ da6bbb5dc654d5e1df8ecae5c9ebb56265426c405931f14f5878248b8c79f78d 51_all_libiber 830028c0d08f43a0f5ae1f60c20256f1cad6bdae95c05ac901a10bf5a7406899 67_all_gcc-poison-system-directories.patch ce041ae09033d8d170a942b30f26d85ef720bf846c90963b39083c2963334c82 74_all_gcc47_cloog-dl.patch 64b01f29fb853fee5ecda998b66eeaa7ec86ff1fc3b21432bfd69eb543c93e6a gcc-spec-env.patch +7ef3c4804ea16c2da10860931349251a6ad2cabc57d77029a8d55cd6de89a10e gcc-4.7.3-musl.patch +163ae7e199ba9751744794c82cbb927bd87d87c89c6a2b6f39fb4a322a1b90cf libgcc-backports.patch +1975189156d70f5428cb7f1516533965d1c8734f3009fc89a9b8e289b72326f1 libgcc-always-build-gcceh.a.patch 78e75cb378bdfe870c98ab3cffef37f54be729d3912979191f27ca00651ad6c4 pt_gnu_eh_frame.patch 53184f842477569973c232dac7c85e71b0018cbe5c4962f95dd9e0273f42083e uclibc-getipinfo.patch 633b46b3b433550a1ad8f3150904eec0a5fee5f3a284d38dc0b7013f45505b96 gcc-4.7-dynamic-linker.patch 89207a8b62137a857ee2c43499d6b5247d37b530d1338844dbb330a6846b2ad2 gcc-4.6-pr32219.patch 02751ccf223dcfc898c0ce2214cd0859d275e90b742f1a66e38db5c50f94b38c boehem-gc-uclibc.patch f5473c6aea96d5137defd68898ba31042944a3f3ed26c05b964a40bd876c6f47 gcc-pure64.patch -e6b57e7c7d860550a4f7befa3e622024ba077a5906e6f2fd104b33fd47921be0 gcc-go.patch" +e6b57e7c7d860550a4f7befa3e622024ba077a5906e6f2fd104b33fd47921be0 gcc-go.patch +af214cc21f5c4de5f222b049d8e27238a951f7b6262d2767c03b10087c362788 pr45078.patch" sha512sums="5671a2dd3b6ac0d23f305cb11a796aebd823c1462b873136b412e660966143f4e07439bd8926c1443b78442beb6ae370ef91d819ec615920294875b722b7b0bd gcc-4.7.3.tar.bz2 47e16c41ec6678f9960bd39b8f7f01a0a956ae112584c3aa8b7fa5107eef1b598eba191d5199280131399ff096a1b0d14c9b5799cdfee837451e48a3405b2374 gcc-4.7.1-piepatches-v0.5.3.tar.bz2 779ecb0a064d2138b54569c8ae501975b8a6b72e5a3acbf8597619a8db77ee42ef9b0e62608d5192a15e4393e7dfc009bb50b994782236faa744b2c46b5fe517 gcc-4.4.3-specs-0.2.0.tar.bz2 @@ -478,10 +515,14 @@ f8dfe0b6907fab10009ab009f7b23df80a2b900c02da672f2d795e7609ec344d6ae66e521518d5d7 77d9383361bbc6701b34ba35356a09b97ebd45d8595c79bac9e3b8277def83caef47418ed813c2d138f2016779dce511c6e68155787c2462ab8ca1479c46c967 67_all_gcc-poison-system-directories.patch 739fd5e05dbab5090802eb447c24d5f03ed0b581f76acd8d69729c1bbfab9f92a41491eb313415f0f0e80cd80961eb8ea420170efbd705136d682ba71cff87da 74_all_gcc47_cloog-dl.patch ce9c1f923e2c6d17347ec2d3d8482351a9644194b2753627389294d43bb4f11b9c2ef41eda1b46ad83d09901a0bedebd5b6b8a57a198646030ab61e8d2d8cb48 gcc-spec-env.patch +f8988835c996c6cc4bb60096aaa9f712e835957ff745db66d78adf65ad09afa3a828ff7767ad11410d51b4b52d1c03bfdc96e3607a789f01faec11ec504f89dd gcc-4.7.3-musl.patch +719642ba2bc501e270bf09ae1a1b4151510b68006fcd8e8655a7c30d1e678fe134e7de0fb2a2366a9c6a13835a499a82b36b544c203853e556f16b0a2ea2ab59 libgcc-backports.patch +d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b libgcc-always-build-gcceh.a.patch 8464197f01d107872dfa6b47e86e95ae8d75c053527bafbdb7a86bcc7aff4bc5b20a8ec40d6e48d1ad455b0187a3cba9db337cff6c0a6245507c4533e4832d99 pt_gnu_eh_frame.patch e3edf75df1f27af8771bd263e1bd607f6207c4eb5b2a5e11032577deba43ea201825e3b5008a720105f24e49d2821dd77a61c7ceba7ed91b3621c0dbd9292fc6 uclibc-getipinfo.patch 91332bea084d13d165bac8abe826c3656f77c8872898a4d86b7e258dbf5af85d1b25b7e51f262f4b19b11ca89bf5d77ab0ac5554068419f15bf017a37a9d1822 gcc-4.7-dynamic-linker.patch 9fc5e32f2573ae67b6cf22119d636d10a47c42718635bceff7d457a93a3f664ae1ed10e154f70964ba2d26b0de04f879a8c05de6411112760d40433373dd0a80 gcc-4.6-pr32219.patch e1d6a450dfb40b134ad7f759c4c10174d2490b0093fe47cb33479245f26a3a8c54ebcf6255943c0ccfcb5095600d1c05e530baeed35609c8ffe75caac8e57c49 boehem-gc-uclibc.patch 4a5aeff0399782c752e6e3f2f48d984b2056dfb5d229b23a24eee1562d241339989b2203f139821cfc03c9b25c9bd7da6ccbbdc7a09d242e4de7f0d606c6f63c gcc-pure64.patch -1a09175bbb9c457893d4e921aa1bfe81fa7d657255d76ddb45f2f6db9232fb74bbc5fbac74d29d972ef74ab01df6a1a70e9ce83092e434a2d7c6b4155ea177b8 gcc-go.patch" +1a09175bbb9c457893d4e921aa1bfe81fa7d657255d76ddb45f2f6db9232fb74bbc5fbac74d29d972ef74ab01df6a1a70e9ce83092e434a2d7c6b4155ea177b8 gcc-go.patch +8822d2d7e32b1158169f58e34372c06fa122e2dfbd33ad5b7bd6fc13d57eedc592ba290381134bb078a6cca7a52109289389d0a52b72399903bcfc9584704e45 pr45078.patch" diff --git a/main/gcc/gcc-4.7.3-musl.patch b/main/gcc/gcc-4.7.3-musl.patch new file mode 100644 index 0000000000..75fb4efabd --- /dev/null +++ b/main/gcc/gcc-4.7.3-musl.patch @@ -0,0 +1,439 @@ +# HG changeset patch +# Parent 53f3e21a7d14d0514ec7cb9ffb67b24dcf1f9fc9 +Support for arm-linux-musl. + + +diff -r 53f3e21a7d14 -r 0a4e297edad6 gcc/config/arm/linux-eabi.h +--- a/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:21 2012 -0500 ++++ b/gcc/config/arm/linux-eabi.h Wed Nov 21 21:21:54 2012 -0500 +@@ -64,6 +64,10 @@ + #undef GLIBC_DYNAMIC_LINKER + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3" + ++/* musl has no "classic" (i.e. broken) mode */ ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-arm.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 53f3e21a7d14 -r 0a4e297edad6 libitm/config/arm/hwcap.cc +--- a/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:21 2012 -0500 ++++ b/libitm/config/arm/hwcap.cc Wed Nov 21 21:21:54 2012 -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 193f80e01b026d8de7f53d467f2c59cd0b7927dc +Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker. + + +diff -r 193f80e01b02 -r 45cd88d4fb7b gcc/config.gcc +--- a/gcc/config.gcc Wed Nov 21 21:17:38 2012 -0500 ++++ b/gcc/config.gcc Wed Nov 21 21:19:19 2012 -0500 +@@ -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 193f80e01b02 -r 45cd88d4fb7b gcc/config/linux.h +--- a/gcc/config/linux.h Wed Nov 21 21:17:38 2012 -0500 ++++ b/gcc/config/linux.h Wed Nov 21 21:19:19 2012 -0500 +@@ -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,16 +90,16 @@ + + #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. */ +diff -r 193f80e01b02 -r 45cd88d4fb7b gcc/config/linux.opt +--- a/gcc/config/linux.opt Wed Nov 21 21:17:38 2012 -0500 ++++ b/gcc/config/linux.opt Wed Nov 21 21:19:19 2012 -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 193f80e01b02 -r 45cd88d4fb7b gcc/ginclude/stddef.h +--- a/gcc/ginclude/stddef.h Wed Nov 21 21:17:38 2012 -0500 ++++ b/gcc/ginclude/stddef.h Wed Nov 21 21:19:19 2012 -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(__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 45cd88d4fb7b0e813578c296004eaab2c2d0bfb9 +A fix for libgomp to correctly request a POSIX version for time support. + + +diff -r 45cd88d4fb7b -r 0afd9d82498d libgomp/config/posix/time.c +--- a/libgomp/config/posix/time.c Wed Nov 21 21:19:19 2012 -0500 ++++ b/libgomp/config/posix/time.c Wed Nov 21 21:20:22 2012 -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 +# HG changeset patch +# Parent 04a6a82b8e06669a42181c96381b4fbc3ffa008c +Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one. + + +diff -r 04a6a82b8e06 -r 193f80e01b02 libstdc++-v3/configure.host +--- a/libstdc++-v3/configure.host Wed Nov 21 21:16:58 2012 -0500 ++++ b/libstdc++-v3/configure.host Wed Nov 21 21:17:38 2012 -0500 +@@ -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" + ;; +# HG changeset patch +# Parent 800ec1c37f610df2bfe75333ed6ec6caa905d630 +Support (partial) for microblaze-linux-musl. + +diff -r 800ec1c37f61 gcc/config.gcc +--- a/gcc/config.gcc Thu Apr 11 13:23:51 2013 -0400 ++++ b/gcc/config.gcc Thu Apr 11 13:24:17 2013 -0400 +@@ -1733,6 +1733,7 @@ + tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h" + c_target_objs="${c_target_objs} microblaze-c.o" + cxx_target_objs="${cxx_target_objs} microblaze-c.o" ++ tmake_file="${tmake_file} microblaze/t-microblaze" + ;; + microblaze*-*-rtems*) + tm_file="${tm_file} dbxelf.h" +# HG changeset patch +# Parent 0a4e297edad6e46f4b66401b93b217aa3194af4e +Support for mips-linux-musl. + + +diff -r 0a4e297edad6 -r 78025c74c5c1 gcc/config/mips/linux.h +--- a/gcc/config/mips/linux.h Wed Nov 21 21:21:54 2012 -0500 ++++ b/gcc/config/mips/linux.h Wed Nov 21 21:23:49 2012 -0500 +@@ -19,3 +19,5 @@ + <http://www.gnu.org/licenses/>. */ + + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" ++ ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips.so.1" +# HG changeset patch +# Parent 78025c74c5c1705f16ce13f3645ecb86c10cc1c2 +Support for powerpc-linux-musl. + +diff -r 78025c74c5c1 gcc/config.gcc +--- a/gcc/config.gcc Wed Nov 21 21:23:49 2012 -0500 ++++ b/gcc/config.gcc Wed Nov 21 21:45:58 2012 -0500 +@@ -2078,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 78025c74c5c1 gcc/config/rs6000/linux64.h +--- a/gcc/config/rs6000/linux64.h Wed Nov 21 21:23:49 2012 -0500 ++++ b/gcc/config/rs6000/linux64.h Wed Nov 21 21:45:58 2012 -0500 +@@ -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 78025c74c5c1 gcc/config/rs6000/secureplt.h +--- a/gcc/config/rs6000/secureplt.h Wed Nov 21 21:23:49 2012 -0500 ++++ b/gcc/config/rs6000/secureplt.h Wed Nov 21 21:45:58 2012 -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 78025c74c5c1 gcc/config/rs6000/sysv4.h +--- a/gcc/config/rs6000/sysv4.h Wed Nov 21 21:23:49 2012 -0500 ++++ b/gcc/config/rs6000/sysv4.h Wed Nov 21 21:45:58 2012 -0500 +@@ -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 78025c74c5c1 libgcc/config/rs6000/linux-unwind.h +--- a/libgcc/config/rs6000/linux-unwind.h Wed Nov 21 21:23:49 2012 -0500 ++++ b/libgcc/config/rs6000/linux-unwind.h Wed Nov 21 21:45:58 2012 -0500 +@@ -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. */ +# HG changeset patch +# Parent 0afd9d82498d2cd30aa78529ff25f211bdc0c3b9 +Support for i386-linux-musl and x86_64-linux-musl. + + +diff -r 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux.h +--- a/gcc/config/i386/linux.h Wed Nov 21 21:20:22 2012 -0500 ++++ b/gcc/config/i386/linux.h Wed Nov 21 21:21:21 2012 -0500 +@@ -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 0afd9d82498d -r 53f3e21a7d14 gcc/config/i386/linux64.h +--- a/gcc/config/i386/linux64.h Wed Nov 21 21:20:22 2012 -0500 ++++ b/gcc/config/i386/linux64.h Wed Nov 21 21:21:21 2012 -0500 +@@ -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 0afd9d82498d -r 53f3e21a7d14 libitm/config/linux/x86/tls.h +--- a/libitm/config/linux/x86/tls.h Wed Nov 21 21:20:22 2012 -0500 ++++ b/libitm/config/linux/x86/tls.h Wed Nov 21 21:21:21 2012 -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 diff --git a/main/gcc/libgcc-always-build-gcceh.a.patch b/main/gcc/libgcc-always-build-gcceh.a.patch new file mode 100644 index 0000000000..74ae897304 --- /dev/null +++ b/main/gcc/libgcc-always-build-gcceh.a.patch @@ -0,0 +1,39 @@ +Highly inspired by: + http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch + +diff -durN gcc-4.6.0.orig/libgcc/Makefile.in gcc-4.6.0/libgcc/Makefile.in +--- gcc-4.6.0.orig/libgcc/Makefile.in 2011-01-26 05:19:58.000000000 +0100 ++++ gcc-4.6.0/libgcc/Makefile.in 2011-09-12 18:17:12.743718974 +0200 +@@ -772,8 +772,9 @@ + libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT) + endif + ++all: libgcc_eh.a + ifeq ($(enable_shared),yes) +-all: libgcc_eh.a libgcc_s$(SHLIB_EXT) ++all: libgcc_s$(SHLIB_EXT) + ifneq ($(LIBUNWIND),) + all: libunwind$(SHLIB_EXT) + endif +@@ -950,10 +951,6 @@ + install-shared: + $(mkinstalldirs) $(DESTDIR)$(inst_libdir) + +- $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/ +- chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a +- $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a +- + $(subst @multilib_dir@,$(MULTIDIR),$(subst \ + @shlib_base_name@,libgcc_s,$(subst \ + @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL)))) +@@ -968,6 +965,10 @@ + chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a + $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a + ++ $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/ ++ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a ++ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a ++ + parts="$(INSTALL_PARTS)"; \ + for file in $$parts; do \ + rm -f $(DESTDIR)$(inst_libdir)/$$file; \ diff --git a/main/gcc/libgcc-backports.patch b/main/gcc/libgcc-backports.patch new file mode 100644 index 0000000000..af556ed991 --- /dev/null +++ b/main/gcc/libgcc-backports.patch @@ -0,0 +1,124 @@ +# DP: libgcc backports from the trunk: +# DP: - Always define USE_PT_GNU_EH_FRAME in crtstuff.c for glibc. +# DP: - Build static libgcc with hidden visibility even with --disable-shared. + +libgcc/ +2012-08-19 Joseph Myers <joseph@codesourcery.com> + + * crtstuff.c (USE_PT_GNU_EH_FRAME): Define for systems using glibc + even if inhibit_libc. + +2012-08-22 Joseph Myers <joseph@codesourcery.com> + + * Makefile.in (vis_hide, gen-hide-list): Do not make definitions + depend on --enable-shared. + ($(lib1asmfuncs-o)): Use %.vis files independent of + --enable-shared. + * static-object.mk ($(base)$(objext), $(base).vis) + ($(base)_s$(objext)): Use same rules for visibility handling as in + shared-object.mk. + +Index: b/libgcc/crtstuff.c +=================================================================== +--- a/libgcc/crtstuff.c ++++ b/libgcc/crtstuff.c +@@ -1,7 +1,7 @@ + /* Specialized bits of code needed to support construction and + destruction of file-scope objects in C++ code. + Copyright (C) 1991, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +- 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 ++ 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 + Free Software Foundation, Inc. + Contributed by Ron Guilmette (rfg@monkeys.com). + +@@ -113,6 +113,20 @@ + # define USE_PT_GNU_EH_FRAME + # endif + #endif ++ ++#if defined(OBJECT_FORMAT_ELF) \ ++ && !defined(OBJECT_FORMAT_FLAT) \ ++ && defined(HAVE_LD_EH_FRAME_HDR) \ ++ && !defined(CRTSTUFFT_O) \ ++ && defined(inhibit_libc) \ ++ && (defined(__GLIBC__) || defined(__gnu_linux__) || defined(__GNU__)) ++/* On systems using glibc, an inhibit_libc build of libgcc is only ++ part of a bootstrap process. Build the same crt*.o as would be ++ built with headers present, so that it is not necessary to build ++ glibc more than once for the bootstrap to converge. */ ++# define USE_PT_GNU_EH_FRAME ++#endif ++ + #if defined(EH_FRAME_SECTION_NAME) && !defined(USE_PT_GNU_EH_FRAME) + # define USE_EH_FRAME_REGISTRY + #endif +Index: b/libgcc/Makefile.in +=================================================================== +--- a/libgcc/Makefile.in ++++ b/libgcc/Makefile.in +@@ -362,6 +362,7 @@ + ifneq ($(LIBUNWIND),) + install-libunwind = install-libunwind + endif ++endif + + # For -fvisibility=hidden. We need both a -fvisibility=hidden on + # the command line, and a #define to prevent libgcc2.h etc from +@@ -385,11 +386,8 @@ + gen-hide-list = echo > $@ + endif + +-else +-# Not enable_shared. ++ifneq ($(enable_shared),yes) + iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/static-object.mk,$(iter-items)) +-vis_hide = +-gen-hide-list = echo > \$@ + endif + + LIB2ADD += enable-execute-stack.c +@@ -438,7 +436,6 @@ + $(LIB2_DIVMOD_FUNCS)) + + # Build "libgcc1" (assembly) components. +-ifeq ($(enable_shared),yes) + + lib1asmfuncs-o = $(patsubst %,%$(objext),$(LIB1ASMFUNCS)) + $(lib1asmfuncs-o): %$(objext): $(srcdir)/config/$(LIB1ASMSRC) %.vis +@@ -450,14 +447,9 @@ + lib1asmfuncs-s-o = $(patsubst %,%_s$(objext),$(LIB1ASMFUNCS)) + $(lib1asmfuncs-s-o): %_s$(objext): $(srcdir)/config/$(LIB1ASMSRC) + $(gcc_s_compile) -DL$* -xassembler-with-cpp -c $< +-libgcc-s-objects += $(lib1asmfuncs-s-o) +- +-else ++ifeq ($(enable_shared),yes) + +-lib1asmfuncs-o = $(patsubst %,%$(objext),$(LIB1ASMFUNCS)) +-$(lib1asmfuncs-o): %$(objext): $(srcdir)/config/$(LIB1ASMSRC) +- $(gcc_compile) -DL$* -xassembler-with-cpp -c $< +-libgcc-objects += $(lib1asmfuncs-o) ++libgcc-s-objects += $(lib1asmfuncs-s-o) + + endif + +Index: b/libgcc/static-object.mk +=================================================================== +--- a/libgcc/static-object.mk ++++ b/libgcc/static-object.mk +@@ -24,7 +24,13 @@ + endif + endif + +-$(base)$(objext): $o +- $(gcc_compile) -c -xassembler-with-cpp $< ++$(base)$(objext): $o $(base).vis ++ $(gcc_compile) -c -xassembler-with-cpp -include $*.vis $< ++ ++$(base).vis: $(base)_s$(objext) ++ $(gen-hide-list) ++ ++$(base)_s$(objext): $o ++ $(gcc_s_compile) -c -xassembler-with-cpp $< + + endif diff --git a/main/gcc/pr45078.patch b/main/gcc/pr45078.patch new file mode 100644 index 0000000000..759a2cf767 --- /dev/null +++ b/main/gcc/pr45078.patch @@ -0,0 +1,36 @@ +# DP: Proposed patch for PR plugin/45078 + +2011-06-24 Matthias Klose <doko@ubuntu.com> + + PR plugin/45078 + * Makefile.in (PLUGIN_HEADERS): Add config/arm/arm-cores.def. + (install-plugin): Install c-family headers into a c-family subdir. + * config.gcc: Add vxworks-dummy.h to tm_file for arm, mips, sh and + sparc targets. + +Index: b/gcc/Makefile.in +=================================================================== +--- a/gcc/Makefile.in ++++ b/gcc/Makefile.in +@@ -4547,6 +4547,7 @@ + $(C_PRAGMA_H) $(CPPLIB_H) $(FUNCTION_H) \ + cppdefault.h flags.h $(MD5_H) params.def params.h prefix.h tree-inline.h \ + gimple-pretty-print.h tree-pretty-print.h realmpfr.h \ ++ config/arm/arm-cores.def \ + $(IPA_PROP_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) version.h + + # generate the 'build fragment' b-header-vars +Index: b/gcc/config.gcc +=================================================================== +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -486,6 +486,9 @@ + fi + tm_file="vxworks-dummy.h ${tm_file}" + ;; ++arm*-*-*|mips*-*-*|sh*-*-*|sparc*-*-*) ++ tm_file="vxworks-dummy.h ${tm_file}" ++ ;; + esac + + # On a.out targets, we need to use collect2. |