aboutsummaryrefslogtreecommitdiff
path: root/testing/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'testing/gcc')
-rwxr-xr-xtesting/gcc/build83
-rw-r--r--testing/gcc/checksums6
-rw-r--r--testing/gcc/depends4
-rwxr-xr-xtesting/gcc/files/c992
-rw-r--r--testing/gcc/patches/musl-libssp.patch20
-rw-r--r--testing/gcc/sources6
-rw-r--r--testing/gcc/version1
7 files changed, 122 insertions, 0 deletions
diff --git a/testing/gcc/build b/testing/gcc/build
new file mode 100755
index 00000000..e3bb1e03
--- /dev/null
+++ b/testing/gcc/build
@@ -0,0 +1,83 @@
+#!/bin/sh -e
+
+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-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-shared \
+ --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/$2/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..27586eaf
--- /dev/null
+++ b/testing/gcc/checksums
@@ -0,0 +1,6 @@
+4c4a6fb8a8396059241c2e674b85b351c26a5d678274007f076957afa1cc9ddf gcc-11.1.0.tar.xz
+fd4829912cddd12f84181c3451cc752be224643e87fac497b69edddadc49b4f2 gmp-6.2.1.tar.xz
+0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f mpfr-4.1.0.tar.xz
+17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459 mpc-1.2.1.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/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..63de2a34
--- /dev/null
+++ b/testing/gcc/sources
@@ -0,0 +1,6 @@
+https://gcc.gnu.org/pub/gcc/releases/gcc-11.1.0/gcc-11.1.0.tar.xz gcc
+https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz gcc/gmp
+https://ftp.gnu.org/gnu/mpfr/mpfr-4.1.0.tar.xz gcc/mpfr
+https://ftp.gnu.org/gnu/mpc/mpc-1.2.1.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..ec1ee9a6
--- /dev/null
+++ b/testing/gcc/version
@@ -0,0 +1 @@
+11.1.0 1