github SynoCommunity/spksrc toolchains/dsm7.1
DSM 7.1 Toolchains

pre-release3 hours ago

DSM 7.1 toolchains, mirrored here alongside the SynoCommunity build system.

Base toolchains (official Synology, DSM 7.1)

The DSM 7.1 base toolchains are fetched directly from Synology's own archive, not mirrored
here. This release carries the overlays only.


Overlays — gcc 8.5 and binutils 2.30

What these are

The archives below are not toolchains. They are overlays: gcc 8.5 and binutils 2.30
rebuilt as cross tools for the DSM 7.1 toolchains above, reusing each toolchain's own
glibc sysroot.

DSM 7.1 ships gcc 8.5.0 on 31 of its 32 architectures. comcerto2k is the exception: it reuses the DSM 6.1-era Mindspeed toolchain and stays on gcc 4.9.3 with binutils 2.25, which left it behind every sibling on any MIN_GCC_VERSION gate. It is the only architecture here that needs an overlay, and the reason this release exists. That compiler, not glibc, is what blocks modern software. But glibc is a hard
runtime floor — the NAS runs what it runs, and linking against a newer one produces
binaries that will not start.

An overlay separates the two. Only the tools move forward; glibc, the kernel headers and
the sysroot stay exactly as Synology shipped them, so the resulting binaries keep running on
stock DSM 7.1. gcc 8.5 specifically, because that is the compiler DSM 7.1 already ships —
a known-good target rather than an arbitrary bump.

One component, one archive

gcc and binutils are separate archives, composed at install time. Either can be rebuilt
without touching the other, and neither name claims to contain something it does not. A gcc
8.5 overlay is inert on its own: it ships no assembler or linker, and the stock binutils
cannot assemble what it emits, so the two are always installed as a pair.

Both now live here, with the toolchain they extend. The binutils archives used to be
published in a release of their own; that release keeps only the revisions older checkouts
still resolve.

How they are used

Nothing here is downloaded by hand. Each archive is consumed by
toolchain/syno-<arch>-7.1_gcc-8.5 and toolchain/syno-<arch>-7.1_binutils-2.30,
which unpack into their own directories and link the base toolchain's sysroot plus the
overlay's as/ld into place.

Installing an overlay does not activate it. OVERLAY_GCC defaults to 0, so every
existing package keeps building with exactly the compiler it uses today.

Switch Effect
OVERLAY_GCC = 0 the toolchain's stock gcc (default)
OVERLAY_GCC = 1 gcc 8.5, and the binutils 2.30 overlay it requires
OVERLAY_GCC_VERS which gcc overlay to select, when an arch ships more than one

Settable per package, in local.mk, or on the command line — the same OVERLAY_<component>
family as OVERLAY_RUSTC and OVERLAY_BINUTILS.

Built by native/gcc-8.5 and native/binutils-2.30 (make all-7.1), one build per
toolchain: each is compiled against its own sysroot, and no arch reuses another's archive.

Revisions

gcc v5 and binutils v4 are current, on every architecture. Both are profile-guided:
the tools are instrumented, run over real target assembly, then rebuilt reading the counts.

component rev what the current revision adds
gcc 8.5 v5 v4 plus PGO of the compiler itself. cc1 8.5% faster at -O2 and 12.5% at -O3, cc1plus 11.7%; the generated code is bit-identical, PGO moves the compiler and not what it emits
binutils 2.30 v4 v3 plus PGO. as 10.2% faster over 7.5 MB of assembly and 7.1% smaller; ld -r moved 2.7%, which is inside the noise and is not claimed as a gain

Earlier revisions have been removed from this release: nothing references them.

Files

One gcc archive and one binutils archive per real DSM 7.1 toolchain — 1 of each. There is
no archive for the meta architectures (x64, armv7, aarch64): those toolchains are
umbrellas over a real sub-architecture and build through it, so an overlay of their own would
never be used.

Serves gcc 8.5 binutils 2.30
comcerto2k gcc-8.5.0-arm-unknown-linux-gnueabi-comcerto2k-7.1-v5.txz binutils-2.30-arm-unknown-linux-gnueabi-comcerto2k-7.1-v4.txz

Don't miss a new spksrc release

NewReleases is sending notifications on new releases.