Hi Matthias, On 2023-12-31 10:32, Matthias Klose wrote: > please also check > > - that a cross compiler with this patch has these enabled > > - that a cross build of gcc-13 targeting arm64 with this > patch has these enabled
Very good point, indeed the original patch I sent did not address either of the above. As a first attempt I tried setting CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET instead of CFLAGS and CXXFLAGS. That worked fine for cross compilers (ie: building gcc-13-cross), but it broke native builds with the following error: configure:3576: /<<PKGBUILDDIR>>/build-nvptx/./gcc/xgcc -B/<<PKGBUILDDIR>>/build-nvptx/./gcc/ -nostdinc -B/<<PKGBUILDDI R>>/build-nvptx/nvptx-none/newlib/ -isystem /<<PKGBUILDDIR>>/build-nvptx/nvptx-none/newlib/targ-include -isystem /<<PKG BUILDDIR>>/src-nvptx/newlib/libc/include -B/usr/nvptx-none/bin/ -B/usr/nvptx-none/lib/ -isystem /usr/nvptx-none/include -isystem /usr/nvptx-none/sys-include -isystem /<<PKGBUILDDIR>>/build-nvptx/sys-include -o conftest -mbranch-protect ion=standard conftest.c >&5 xgcc: error: unrecognized command-line option '-mbranch-protection=standard' I wonder if this may be related to https://bugs.debian.org/1060075 ? At any rate, the following patch seems to cover all cases: native build, cross compiler build and cross build of the native compiler. I suspect but cannot prove that without #1060075 it would be enough to just unconditionally set CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET. diff -Nru gcc-13-13.2.0/debian/rules2 gcc-13-13.2.0/debian/rules2 --- gcc-13-13.2.0/debian/rules2 2023-12-09 20:15:56.000000000 +0100 +++ gcc-13-13.2.0/debian/rules2 2024-01-04 17:23:48.000000000 +0100 @@ -199,6 +199,22 @@ STAGE1_LDFLAGS = endif +ifeq ($(DEB_TARGET_ARCH),arm64) + ifeq ($(DEB_CROSS),yes) + # Building cross compilers + CFLAGS_FOR_TARGET += -mbranch-protection=standard + CXXFLAGS_FOR_TARGET += -mbranch-protection=standard + else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + # Cross build of the native compiler + CFLAGS_FOR_TARGET += -mbranch-protection=standard + CXXFLAGS_FOR_TARGET += -mbranch-protection=standard + else + # Native build + CFLAGS += -mbranch-protection=standard + CXXFLAGS += -mbranch-protection=standard + endif +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))")) diff -Nru gcc-13-13.2.0/debian/rules.defs gcc-13-13.2.0/debian/rules.defs --- gcc-13-13.2.0/debian/rules.defs 2023-12-14 19:55:12.000000000 +0100 +++ gcc-13-13.2.0/debian/rules.defs 2024-01-04 17:23:48.000000000 +0100 @@ -781,7 +781,7 @@ offload_targets := with_offload_nvptx := endif -ifneq (,$(findstring build-cross, $(build_type))) +ifneq ($(build_type),build-native) offload_targets := with_offload_nvptx := disabled for cross builds endif