From f9777af5fcb6d290285e5d3588bf71c937d71dda Mon Sep 17 00:00:00 2001 From: Cem Keylan Date: Sat, 30 May 2020 12:33:17 +0300 Subject: gcc: architecture dependent build --- core/gcc/build | 23 ++++++++++++++++++----- core/gcc/checksums | 1 + core/gcc/patches/musl-libssp.patch | 20 ++++++++++++++++++++ core/gcc/sources | 1 + 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 core/gcc/patches/musl-libssp.patch (limited to 'core/gcc') diff --git a/core/gcc/build b/core/gcc/build index 34c650a7..47bfc7c7 100755 --- a/core/gcc/build +++ b/core/gcc/build @@ -1,5 +1,7 @@ #!/bin/sh -e +sys_arch=${3:-$(uname -m)} + sed_i() { for file; do :; done sed "$@" > _ @@ -10,9 +12,20 @@ sed_i() { cp gcc/gmp/configfsf.guess gcc/gmp/config.guess cp gcc/gmp/configfsf.sub gcc/gmp/config.sub -# Use lib not lib64 by default. -sed_i '/m64=/s/lib64/lib/' gcc/gcc/config/i386/t-linux64 -sed_i 's/lib64/lib/' gcc/gcc/config/i386/linux64.h +if [ "${sys_arch#1*86}" ]; then + # Do not create lib64 directories + sed_i '/m64=/s/lib64/lib/' gcc/gcc/config/i386/t-linux64 + sed_i 's/lib64/lib/' gcc/gcc/config/i386/linux64.h +else + # Apply libssp patch for i686. + (cd gcc; patch -Np1 < ../musl-libssp.patch) +fi + +case "$sys_arch" in + i*86) archopts="--build=i686-pc-linux-musl \ + --disable-libssp" ;; + x86_64) archopts="--build=x86_64-pc-linux-musl" +esac # Build must happen outside of gcc source. mkdir -p gcc-build @@ -43,7 +56,7 @@ export libat_cv_have_ifunc=no --enable-threads \ --enable-tls \ --enable-languages=c,c++ \ - --build=x86_64-pc-linux-musl \ + $archopts \ --disable-bootstrap make @@ -64,7 +77,7 @@ install -Dm755 ../c99 "$1/usr/bin/c99" { mkdir -p "$1/usr/lib/bfd-plugins" - ln -s /usr/libexec/gcc/x86_64-pc-linux-musl/9.2.0/liblto_plugin.so \ + ln -s "/usr/libexec/gcc/$sys_arch-pc-linux-musl/9.2.0/liblto_plugin.so" \ "$1/usr/lib/bfd-plugins/liblto_plugin.so" } diff --git a/core/gcc/checksums b/core/gcc/checksums index 31e5fbd3..ebe22b10 100644 --- a/core/gcc/checksums +++ b/core/gcc/checksums @@ -3,3 +3,4 @@ b6898a23844b656f1b68691c5c012036c2e694ac4b53a8918d4712ad876e7ea2 gcc-10.1.0.tar 1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a mpfr-4.0.2.tar.xz 6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e mpc-1.1.0.tar.gz 765614b3396d70bca3fa0ae4a813632486c6dca320e2bd13c8c39dca52be4a4c c99 +4ece19529edb8e681e1778e977e2ba1d47984ccfcb82505e8b898bb29d659625 musl-libssp.patch diff --git a/core/gcc/patches/musl-libssp.patch b/core/gcc/patches/musl-libssp.patch new file mode 100644 index 00000000..fe5c6143 --- /dev/null +++ b/core/gcc/patches/musl-libssp.patch @@ -0,0 +1,20 @@ +Author: Timo Teräs + +Alpine musl package provides libssp_nonshared.a. We link to it unconditionally, +as otherwise we get link failures if some objects are -fstack-protector built +and final link happens with -fno-stack-protector. This seems to be the common +case when bootstrapping gcc, the piepatches do not seem to fully fix the +crosstoolchain and bootstrap sequence wrt. stack-protector flag usage. + +--- gcc-6.1.0/gcc/gcc.c.orig ++++ gcc-6.1.0/gcc/gcc.c +@@ -870,8 +870,7 @@ + + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP +-#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ +- "|fstack-protector-strong|fstack-protector-explicit:}" ++#define LINK_SSP_SPEC "-lssp_nonshared" + #else + #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ + "|fstack-protector-strong|fstack-protector-explicit" \ diff --git a/core/gcc/sources b/core/gcc/sources index 6eb83031..8a68dca5 100644 --- a/core/gcc/sources +++ b/core/gcc/sources @@ -3,3 +3,4 @@ https://gmplib.org/download/gmp/gmp-6.2.0.tar.xz gcc/gmp https://ftp.gnu.org/gnu/mpfr/mpfr-4.0.2.tar.xz gcc/mpfr https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz gcc/mpc files/c99 +patches/musl-libssp.patch -- cgit v1.2.3