diff --git a/.github/workflows/bwrap.yml b/.github/workflows/bwrap.yml index d32ce36..1f4fcbd 100644 --- a/.github/workflows/bwrap.yml +++ b/.github/workflows/bwrap.yml @@ -22,6 +22,9 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive + # There is a strange bug(?) in nongnu, when you clone a git repository + # against a commit != HEAD with depth=1, it errors out. + fetch-depth: 0 - name: Query cache for sources id: cache uses: actions/cache/restore@v3 @@ -45,7 +48,7 @@ jobs: id: bootstrap run: ./rootfs.py --bwrap --external-sources --build-kernels --preserve --cores 2 - name: Archive created packages - if: steps.bootstrap.conclusion == 'success' + if: always() # archive failed builds uses: actions/upload-artifact@v3 with: name: packages diff --git a/parts.rst b/parts.rst index fdfb09f..e7e6c47 100644 --- a/parts.rst +++ b/parts.rst @@ -1136,7 +1136,7 @@ Differences to 3.8.16: remove determinism from precompiled Python libraries (``.pyc``). Finally, we can re-enable compiling of Python modules. -GCC 10.4.0 +gcc 10.4.0 ========== GCC 10.x series is the last version of GCC that is able to be built with the @@ -1145,3 +1145,36 @@ every subdirectory, since we now have ``autogen`` available we are able to use the top-level configure to build the project. We do not use GCC's bootstrap mode, where GCC is recompiled with itself after being built, since we're just going to use this GCC to compile GCC 12, it adds build time for little benefit. + +binutils 2.38 (pass 2) +====================== + +We recompile Binutils with the full intended autogen top-level build system, +instead of the subdirectory build system used before. This creates a binutils +that functions completely correctly for the build of GCC 12 (eg, fixes the +mistaken plugin loading support). Other modern features are added, including; + +* threaded linking +* 64-bit linking on 32-bit x86 +* the modern, rewritten gold linker used by some distributions + +gcc 12.2.0 +========== + +This is the most recent version of GCC. With this version of GCC, the +final gcc-binutils-musl toolchain is complete. The focus of further builds +shifts to rebuilds for correctness, cleanup and preparation for downstream +consumption. + +In line with this, a variety of modern features + minor build changes are used +to ensure the compiler is suitable for downstream consumption; + +* A full internal GCC bootstrap is used to ensure there are no lagging + historical problems. +* PIE and SSP are enabled by default, as is done on every major modern Linux + distribution. +* libssp is disabled and handed off to the libc (done by many modern Linux + distributions). libssp in GCC is very broken and glibc-centric - it should + really be handled by the libc, which is what most distributions do. +* LTO now fully functions correctly, despite both the linker and the compiler + being static binaries. diff --git a/sysa/SHA256SUMS.pkgs b/sysa/SHA256SUMS.pkgs index 264bfff..688fb30 100644 --- a/sysa/SHA256SUMS.pkgs +++ b/sysa/SHA256SUMS.pkgs @@ -23,7 +23,8 @@ c5807850a377e4bb9aa4121d9781d145bdd80327626a9419630a75ce2c8d9c71 automake-1.9.6 46282b2a7c2e3d50bac2d3f90fee56629c4a533a962ad61eabac6395a3b676db bash-5.2.15_0.tar.bz2 05bcb569640576e53e40c2bfbeea988fd4fc4e0b5b1311668eabd5cdaacd6657 bc-1.07.1_0.tar.bz2 7b8ea17311f22e987a39b814658c72b46201650c4dfbc707e8fd9eb42bf1ed28 binutils-2.30_0.tar.bz2 -a21157791cb5e7ec941de09f275286d90efe1b463dc4302b238af9ba53fae49e binutils-2.38_0.tar.bz2 +543fb17af4d08fe3ba6bfbd824aa607f7eda5fd09bc11c2384bd91667c052053 binutils-2.38_0.tar.bz2 +868e1e600754638674c626e2b5fa017be18c03cbabc94f0c9d7b3e070779b9e8 binutils-2.38_1.tar.bz2 2e2102a9a41f3ad35683e67f6f9cc09e4edad25b7acb1ae0ca3ad94e19fbbdaf bison-2.3_0.tar.bz2 df9539b52384757d927bca5a27b1b58325b6024b23b0470e557f135eb69bae30 bison-3.4.1_0.tar.bz2 fed9e13409f6378f97e8cef61e6faac992f3b767dfdac22f32453ff57cf29e7b bison-3.4.1_1.tar.bz2 @@ -36,7 +37,7 @@ acd3ba50a33ea0172c3ca59e341a48e4233be48ded26fa031fd2e9417a2dfb31 coreutils-5.0_ e41aba2caa7514704731d3b7a49f63ff8ffb2d22a64f14afdbaadbd0b24073f0 coreutils-8.32_0.tar.bz2 8df7fe3124243028cc9fd9a00fe8ab55c2143a9b7551426447867d2e1de436b6 curl-7.88.1_0.tar.bz2 d7d0a5fc9117f9b3ebd287851a48716c96a3c11991365edb8890f0e203d3b810 curl-7.88.1_1.tar.bz2 -5022827ba9d4cc7de3b0d0bafdce1c8abd01e437e940193c672d6a309c889806 dhcpcd-9.5.0_0.tar.bz2 +ed1581d1ef5d42c809a7db1c27614e0a900076e7ce08349ea4797944d41c7bc7 dhcpcd-10.0.1_0.tar.bz2 c4008ae6b168aee4120b0f3624a1875f9e413d8f0c637708b8b04a1fb5be173c diffutils-2.7_0.tar.bz2 bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0.tar.bz2 c0514138e251062c9ac2ff1e432e01a541777bfd61480c77479ea55f5b75cdd1 e2fsprogs-1.45.7_0.tar.bz2 @@ -48,7 +49,8 @@ d7b7453ad400eac1ba39f99971afdc392cb8a92c557ef5d6fd9fa2625124de4a ed-1.4_0.tar.b 408131b1c033a5f8a6845997b049784be0b466cec107a71270e5a04dae2c1e6c flex-2.6.4_0.tar.bz2 5ff7fbe16b55563719b108260bd6a34ebabab0465d758ca98cba522932532e45 gawk-3.0.4_0.tar.bz2 6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2 -4ed230542823160a4b1a469847cc2cc0ae1985611f2e1b831e13f2a3a7122efb gcc-10.4.0_0.tar.bz2 +cb1aca35878f7c53e7dc96294ceca2ce3c72cf89359fe2bec46336d5f0849387 gcc-10.4.0_0.tar.bz2 +0c58c12e71c8571f9c958dbebf53677cb4612eaa5cfd2aaa9ed7a1b76a081dae gcc-12.2.0_0.tar.bz2 b09580c3972ff4e5f6e624bdc83d5328ce017422e0b92a7c170b51b6f04a47d2 gcc-4.0.4_0.tar.bz2 58d0d431bb2e96a273965b5e7aa760fb6961a7f7f2fd98ef5fc5a6b7b44bc989 gcc-4.0.4_1.tar.bz2 a2301d8dbbfbfcdd18444f01848e8e4366780281009640acbd3af0fab9b11aea gcc-4.7.4_0.tar.bz2 @@ -79,7 +81,7 @@ a724c91a43e282c3d338a977e4eeac3b970df241db7872f9d5cf27984b609814 musl-1.1.24_0. b79e0f8a39ba8880d43aa27551b72915655c62af39125e1f4ac8f8e69e71aaca musl-1.1.24_2.tar.bz2 a675ead0f146a96973fca9cc9e4f16081b14c26630ae17405e3ba5e9510ff30d musl-1.2.3_0.tar.bz2 054c6a5f1c07d124b701e590267aa8fb2ba1c88bed9a69a473724f8534cdb728 musl-1.2.3_1.tar.bz2 -3260f0c8bfa1160a2f252c6e0d3ca5f98635ec8f9d9f211a30ef1a0313cac853 musl-1.2.3_2.tar.bz2 +5ba73e250b0325f690b2c5c3afd4a14cf4612c682e9b358727ebcb7bc6b758ef musl-1.2.3_2.tar.bz2 e0c91898e771c65e6a462600243a7858b069db5726680193f86d7dbac3f740ae openssl-1.1.1l_0.tar.bz2 69daf6ffbf26fea500426c6936e5a16e82833f03ad0dc6109697f69a8516b4c7 patch-2.7.6_0.tar.bz2 914a7abf36a64723b6e9f9b0b6ccd19c8e544fa798896a2bb1151dc341890c22 perl-5.000_0.tar.bz2 diff --git a/sysa/dhcpcd-9.5.0/dhcpcd-9.5.0.sh b/sysa/dhcpcd-10.0.1/dhcpcd-10.0.1.sh similarity index 100% rename from sysa/dhcpcd-9.5.0/dhcpcd-9.5.0.sh rename to sysa/dhcpcd-10.0.1/dhcpcd-10.0.1.sh diff --git a/sysa/dhcpcd-9.5.0/patches/remove-ctassert.patch b/sysa/dhcpcd-10.0.1/patches/remove-ctassert.patch similarity index 100% rename from sysa/dhcpcd-9.5.0/patches/remove-ctassert.patch rename to sysa/dhcpcd-10.0.1/patches/remove-ctassert.patch diff --git a/sysa/dhcpcd-10.0.1/sources b/sysa/dhcpcd-10.0.1/sources new file mode 100644 index 0000000..8bd6497 --- /dev/null +++ b/sysa/dhcpcd-10.0.1/sources @@ -0,0 +1 @@ +https://github.com/NetworkConfiguration/dhcpcd/archive/refs/tags/v10.0.1.tar.gz 2bd3480bc93e6bff530872b8bc80cbcaa821449f7bf6aaf202fa12fb8c2e6f55 diff --git a/sysa/dhcpcd-9.5.0/sources b/sysa/dhcpcd-9.5.0/sources deleted file mode 100644 index fa6de2d..0000000 --- a/sysa/dhcpcd-9.5.0/sources +++ /dev/null @@ -1 +0,0 @@ -https://github.com/NetworkConfiguration/dhcpcd/archive/refs/tags/dhcpcd-9.5.0.tar.gz bb8ebda4b250ca8c2faa910205f5ffac66ae83a786b59f5cedbfe7624ad04bc2 diff --git a/sysa/run2.sh b/sysa/run2.sh index 53a28e3..078f487 100755 --- a/sysa/run2.sh +++ b/sysa/run2.sh @@ -63,7 +63,7 @@ build util-linux-2.19.1 build e2fsprogs-1.45.7 -build dhcpcd-9.5.0 '' '' dhcpcd-dhcpcd-9.5.0 +build dhcpcd-10.0.1 build kbd-1.15 diff --git a/sysc/binutils-2.38/binutils-2.38.sh b/sysc/binutils-2.38/pass1.sh similarity index 89% rename from sysc/binutils-2.38/binutils-2.38.sh rename to sysc/binutils-2.38/pass1.sh index cb07d5f..5ff457e 100755 --- a/sysc/binutils-2.38/binutils-2.38.sh +++ b/sysc/binutils-2.38/pass1.sh @@ -14,15 +14,22 @@ src_prepare() { rm zlib/aclocal.m4 zlib/configure - # Regenerate files + # Regenerate autoconf for dir in bfd binutils gas gold gprof intl ld libctf libiberty opcodes; do cd $dir AUTOPOINT=true ACLOCAL=aclocal-1.15 AUTOMAKE=automake-1.15 autoreconf-2.69 -fi cd .. done - ACLOCAL=aclocal-1.15 autoreconf-2.69 -fi + # Regenerate directories with Makefile.am only + pushd gold + automake-1.15 -fai testsuite/Makefile + popd + pushd bfd + automake-1.15 -fai doc/Makefile + popd + # Rebuild bison files touch -- */*.y rm binutils/arparse.c binutils/arparse.h @@ -62,7 +69,7 @@ src_prepare() { ./bfd/mep-relocs.pl # Manpages - find . -type f -name '*.1' -or -name '*.man' -delete + find . -type f \( -name '*.1' -or -name '*.man' \) -delete } src_configure() { @@ -104,4 +111,7 @@ src_install() { ln -s "${PREFIX}/bin/${f}" "i386-unknown-linux-musl-${f}" done popd + + # FIXME: Binutils' manpages dates are not reproducible + rm -r "${DESTDIR}${PREFIX}/share/man" } diff --git a/sysc/binutils-2.38/pass2.sh b/sysc/binutils-2.38/pass2.sh new file mode 100755 index 0000000..f888bd6 --- /dev/null +++ b/sysc/binutils-2.38/pass2.sh @@ -0,0 +1,122 @@ +# SPDX-FileCopyrightText: 2022 Dor Askayo +# SPDX-FileCopyrightText: 2021 Andrius Štikonas +# SPDX-FileCopyrightText: 2021 Paul Dersey +# SPDX-FileCopyrightText: 2023 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + # Remove unused generated files + rm etc/Makefile.in etc/configure + rm zlib/aclocal.m4 zlib/configure + + # Regenerate top-level (autogen + autotools) + autogen Makefile.def + ACLOCAL=aclocal-1.15 autoreconf-2.69 -fi + + # Regenerate autoconf + for dir in bfd binutils gas gold gprof intl ld libctf libiberty opcodes; do + cd $dir + ACLOCAL=aclocal-1.15 AUTOMAKE=automake-1.15 autoreconf-2.69 -fi + cd .. + done + + # Regenerate directories with Makefile.am only + pushd gold + automake-1.15 -fai testsuite/Makefile + popd + pushd bfd + automake-1.15 -fai doc/Makefile + popd + + # intl/ Makefile is a bit broken because of new gettext + sed -i 's/@USE_INCLUDED_LIBINTL@/no/' intl/Makefile.in + + # There is no way to add -all-static to libtool LDFLAGS (such a thing doesn't exist) + # -all-static is required for static binaries with libtool + sed -i 's:\(--mode=link $(CCLD)\):\1 -all-static:' {bfd,binutils,opcodes,ld,libctf,gas,gprof}/Makefile.in + + # Rebuild bison files + touch -- */*.y + rm binutils/arparse.c binutils/arparse.h + rm binutils/defparse.c binutils/defparse.h + rm binutils/mcparse.c binutils/mcparse.h + rm binutils/rcparse.c binutils/rcparse.h + rm binutils/sysinfo.c binutils/sysinfo.h + rm gas/config/bfin-parse.c gas/config/bfin-parse.h + rm gas/config/loongarch-parse.c gas/config/loongarch-parse.h + rm gas/config/m68k-parse.c gas/config/rl78-parse.c + rm gas/config/rl78-parse.h gas/config/rx-parse.c + rm gas/config/rx-parse.h gas/itbl-parse.c + rm gas/itbl-parse.h gold/yyscript.c + rm gold/yyscript.h intl/plural.c + rm ld/deffilep.c ld/deffilep.h + rm ld/ldgram.c ld/ldgram.h + + # Rebuild flex generated files + touch -- */*.l */*/*.l + rm binutils/arlex.c binutils/deflex.c binutils/syslex.c + rm gas/config/bfin-lex.c gas/config/loongarch-lex.c gas/itbl-lex.c + rm ld/ldlex.c + + # Remove prebuilt texinfo files + find . -type f -name '*.info*' \ + -not -wholename './binutils/sysroff.info' \ + -delete + + # Remove pregenerated opcodes files + rm opcodes/i386-init.h opcodes/i386-tbl.h + rm opcodes/ia64-asmtab.c + rm opcodes/z8k-opc.h + rm opcodes/aarch64-asm-2.c opcodes/aarch64-opc-2.c opcodes/aarch64-dis-2.c + rm $(grep -l 'MACHINE GENERATED' opcodes/*.c opcodes/*.h) + + # Regenerate MeP sections + ./bfd/mep-relocs.pl + + # Manpages + find . -type f \( -name '*.1' -or -name '*.man' \) -delete +} + +src_configure() { + mkdir build + cd build + + LDFLAGS="-static" \ + ../configure \ + --prefix="${PREFIX}" \ + --libdir="${LIBDIR}" \ + --build=i386-unknown-linux-musl \ + --host=i386-unknown-linux-musl \ + --target=i386-unknown-linux-musl \ + --enable-static \ + --disable-nls \ + --disable-multilib \ + --disable-plugins \ + --enable-threads \ + --enable-64-bit-bfd \ + --enable-gold \ + --enable-ld=default \ + --enable-install-libiberty \ + --enable-deterministic-archives \ + --with-system-zlib \ + --program-prefix="" \ + --with-sysroot= \ + --srcdir=.. +} + +src_install() { + default + + # Create triplet symlinks + pushd "${DESTDIR}${PREFIX}/bin" + for f in *; do + ln -s "${PREFIX}/bin/${f}" "i386-unknown-linux-musl-${f}" + done + popd + + # FIXME: Binutils' manpages dates are not reproducible + rm -r "${DESTDIR}${PREFIX}/share/man" +} diff --git a/sysc/gcc-10.4.0/gcc-10.4.0.sh b/sysc/gcc-10.4.0/gcc-10.4.0.sh index 20f55f3..99db8dd 100755 --- a/sysc/gcc-10.4.0/gcc-10.4.0.sh +++ b/sysc/gcc-10.4.0/gcc-10.4.0.sh @@ -95,5 +95,6 @@ src_configure() { --disable-sjlj-exceptions \ --disable-multilib \ --enable-threads=posix \ - --disable-libsanitizer + --disable-libsanitizer \ + --disable-libssp } diff --git a/sysc/gcc-12.2.0/gcc-12.2.0.sh b/sysc/gcc-12.2.0/gcc-12.2.0.sh new file mode 100755 index 0000000..b68c6ee --- /dev/null +++ b/sysc/gcc-12.2.0/gcc-12.2.0.sh @@ -0,0 +1,101 @@ +# SPDX-FileCopyrightText: 2023 fosslinux +# +# SPDX-License-Identifier: GPL-3.0-or-later + +src_prepare() { + default + + # Remove vendored zlib + rm -r zlib/ + + # Regen gperf file (because GCC's make rules suck) + rm gcc/cp/cfns.h + # (taken directly from gcc/cp/Make-lang.in) + gperf -o -C -E -k '1-6,$' -j1 -D -N 'libc_name_p' -L C++ \ + gcc/cp/cfns.gperf --output-file gcc/cp/cfns.h + + # Regenerate autogen stuff + autogen Makefile.def + pushd fixincludes + ./genfixes + popd + + # Regenerate autotools + # configure + find . -name configure | sed 's:/configure::' | while read d; do + pushd "${d}" + AUTOMAKE=automake-1.15 ACLOCAL=aclocal-1.15 autoreconf-2.69 -fiv + popd + done + # Because GCC is stupid, copy depcomp back in + cp "${PREFIX}/share/automake-1.15/depcomp" . + # Makefile.in only + local BACK="${PWD}" + find . -type d \ + -exec test -e "{}/Makefile.am" -a ! -e "{}/configure" \; \ + -print | while read d; do + d="$(readlink -f "${d}")" + cd "${d}" + # Find the appropriate configure script for automake + while [ ! -e configure ]; do + cd .. + done + automake-1.15 -fai "${d}/Makefile" + cd "${BACK}" + done + + # Remove bison generated files + rm intl/plural.c + + # Remove flex generated files + rm gcc/gengtype-lex.cc + + # Remove unused generated files + rm -r libgfortran/generated + + # intl/ Makefile is a bit broken because of new gettext + sed -i 's/@USE_INCLUDED_LIBINTL@/no/' intl/Makefile.in + + # Regenerate crc table in libiberty/crc32.c + pushd libiberty + sed -n -e '38,65p' crc32.c > crcgen.c + gcc -o crcgen crcgen.c + head -n 69 crc32.c > crc32.c.new + ./crcgen >> crc32.c.new + tail -n +138 crc32.c >> crc32.c.new + mv crc32.c.new crc32.c + popd + + # Remove docs/translation + find . -name "*.gmo" -delete + find . -name "*.info" -delete +} + +src_configure() { + mkdir build + cd build + + LDFLAGS="-static" \ + ../configure \ + --prefix="${PREFIX}" \ + --libdir="${LIBDIR}" \ + --build=i386-unknown-linux-musl \ + --target=i386-unknown-linux-musl \ + --host=i386-unknown-linux-musl \ + --enable-bootstrap \ + --enable-static \ + --enable-default-pie \ + --enable-default-ssp \ + --disable-plugins \ + --disable-libssp \ + --disable-libsanitizer \ + --program-transform-name= \ + --enable-languages=c,c++ \ + --with-system-zlib \ + --disable-multilib \ + --enable-threads=posix +} + +src_compile() { + make "${MAKEJOBS}" BOOT_LDFLAGS="-static" +} diff --git a/sysc/gcc-12.2.0/patches/fix-gcc-autoreconf.patch b/sysc/gcc-12.2.0/patches/fix-gcc-autoreconf.patch new file mode 100644 index 0000000..3dc2e0e --- /dev/null +++ b/sysc/gcc-12.2.0/patches/fix-gcc-autoreconf.patch @@ -0,0 +1,43 @@ +SPDX-FileCopyrightText: 2023 fosslinux +SPDX-FileCopyrightText: 2022 Thomas Schwinge + +SPDX-License-Identifier: GPL-3.0-or-later + +Backport of commit 25861cf3a88a07c8dca3fb32d098c0ad756bbe38 + +==== +With that, we may then run plain 'autoreconf' for all of GCC's subpackages, +instead of for some of those (that don't use Automake) manually having to run +the applicable combination of 'aclocal', 'autoconf', 'autoheader'. + +See also 'AC_CONFIG_MACRO_DIRS'/'AC_CONFIG_MACRO_DIR' usage elsewhere. + +diff --git gcc/configure.ac gcc/configure.ac +index e1ef2ecf026..45bf7560e6f 100644 +--- gcc/configure.ac ++++ gcc/configure.ac +@@ -25,6 +25,7 @@ + + AC_INIT + AC_CONFIG_SRCDIR(tree.cc) ++AC_CONFIG_MACRO_DIRS([../config] [..]) + AC_CONFIG_HEADER(auto-host.h:config.in) + + gcc_version=`cat $srcdir/BASE-VER` +diff --git libobjc/configure libobjc/configure +index a8fdc643349..6da20b8e4ff 100755 +diff --git libobjc/configure.ac libobjc/configure.ac +index f8f577cfbef..6f58a45d4cb 100644 +--- libobjc/configure.ac ++++ libobjc/configure.ac +@@ -20,6 +20,7 @@ + + AC_INIT(package-unused, version-unused,, libobjc) + AC_CONFIG_SRCDIR([objc/objc.h]) ++AC_CONFIG_MACRO_DIRS([../config] [..]) + GCC_TOPLEV_SUBDIRS + + # We need the following definitions because AC_PROG_LIBTOOL relies on them +-- +2.31.1 + diff --git a/sysc/gcc-12.2.0/patches/fix-libiberty-autoreconf.patch b/sysc/gcc-12.2.0/patches/fix-libiberty-autoreconf.patch new file mode 100644 index 0000000..49b8b82 --- /dev/null +++ b/sysc/gcc-12.2.0/patches/fix-libiberty-autoreconf.patch @@ -0,0 +1,34 @@ +SPDX-FileCopyrightText: 2023 fosslinux +SPDX-FileCopyrightText: 2022 Simon Marchi + +SPDX-License-Identifier: GPL-3.0-or-later + +Backport of commit 1f237573caa5cf72218ea31fe78eb3983a717ca6 + +==== + +Add + + AC_CONFIG_MACRO_DIRS([../config]) + +So that just running: + + $ autoreconf -vf + +... does the right thing (no need to specify -I ../config). + +diff --git libiberty/configure.ac libiberty/configure.ac +index 84a7b378fad..28d996f9cf7 100644 +--- libiberty/configure.ac ++++ libiberty/configure.ac +@@ -2,6 +2,7 @@ dnl Process this file with autoconf to produce a configure script + + AC_INIT + AC_CONFIG_SRCDIR([xmalloc.c]) ++AC_CONFIG_MACRO_DIRS([../config]) + + # This works around the fact that libtool configuration may change LD + # for this particular configuration, but some shells, instead of +-- +2.31.1 + diff --git a/sysc/gcc-12.2.0/patches/libssp_nonshared.patch b/sysc/gcc-12.2.0/patches/libssp_nonshared.patch new file mode 100644 index 0000000..f5ee6c4 --- /dev/null +++ b/sysc/gcc-12.2.0/patches/libssp_nonshared.patch @@ -0,0 +1,35 @@ +SPDX-FileCopyrightText: 2023 fosslinux +SPDX-FileCopyrightText: 2020 Timo Teräs + +SPDX-License-Identifier: GPL-3.0-or-later + +The original motivation from this patch from Alpine Linux: + +Subject: [PATCH] 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. + +Which matches precisely the problem when compiling GCC with --enable-bootstrap +in live-bootstrap. + +--- + gcc/gcc.cc | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git gcc/gcc.cc gcc/gcc.cc +index cc99d0b7aa1..c60a75371f8 100644 +--- gcc/gcc.cc ++++ gcc/gcc.cc +@@ -1004,8 +1004,7 @@ proper position among the other output files. */ + + #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/sysc/gcc-12.2.0/patches/new-gettext.patch b/sysc/gcc-12.2.0/patches/new-gettext.patch new file mode 100644 index 0000000..9212c16 --- /dev/null +++ b/sysc/gcc-12.2.0/patches/new-gettext.patch @@ -0,0 +1,17 @@ +SPDX-FileCopyrightText: 2023 fosslinux + +SPDX-License-Identifier: GPL-3.0-or-later + +In new gettext external is required for AM_GNU_GETTEXT. + +--- intl/configure.ac 2023-02-07 18:43:58.989786230 +1100 ++++ intl/configure.ac 2023-02-07 18:43:02.182632631 +1100 +@@ -4,7 +4,7 @@ + AC_CONFIG_HEADER(config.h) + AC_CONFIG_MACRO_DIR(../config) + AM_GNU_GETTEXT_VERSION(0.12.1) +-AM_GNU_GETTEXT([], [need-ngettext]) ++AM_GNU_GETTEXT([external], [need-ngettext]) + + # This replaces the extensive use of DEFS in the original Makefile.in. + AC_DEFINE(IN_LIBINTL, 1, [Define because this is libintl.]) diff --git a/sysc/gcc-12.2.0/sources b/sysc/gcc-12.2.0/sources new file mode 100644 index 0000000..c39bfba --- /dev/null +++ b/sysc/gcc-12.2.0/sources @@ -0,0 +1 @@ +http://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.xz e549cf9cf3594a00e27b6589d4322d70e0720cdd213f39beb4181e06926230ff diff --git a/sysc/musl-1.2.3/files/__stack_chk_fail_local.c b/sysc/musl-1.2.3/files/__stack_chk_fail_local.c new file mode 100644 index 0000000..144d97b --- /dev/null +++ b/sysc/musl-1.2.3/files/__stack_chk_fail_local.c @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2020 Timo Teräs + * + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +extern void __stack_chk_fail(void); +void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { __stack_chk_fail(); } diff --git a/sysc/musl-1.2.3/musl-1.2.3.sh b/sysc/musl-1.2.3/musl-1.2.3.sh index b51c8fc..dc1fb64 100755 --- a/sysc/musl-1.2.3/musl-1.2.3.sh +++ b/sysc/musl-1.2.3/musl-1.2.3.sh @@ -14,11 +14,19 @@ src_configure() { src_compile() { make "${MAKEJOBS}" CROSS_COMPILE= + + # Provide libssp_nonshared.a to avoid GCC's messy libssp + # (Taken from Alpine Linux) + gcc -c __stack_chk_fail_local.c -o __stack_chk_fail_local.o + ar r libssp_nonshared.a __stack_chk_fail_local.o } src_install() { default + # Install libssp_nonshared.a + install -m 644 libssp_nonshared.a "${DESTDIR}${PREFIX}/lib/" + # Make dynamic linker symlink relative in ${PREFIX}/lib rm "${DESTDIR}/lib/ld-musl-i386.so.1" rmdir "${DESTDIR}/lib" diff --git a/sysc/run2.sh b/sysc/run2.sh index 1b62fe3..c56aba7 100755 --- a/sysc/run2.sh +++ b/sysc/run2.sh @@ -74,7 +74,7 @@ build texinfo-6.7 build gcc-4.7.4 -build binutils-2.38 +build binutils-2.38 pass1.sh build gperf-3.1 @@ -122,6 +122,10 @@ build python-3.11.1 build gcc-10.4.0 +build binutils-2.38 pass2.sh + +build gcc-12.2.0 + if [ "$FORCE_TIMESTAMPS" = True ] ; then echo 'Forcing all files timestamps to be 0 unix time.' canonicalise_all_files_timestamp