Bug#1123084: libgfortran5: please enable PAC/BTI/GCS on arm64
On 2025-12-17 08:37, Matthias Klose wrote:
> > on arm64 libgfortran.so.5.0.0 is currently built without PAC/BTI/GCS
> > support.
> >
> > Please consider the attached patch to add -mbranch-protection=standard
> > to FCFLAGS where appropriate.
>
> please could you write that the same way you did for CFLAGS/CXXFLAGS to
> correctly pass for the cross compilers as well?
Adding FCFLAGS to the list of flags to pass to cross compilers did the
trick, I double-checked that usr/aarch64-linux-gnu/lib/libgfortran.so.5
as shipped by libgfortran5-arm64-cross_15.2.0-11cross1_all.deb has the
flags.
Updated patch attached.
commit 5280bfe9d00f17f499fb5e1b1885e2791c75aefc
Author: Emanuele Rocca <ema@debian.org>
Date: Tue Dec 16 13:43:04 2025 +0100
Enable PAC/BTI/GCS support in libgfortran
diff --git a/debian/rules2 b/debian/rules2
index 8c78e32..30892e5 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -217,6 +217,10 @@ ifeq ($(DEB_TARGET_ARCH),arm64)
CFLAGS_SECURE =
endif
+ ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get FCFLAGS)))
+ FCFLAGS += -mbranch-protection=standard
+ endif
+
ifeq ($(DEB_CROSS),yes)
# Building cross compilers
CFLAGS_FOR_TARGET += $(CFLAGS_SECURE)
@@ -255,7 +259,7 @@ endif
# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target
# all other flags are passed to the make step.
pass_vars = $(foreach v,$(1),$(if $($(v)),$(v)="$($(v))"))
-flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS
+flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS FCFLAGS
docdir = usr/share/doc
@@ -1208,6 +1212,7 @@ endif
@echo "CPPFLAGS: $(CPPFLAGS)"
@echo "CFLAGS: $(CFLAGS)"
@echo "LDFLAGS: $(LDFLAGS)"
+ @echo "FCFLAGS: $(FCFLAGS)"
@echo "BOOT_CFLAGS: $(BOOT_CFLAGS)"
@echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)"
@echo "Install prefix: /$(PF)"
@@ -1450,7 +1455,7 @@ else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-c
$(SET_LOCPATH) \
$(time_command) $(MAKE) $(NJOBS) -C $(builddir) \
$(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \
- CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \
+ CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET FCFLAGS) \
; \
echo $$? > status; \
echo === TIME $@ ===; \
Reply to: