Bug#1110461: systemd: FTBFS on arm64 with GCC-15 due to GCS warning
Luca Boccassi
bluca at debian.org
Sun Aug 10 12:00:04 BST 2025
Control: reassign -1 dpkg-dev 1.22.21
Control: reassign 1110462 dpkg-dev 1.22.21
Control: forcemerge -1 1110462
Control: retitle -1 dpkg-buildflags: add -Wl,-z,gcs-report-dynamic=none to default arm64 ldflags
On Tue, 5 Aug 2025 21:13:46 +0200 Emanuele Rocca <ema at debian.org>
wrote:
> Source: systemd
> Version: 257.7-1
> User: debian-arm at lists.debian.org
> Usertags: gcs
>
> Hi,
>
> systemd fails to build from source on arm64 if built with GCC-15,
currently in
> experimental.
>
> GCC-15 includes support for an arm64 security feature called Guarded
Control
> Stack (GCS). To help with GCS adoption, the linker warns about shared
libraries
> built without GCS. For example:
>
> /usr/lib/gcc/aarch64-linux-gnu/15/../../../aarch64-linux-
gnu/libncursesw.so.6: warning: GCS is required by -z gcs, but this
shared library lacks the necessary property note. The dynamic loader
might not enable GCS or refuse to load the program unless all the
shared library dependencies have the GCS marking.
>
> The warning is harmless, and can be ignored. However, systemd is
built with
> --fatal-warnings, and for this reason will fail to build on arm64
once GCC-15
> becomes the default compiler in Debian.
>
> Luckily, it is possible to switch the warning off by passing the
argument
> gcs-report-dynamic=none to the linker. Please consider adding the
following to
> your debian/rules:
>
> ifeq ($(DEB_TARGET_ARCH),arm64)
> DEB_LDFLAGS_MAINT_APPEND=-Wl,-z,gcs-report-dynamic=none
> endif
>
> This can be done even before GCC-15 becomes the default compiler, to
avoid
> build failures when it does.
Sorry but this approach does not make a lot of sense to me. It's either
one of:
- all libraries need to be rebuilt with such flags, and then these bugs
need to be filed against the libraries mentioned in the errors above
or
- this is completely superfluous and should be ignored everywhere,
which means that ldflag needs to be added to the default dpkg-
buildflags, to avoid having to repeat the exact same workaround across
(some subset of) ~35k arm64 packages
For now I'll assume it's the latter and reassign accordingly, but
please feel free to adjust if not.
More information about the Pkg-systemd-maintainers
mailing list