From f850fef613f83060974d4852124f98256d60b9e6 Mon Sep 17 00:00:00 2001 From: A1029384756 Date: Fri, 12 Jun 2026 23:54:26 -0400 Subject: [PATCH] [stack-canaries] disallow stack canaries on non-intel linux --- src/build_settings.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 6a1b296d0..ff184ff63 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1952,9 +1952,18 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta } } - if (metrics->os == TargetOs_windows || + // note: there are some stack protection toolchain issues on non-intel + // platforms that will clash with PIC/PIE: + // `unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol` + if (metrics->os == TargetOs_linux && ( + metrics->arch == TargetArch_amd64 || + metrics->arch == TargetArch_i386 + )) { + if (bc->stack_protector == StackProtector_Default) { + bc->stack_protector = StackProtector_Ssp; + } + } else if (metrics->os == TargetOs_windows || metrics->os == TargetOs_darwin || - metrics->os == TargetOs_linux || metrics->os == TargetOs_freebsd || metrics->os == TargetOs_openbsd || metrics->os == TargetOs_netbsd) {