From 1f9567d121d0caf397b84ce01ec91642e91a7bcd Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Sat, 4 Apr 2026 15:58:17 -0700 Subject: [PATCH] Disable Opus stack probes under Windows gnullvm Bazel builds Co-authored-by: Codex --- MODULE.bazel | 9 ++ patches/BUILD.bazel | 1 + .../opus_windows_gnullvm_stack_probe.patch | 128 ++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 patches/opus_windows_gnullvm_stack_probe.patch diff --git a/MODULE.bazel b/MODULE.bazel index 04e0ce16f1..f6b1e14d70 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -347,6 +347,15 @@ inject_repo(crate, "alsa_lib") bazel_dep(name = "opus", version = "1.6.0") +single_version_override( + module_name = "opus", + patch_strip = 1, + patches = [ + "//patches:opus_windows_gnullvm_stack_probe.patch", + ], + version = "1.6.0", +) + crate.annotation( crate = "audiopus_sys", gen_build_script = "off", diff --git a/patches/BUILD.bazel b/patches/BUILD.bazel index 75d6be358e..b8a714d6d3 100644 --- a/patches/BUILD.bazel +++ b/patches/BUILD.bazel @@ -4,6 +4,7 @@ exports_files([ "aws-lc-sys_windows_msvc_prebuilt_nasm.patch", "aws-lc-sys_windows_msvc_memcmp_probe.patch", "llvm_windows_symlink_extract.patch", + "opus_windows_gnullvm_stack_probe.patch", "rules_rust_windows_bootstrap_process_wrapper_linker.patch", "rules_rust_windows_build_script_runner_paths.patch", "rules_rust_windows_exec_bin_target.patch", diff --git a/patches/opus_windows_gnullvm_stack_probe.patch b/patches/opus_windows_gnullvm_stack_probe.patch new file mode 100644 index 0000000000..241276b775 --- /dev/null +++ b/patches/opus_windows_gnullvm_stack_probe.patch @@ -0,0 +1,128 @@ +--- a/overlay/BUILD.bazel ++++ b/overlay/BUILD.bazel +@@ -1,5 +1,5 @@ + load("@rules_cc//cc:defs.bzl", "cc_library") +-load("//:defs.bzl", "AVX2_COPTS", "OPUS_COPTS", "OPUS_INCLUDES", "OPUS_LINKOPTS", "SSE2_COPTS", "SSE4_1_COPTS", "SSE_COPTS") ++load("//:defs.bzl", "AVX2_COPTS", "OPUS_COPTS", "OPUS_INCLUDES", "OPUS_LINKOPTS", "OPUS_X86_STACK_COPTS", "SSE2_COPTS", "SSE4_1_COPTS", "SSE_COPTS") + + package(default_visibility = ["//:__subpackages__"]) + +@@ -76,7 +76,7 @@ cc_library( + "celt/x86/x86cpu.c", + "celt/x86/x86_celt_map.c", + ] + INTERNAL_HEADERS, +- copts = OPUS_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -91,7 +91,7 @@ cc_library( + cc_library( + name = "celt_sse", + srcs = ["celt/x86/pitch_sse.c"] + INTERNAL_HEADERS, +- copts = OPUS_COPTS + SSE_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS + SSE_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -108,7 +108,7 @@ cc_library( + "celt/x86/pitch_sse2.c", + "celt/x86/vq_sse2.c", + ] + INTERNAL_HEADERS, +- copts = OPUS_COPTS + SSE2_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS + SSE2_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -125,7 +125,7 @@ cc_library( + "celt/x86/celt_lpc_sse4_1.c", + "celt/x86/pitch_sse4_1.c", + ] + INTERNAL_HEADERS, +- copts = OPUS_COPTS + SSE4_1_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS + SSE4_1_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -140,7 +140,7 @@ cc_library( + cc_library( + name = "celt_avx2", + srcs = ["celt/x86/pitch_avx.c"] + INTERNAL_HEADERS, +- copts = OPUS_COPTS + AVX2_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS + AVX2_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -184,7 +184,7 @@ cc_library( + cc_library( + name = "silk_x86_rtcd", + srcs = ["silk/x86/x86_silk_map.c"] + INTERNAL_HEADERS, +- copts = OPUS_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -201,7 +201,7 @@ cc_library( + "silk/x86/VAD_sse4_1.c", + "silk/x86/VQ_WMat_EC_sse4_1.c", + ] + INTERNAL_HEADERS, +- copts = OPUS_COPTS + SSE4_1_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS + SSE4_1_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -219,7 +219,7 @@ cc_library( + "silk/x86/NSQ_del_dec_avx2.c", + "silk/float/x86/inner_product_FLP_avx2.c", + ] + INTERNAL_HEADERS, +- copts = OPUS_COPTS + AVX2_COPTS, ++ copts = OPUS_COPTS + OPUS_X86_STACK_COPTS + AVX2_COPTS, + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -258,7 +258,10 @@ cc_library( + "celt/mathops.c", + ], +- copts = OPUS_COPTS, ++ copts = OPUS_COPTS + select({ ++ "@platforms//cpu:x86_64": OPUS_X86_STACK_COPTS, ++ "//conditions:default": [], ++ }), + includes = OPUS_INCLUDES, + deps = [ + ":config", +@@ -373,7 +376,10 @@ cc_library( + "silk/float/schur_FLP.c", + "silk/float/sort_FLP.c", + ] + glob(["silk/**/*.h"]), +- copts = OPUS_COPTS, ++ copts = OPUS_COPTS + select({ ++ "@platforms//cpu:x86_64": OPUS_X86_STACK_COPTS, ++ "//conditions:default": [], ++ }), + includes = OPUS_INCLUDES, + deps = [ + ":celt", +@@ -419,7 +425,10 @@ cc_library( + "src/mlp_data.c", + ] + glob(["src/*.h"]), +- copts = OPUS_COPTS, ++ copts = OPUS_COPTS + select({ ++ "@platforms//cpu:x86_64": OPUS_X86_STACK_COPTS, ++ "//conditions:default": [], ++ }), + includes = ["include"], + deps = [ + ":celt", +--- a/overlay/defs.bzl ++++ b/overlay/defs.bzl +@@ -1,4 +1,9 @@ +-OPUS_COPTS = ["-std=gnu99"] ++OPUS_COPTS = [ ++ "-fno-stack-protector", ++ "-std=gnu99", ++] ++ ++OPUS_X86_STACK_COPTS = ["-mno-stack-arg-probe"] + + OPUS_INCLUDES = [ + "include",