diff options
Diffstat (limited to 'testing/gcc')
-rwxr-xr-x | testing/gcc/build | 87 | ||||
-rw-r--r-- | testing/gcc/checksums | 6 | ||||
-rw-r--r-- | testing/gcc/depends | 4 | ||||
-rwxr-xr-x | testing/gcc/files/c99 | 2 | ||||
-rw-r--r-- | testing/gcc/message | 11 | ||||
-rw-r--r-- | testing/gcc/patches/musl-libssp.patch | 20 | ||||
-rw-r--r-- | testing/gcc/sources | 6 | ||||
-rw-r--r-- | testing/gcc/version | 1 |
8 files changed, 137 insertions, 0 deletions
diff --git a/testing/gcc/build b/testing/gcc/build new file mode 100755 index 00000000..ce766633 --- /dev/null +++ b/testing/gcc/build @@ -0,0 +1,87 @@ +#!/bin/sh -e + +export LDFLAGS="-static --static" +export CFLAGS="-static --static" +export CC="gcc -static --static" + +sys_arch=${3:-$(uname -m)} + +sed_i() { + for file; do :; done + sed "$@" > _ + cat _ > "$file"; rm -f _ +} + +# Make sure gmp is built with generic options. +cp gcc/gmp/configfsf.guess gcc/gmp/config.guess +cp gcc/gmp/configfsf.sub gcc/gmp/config.sub + +if [ "${sys_arch#i*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 +cd gcc-build + +export libat_cv_have_ifunc=no + +../gcc/configure \ + --prefix=/usr \ + --disable-multilib \ + --disable-shared \ + --disable-symvers \ + --disable-libmpx \ + --disable-libmudflap \ + --disable-libsanitizer \ + --disable-werror \ + --disable-fixed-point \ + --disable-libstdcxx-pch \ + --disable-nls \ + --without-included-gettext \ + --enable-checking=release \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --with-system-zlib \ + --enable-__cxa_atexit \ + --enable-default-pie \ + --enable-default-ssp \ + --enable-threads \ + --enable-tls \ + --enable-languages=c,c++ \ + $archopts \ + --disable-bootstrap + +make +make DESTDIR="$1" install + +# Save 35MB. +find "$1" -name libgtkpeer.a -exec rm -f {} + +find "$1" -name libgjsmalsa.a -exec rm -f {} + +find "$1" -name libgij.a -exec rm -f {} + + +# Some legacy programs will expect cc +ln -s gcc "$1/usr/bin/cc" + +# POSIX compliance. +install -Dm755 ../c99 "$1/usr/bin/c99" + +# Symlink for LTO. +{ + mkdir -p "$1/usr/lib/bfd-plugins" + + 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/testing/gcc/checksums b/testing/gcc/checksums new file mode 100644 index 00000000..ebe22b10 --- /dev/null +++ b/testing/gcc/checksums @@ -0,0 +1,6 @@ +b6898a23844b656f1b68691c5c012036c2e694ac4b53a8918d4712ad876e7ea2 gcc-10.1.0.tar.xz +258e6cd51b3fbdfc185c716d55f82c08aff57df0c6fbd143cf6ed561267a1526 gmp-6.2.0.tar.xz +1d3be708604eae0e42d578ba93b390c2a145f17743a744d8f3f8c2ad5855a38a mpfr-4.0.2.tar.xz +6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e mpc-1.1.0.tar.gz +765614b3396d70bca3fa0ae4a813632486c6dca320e2bd13c8c39dca52be4a4c c99 +4ece19529edb8e681e1778e977e2ba1d47984ccfcb82505e8b898bb29d659625 musl-libssp.patch diff --git a/testing/gcc/depends b/testing/gcc/depends new file mode 100644 index 00000000..3eb45901 --- /dev/null +++ b/testing/gcc/depends @@ -0,0 +1,4 @@ +binutils +byacc make +flex make +zlib diff --git a/testing/gcc/files/c99 b/testing/gcc/files/c99 new file mode 100755 index 00000000..692f0924 --- /dev/null +++ b/testing/gcc/files/c99 @@ -0,0 +1,2 @@ +#!/bin/sh +exec cc -std=c99 "$@" diff --git a/testing/gcc/message b/testing/gcc/message new file mode 100644 index 00000000..75c12d01 --- /dev/null +++ b/testing/gcc/message @@ -0,0 +1,11 @@ +[1;31mCRITICAL[m[1m + +A bug in GCC 10.1.0 causes kernels built with GCC 10 to +kernel panic in the second boot stage. This issue can be +resolved by applying the following patch. + +https://dl.carbslinux.org/distfiles/linux-gcc-10-bootfix.patch + +You can also visit https://carbslinux.org for a link to the +patch. +[m diff --git a/testing/gcc/patches/musl-libssp.patch b/testing/gcc/patches/musl-libssp.patch new file mode 100644 index 00000000..fe5c6143 --- /dev/null +++ b/testing/gcc/patches/musl-libssp.patch @@ -0,0 +1,20 @@ +Author: Timo Teräs <timo.teras@iki.fi> + +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/testing/gcc/sources b/testing/gcc/sources new file mode 100644 index 00000000..1f9ea011 --- /dev/null +++ b/testing/gcc/sources @@ -0,0 +1,6 @@ +https://gcc.gnu.org/pub/gcc/releases/gcc-10.1.0/gcc-10.1.0.tar.xz gcc +https://ftp.gnu.org/gnu/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 diff --git a/testing/gcc/version b/testing/gcc/version new file mode 100644 index 00000000..3d0f48ce --- /dev/null +++ b/testing/gcc/version @@ -0,0 +1 @@ +10.1.0 1 |