From 7a86fe025d7a061b246aa8ca3d801784d78070e3 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Thu, 2 Jul 2026 08:48:05 -0700 Subject: [PATCH 1/4] Make sanitizer builds respect -c for -g* Previously for `--features=asan` you got `-gline-tables-only`. This isn't ideal if you actually want to debug the sanitized code. Now it respects `--compilation_mode` so with `-c dbg` you get `-g` and with `-c fastbuild` you get `-gline-tables-only`. This is a tiny bit weird because we don't pass any `-g` for `fastbuild` normally. Fixes https://github.com/bazelbuild/apple_support/issues/613 --- crosstool/cc_toolchain_config.bzl | 15 ++++++++++++++- toolchain/BUILD | 3 +++ toolchain/sanitizers/BUILD | 13 +++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/crosstool/cc_toolchain_config.bzl b/crosstool/cc_toolchain_config.bzl index 93543213..a7c0901d 100644 --- a/crosstool/cc_toolchain_config.bzl +++ b/crosstool/cc_toolchain_config.bzl @@ -2156,7 +2156,6 @@ please file an issue at https://github.com/bazelbuild/apple_support/issues/new flag_groups = [ flag_group( flags = [ - "-gline-tables-only", "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], @@ -2168,6 +2167,20 @@ please file an issue at https://github.com/bazelbuild/apple_support/issues/new with_feature_set(features = ["ubsan"]), ], ), + flag_set( + actions = [ + ACTION_NAMES.c_compile, + ACTION_NAMES.cpp_compile, + ACTION_NAMES.objc_compile, + ACTION_NAMES.objcpp_compile, + ], + flag_groups = [flag_group(flags = ["-gline-tables-only"])], + with_features = [ + with_feature_set(features = ["asan", "fastbuild"]), + with_feature_set(features = ["tsan", "fastbuild"]), + with_feature_set(features = ["ubsan", "fastbuild"]), + ], + ), ], ) diff --git a/toolchain/BUILD b/toolchain/BUILD index a42de845..44778086 100644 --- a/toolchain/BUILD +++ b/toolchain/BUILD @@ -73,16 +73,19 @@ _LIMITED_COMPILE_ACTIONS = [ cc_feature( name = "dbg", overrides = "@rules_cc//cc/toolchains/features:dbg", + visibility = ["//visibility:public"], ) cc_feature( name = "fastbuild", overrides = "@rules_cc//cc/toolchains/features:fastbuild", + visibility = ["//visibility:public"], ) cc_feature( name = "opt", overrides = "@rules_cc//cc/toolchains/features:opt", + visibility = ["//visibility:public"], ) cc_feature( diff --git a/toolchain/sanitizers/BUILD b/toolchain/sanitizers/BUILD index 3090cd25..e7993d1b 100644 --- a/toolchain/sanitizers/BUILD +++ b/toolchain/sanitizers/BUILD @@ -44,7 +44,10 @@ enableable_feature( cc_feature( name = "default_sanitizer_flags", - args = [":default_sanitizer_flags_args"], + args = [ + ":default_sanitizer_fastbuild_flags_args", + ":default_sanitizer_flags_args", + ], feature_name = "default_sanitizer_flags", requires_any_of = [ ":asan", @@ -53,11 +56,17 @@ cc_feature( ], ) +cc_args( + name = "default_sanitizer_fastbuild_flags_args", + actions = _LIMITED_COMPILE_ACTIONS, + args = ["-gline-tables-only"], + requires_any_of = ["//toolchain:fastbuild"], +) + cc_args( name = "default_sanitizer_flags_args", actions = _LIMITED_COMPILE_ACTIONS, args = [ - "-gline-tables-only", "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], From d3fd79d8413e17b7be577f2487c91c077a6fa6cd Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Thu, 2 Jul 2026 08:50:47 -0700 Subject: [PATCH 2/4] tests --- test/sanitizer_tests.bzl | 104 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/test/sanitizer_tests.bzl b/test/sanitizer_tests.bzl index 11f2df6d..e38b6fbb 100644 --- a/test/sanitizer_tests.bzl +++ b/test/sanitizer_tests.bzl @@ -9,18 +9,42 @@ default_test = make_action_command_line_test_rule() asan_test = make_action_command_line_test_rule( config_settings = { + "//command_line_option:compilation_mode": "fastbuild", + "//command_line_option:features": ["asan"], + }, +) + +asan_dbg_test = make_action_command_line_test_rule( + config_settings = { + "//command_line_option:compilation_mode": "dbg", "//command_line_option:features": ["asan"], }, ) tsan_test = make_action_command_line_test_rule( config_settings = { + "//command_line_option:compilation_mode": "fastbuild", + "//command_line_option:features": ["tsan"], + }, +) + +tsan_dbg_test = make_action_command_line_test_rule( + config_settings = { + "//command_line_option:compilation_mode": "dbg", "//command_line_option:features": ["tsan"], }, ) ubsan_test = make_action_command_line_test_rule( config_settings = { + "//command_line_option:compilation_mode": "fastbuild", + "//command_line_option:features": ["ubsan"], + }, +) + +ubsan_dbg_test = make_action_command_line_test_rule( + config_settings = { + "//command_line_option:compilation_mode": "dbg", "//command_line_option:features": ["ubsan"], }, ) @@ -60,6 +84,28 @@ def sanitizer_test_suite(name): ], not_expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-g", + "-g0", + ], + mnemonic = "CppCompile", + target_under_test = "//test/test_data:cc_main", + ) + + asan_dbg_test( + name = "{}_asan_dbg_cc_compile_test".format(name), + tags = [name], + expected_argv = [ + "-O0", + "-DDEBUG", + "-g", + "-fsanitize=address", + "-fno-omit-frame-pointer", + "-fno-sanitize-recover=all", + ], + not_expected_argv = [ + "-D_FORTIFY_SOURCE=1", + "-gline-tables-only", + "-g0", ], mnemonic = "CppCompile", target_under_test = "//test/test_data:cc_main", @@ -76,6 +122,8 @@ def sanitizer_test_suite(name): ], not_expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-g", + "-g0", ], mnemonic = "ObjcCompile", target_under_test = "//test/test_data:objc_lib", @@ -111,6 +159,30 @@ def sanitizer_test_suite(name): "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], + not_expected_argv = [ + "-g", + "-g0", + ], + mnemonic = "CppCompile", + target_under_test = "//test/test_data:cc_main", + ) + + tsan_dbg_test( + name = "{}_tsan_dbg_cc_compile_test".format(name), + tags = [name], + expected_argv = [ + "-D_FORTIFY_SOURCE=1", + "-O0", + "-DDEBUG", + "-g", + "-fsanitize=thread", + "-fno-omit-frame-pointer", + "-fno-sanitize-recover=all", + ], + not_expected_argv = [ + "-gline-tables-only", + "-g0", + ], mnemonic = "CppCompile", target_under_test = "//test/test_data:cc_main", ) @@ -125,6 +197,10 @@ def sanitizer_test_suite(name): "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], + not_expected_argv = [ + "-g", + "-g0", + ], mnemonic = "ObjcCompile", target_under_test = "//test/test_data:objc_lib", ) @@ -159,6 +235,30 @@ def sanitizer_test_suite(name): "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], + not_expected_argv = [ + "-g", + "-g0", + ], + mnemonic = "CppCompile", + target_under_test = "//test/test_data:cc_main", + ) + + ubsan_dbg_test( + name = "{}_ubsan_dbg_cc_compile_test".format(name), + tags = [name], + expected_argv = [ + "-D_FORTIFY_SOURCE=1", + "-O0", + "-DDEBUG", + "-g", + "-fsanitize=undefined", + "-fno-omit-frame-pointer", + "-fno-sanitize-recover=all", + ], + not_expected_argv = [ + "-gline-tables-only", + "-g0", + ], mnemonic = "CppCompile", target_under_test = "//test/test_data:cc_main", ) @@ -173,6 +273,10 @@ def sanitizer_test_suite(name): "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], + not_expected_argv = [ + "-g", + "-g0", + ], mnemonic = "ObjcCompile", target_under_test = "//test/test_data:objc_lib", ) From a3643e84b3f524cb6488ded8ec37ec9192649b7c Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Thu, 2 Jul 2026 08:50:53 -0700 Subject: [PATCH 3/4] fixtures --- .../toolchain_configs/darwin_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/darwin_arm64e.json | 34 ++++++++++++++++++- .../toolchain_configs/darwin_x86_64.json | 34 ++++++++++++++++++- .../toolchain_configs/ios_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/ios_arm64e.json | 34 ++++++++++++++++++- .../toolchain_configs/ios_sim_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/ios_x86_64.json | 34 ++++++++++++++++++- .../toolchain_configs/tvos_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/tvos_sim_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/tvos_x86_64.json | 34 ++++++++++++++++++- .../toolchain_configs/visionos_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/visionos_sim_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/watchos_arm64.json | 34 ++++++++++++++++++- .../toolchain_configs/watchos_arm64_32.json | 34 ++++++++++++++++++- .../watchos_device_arm64.json | 34 ++++++++++++++++++- .../watchos_device_arm64e.json | 34 ++++++++++++++++++- .../toolchain_configs/watchos_x86_64.json | 34 ++++++++++++++++++- 17 files changed, 561 insertions(+), 17 deletions(-) diff --git a/test/test_data/toolchain_configs/darwin_arm64.json b/test/test_data/toolchain_configs/darwin_arm64.json index e8f3f326..b3b6744f 100644 --- a/test/test_data/toolchain_configs/darwin_arm64.json +++ b/test/test_data/toolchain_configs/darwin_arm64.json @@ -4678,7 +4678,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/darwin_arm64e.json b/test/test_data/toolchain_configs/darwin_arm64e.json index fd63faea..2c01097d 100644 --- a/test/test_data/toolchain_configs/darwin_arm64e.json +++ b/test/test_data/toolchain_configs/darwin_arm64e.json @@ -4682,7 +4682,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/darwin_x86_64.json b/test/test_data/toolchain_configs/darwin_x86_64.json index 012c062d..4f40df96 100644 --- a/test/test_data/toolchain_configs/darwin_x86_64.json +++ b/test/test_data/toolchain_configs/darwin_x86_64.json @@ -4682,7 +4682,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/ios_arm64.json b/test/test_data/toolchain_configs/ios_arm64.json index 18d23d4a..171fb938 100644 --- a/test/test_data/toolchain_configs/ios_arm64.json +++ b/test/test_data/toolchain_configs/ios_arm64.json @@ -4658,7 +4658,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/ios_arm64e.json b/test/test_data/toolchain_configs/ios_arm64e.json index 64fe92be..d1489865 100644 --- a/test/test_data/toolchain_configs/ios_arm64e.json +++ b/test/test_data/toolchain_configs/ios_arm64e.json @@ -4658,7 +4658,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/ios_sim_arm64.json b/test/test_data/toolchain_configs/ios_sim_arm64.json index 4cb734d5..39a9da17 100644 --- a/test/test_data/toolchain_configs/ios_sim_arm64.json +++ b/test/test_data/toolchain_configs/ios_sim_arm64.json @@ -4685,7 +4685,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/ios_x86_64.json b/test/test_data/toolchain_configs/ios_x86_64.json index e5b1a49a..8c429a79 100644 --- a/test/test_data/toolchain_configs/ios_x86_64.json +++ b/test/test_data/toolchain_configs/ios_x86_64.json @@ -4685,7 +4685,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/tvos_arm64.json b/test/test_data/toolchain_configs/tvos_arm64.json index 4eeca169..07f26158 100644 --- a/test/test_data/toolchain_configs/tvos_arm64.json +++ b/test/test_data/toolchain_configs/tvos_arm64.json @@ -4632,7 +4632,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/tvos_sim_arm64.json b/test/test_data/toolchain_configs/tvos_sim_arm64.json index 27e108a7..0d2aaacc 100644 --- a/test/test_data/toolchain_configs/tvos_sim_arm64.json +++ b/test/test_data/toolchain_configs/tvos_sim_arm64.json @@ -4659,7 +4659,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/tvos_x86_64.json b/test/test_data/toolchain_configs/tvos_x86_64.json index a571b7e7..b9d67ad7 100644 --- a/test/test_data/toolchain_configs/tvos_x86_64.json +++ b/test/test_data/toolchain_configs/tvos_x86_64.json @@ -4659,7 +4659,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/visionos_arm64.json b/test/test_data/toolchain_configs/visionos_arm64.json index 8800a45f..3ea85c63 100644 --- a/test/test_data/toolchain_configs/visionos_arm64.json +++ b/test/test_data/toolchain_configs/visionos_arm64.json @@ -4631,7 +4631,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/visionos_sim_arm64.json b/test/test_data/toolchain_configs/visionos_sim_arm64.json index 22144b8d..393acd47 100644 --- a/test/test_data/toolchain_configs/visionos_sim_arm64.json +++ b/test/test_data/toolchain_configs/visionos_sim_arm64.json @@ -4658,7 +4658,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/watchos_arm64.json b/test/test_data/toolchain_configs/watchos_arm64.json index adfe59f0..93d8d419 100644 --- a/test/test_data/toolchain_configs/watchos_arm64.json +++ b/test/test_data/toolchain_configs/watchos_arm64.json @@ -4659,7 +4659,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/watchos_arm64_32.json b/test/test_data/toolchain_configs/watchos_arm64_32.json index 20ca2fc0..09a726fc 100644 --- a/test/test_data/toolchain_configs/watchos_arm64_32.json +++ b/test/test_data/toolchain_configs/watchos_arm64_32.json @@ -4632,7 +4632,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/watchos_device_arm64.json b/test/test_data/toolchain_configs/watchos_device_arm64.json index 9a39c1d9..04150c76 100644 --- a/test/test_data/toolchain_configs/watchos_device_arm64.json +++ b/test/test_data/toolchain_configs/watchos_device_arm64.json @@ -4632,7 +4632,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/watchos_device_arm64e.json b/test/test_data/toolchain_configs/watchos_device_arm64e.json index 72bb81cc..d1a703c4 100644 --- a/test/test_data/toolchain_configs/watchos_device_arm64e.json +++ b/test/test_data/toolchain_configs/watchos_device_arm64e.json @@ -4632,7 +4632,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], diff --git a/test/test_data/toolchain_configs/watchos_x86_64.json b/test/test_data/toolchain_configs/watchos_x86_64.json index 9b9e7041..bbaee12f 100644 --- a/test/test_data/toolchain_configs/watchos_x86_64.json +++ b/test/test_data/toolchain_configs/watchos_x86_64.json @@ -4659,7 +4659,39 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-gline-tables-only", + "-gline-tables-only" + ], + "iterate_over": null, + "type_name": "flag_group" + } + ], + "type_name": "flag_set", + "with_features": [ + { + "features": [ + "fastbuild" + ], + "not_features": [], + "type_name": "with_feature_set" + } + ] + }, + { + "actions": [ + "c++-compile", + "c-compile", + "objc++-compile", + "objc-compile" + ], + "flag_groups": [ + { + "expand_if_available": null, + "expand_if_equal": null, + "expand_if_false": null, + "expand_if_not_available": null, + "expand_if_true": null, + "flag_groups": [], + "flags": [ "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], From c364498a5975428c1bd3f19993e66cb5922b13a0 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Thu, 2 Jul 2026 17:23:22 -0700 Subject: [PATCH 4/4] fix dup flag --- crosstool/cc_toolchain_config.bzl | 23 +++++++------------ test/sanitizer_tests.bzl | 18 +++++++-------- .../toolchain_configs/darwin_arm64.json | 1 - .../toolchain_configs/darwin_arm64e.json | 1 - .../toolchain_configs/darwin_x86_64.json | 1 - .../toolchain_configs/ios_arm64.json | 1 - .../toolchain_configs/ios_arm64e.json | 1 - .../toolchain_configs/ios_sim_arm64.json | 1 - .../toolchain_configs/ios_x86_64.json | 1 - .../toolchain_configs/tvos_arm64.json | 1 - .../toolchain_configs/tvos_sim_arm64.json | 1 - .../toolchain_configs/tvos_x86_64.json | 1 - .../toolchain_configs/visionos_arm64.json | 1 - .../toolchain_configs/visionos_sim_arm64.json | 1 - .../toolchain_configs/watchos_arm64.json | 1 - .../toolchain_configs/watchos_arm64_32.json | 1 - .../watchos_device_arm64.json | 1 - .../watchos_device_arm64e.json | 1 - .../toolchain_configs/watchos_x86_64.json | 1 - toolchain/sanitizers/BUILD | 1 - 20 files changed, 17 insertions(+), 42 deletions(-) diff --git a/crosstool/cc_toolchain_config.bzl b/crosstool/cc_toolchain_config.bzl index a7c0901d..e9162281 100644 --- a/crosstool/cc_toolchain_config.bzl +++ b/crosstool/cc_toolchain_config.bzl @@ -2153,18 +2153,11 @@ please file an issue at https://github.com/bazelbuild/apple_support/issues/new ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile, ], - flag_groups = [ - flag_group( - flags = [ - "-fno-omit-frame-pointer", - "-fno-sanitize-recover=all", - ], - ), - ], + flag_groups = [flag_group(flags = ["-gline-tables-only"])], with_features = [ - with_feature_set(features = ["asan"]), - with_feature_set(features = ["tsan"]), - with_feature_set(features = ["ubsan"]), + with_feature_set(features = ["asan", "fastbuild"]), + with_feature_set(features = ["tsan", "fastbuild"]), + with_feature_set(features = ["ubsan", "fastbuild"]), ], ), flag_set( @@ -2174,11 +2167,11 @@ please file an issue at https://github.com/bazelbuild/apple_support/issues/new ACTION_NAMES.objc_compile, ACTION_NAMES.objcpp_compile, ], - flag_groups = [flag_group(flags = ["-gline-tables-only"])], + flag_groups = [flag_group(flags = ["-fno-sanitize-recover=all"])], with_features = [ - with_feature_set(features = ["asan", "fastbuild"]), - with_feature_set(features = ["tsan", "fastbuild"]), - with_feature_set(features = ["ubsan", "fastbuild"]), + with_feature_set(features = ["asan"]), + with_feature_set(features = ["tsan"]), + with_feature_set(features = ["ubsan"]), ], ), ], diff --git a/test/sanitizer_tests.bzl b/test/sanitizer_tests.bzl index e38b6fbb..6fc1eab6 100644 --- a/test/sanitizer_tests.bzl +++ b/test/sanitizer_tests.bzl @@ -77,9 +77,9 @@ def sanitizer_test_suite(name): name = "{}_asan_cc_compile_test".format(name), tags = [name], expected_argv = [ + "-fno-omit-frame-pointer", "-fsanitize=address", "-gline-tables-only", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -95,11 +95,11 @@ def sanitizer_test_suite(name): name = "{}_asan_dbg_cc_compile_test".format(name), tags = [name], expected_argv = [ + "-fno-omit-frame-pointer", "-O0", "-DDEBUG", "-g", "-fsanitize=address", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -115,9 +115,9 @@ def sanitizer_test_suite(name): name = "{}_asan_objc_compile_test".format(name), tags = [name], expected_argv = [ + "-fno-omit-frame-pointer", "-fsanitize=address", "-gline-tables-only", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -154,9 +154,9 @@ def sanitizer_test_suite(name): tags = [name], expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-fno-omit-frame-pointer", "-fsanitize=thread", "-gline-tables-only", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -172,11 +172,11 @@ def sanitizer_test_suite(name): tags = [name], expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-fno-omit-frame-pointer", "-O0", "-DDEBUG", "-g", "-fsanitize=thread", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -192,9 +192,9 @@ def sanitizer_test_suite(name): tags = [name], expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-fno-omit-frame-pointer", "-fsanitize=thread", "-gline-tables-only", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -230,9 +230,9 @@ def sanitizer_test_suite(name): tags = [name], expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-fno-omit-frame-pointer", "-fsanitize=undefined", "-gline-tables-only", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -248,11 +248,11 @@ def sanitizer_test_suite(name): tags = [name], expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-fno-omit-frame-pointer", "-O0", "-DDEBUG", "-g", "-fsanitize=undefined", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ @@ -268,9 +268,9 @@ def sanitizer_test_suite(name): tags = [name], expected_argv = [ "-D_FORTIFY_SOURCE=1", + "-fno-omit-frame-pointer", "-fsanitize=undefined", "-gline-tables-only", - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], not_expected_argv = [ diff --git a/test/test_data/toolchain_configs/darwin_arm64.json b/test/test_data/toolchain_configs/darwin_arm64.json index b3b6744f..47a04355 100644 --- a/test/test_data/toolchain_configs/darwin_arm64.json +++ b/test/test_data/toolchain_configs/darwin_arm64.json @@ -4711,7 +4711,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/darwin_arm64e.json b/test/test_data/toolchain_configs/darwin_arm64e.json index 2c01097d..b266491b 100644 --- a/test/test_data/toolchain_configs/darwin_arm64e.json +++ b/test/test_data/toolchain_configs/darwin_arm64e.json @@ -4715,7 +4715,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/darwin_x86_64.json b/test/test_data/toolchain_configs/darwin_x86_64.json index 4f40df96..39810aaf 100644 --- a/test/test_data/toolchain_configs/darwin_x86_64.json +++ b/test/test_data/toolchain_configs/darwin_x86_64.json @@ -4715,7 +4715,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/ios_arm64.json b/test/test_data/toolchain_configs/ios_arm64.json index 171fb938..82fb9f21 100644 --- a/test/test_data/toolchain_configs/ios_arm64.json +++ b/test/test_data/toolchain_configs/ios_arm64.json @@ -4691,7 +4691,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/ios_arm64e.json b/test/test_data/toolchain_configs/ios_arm64e.json index d1489865..9880a217 100644 --- a/test/test_data/toolchain_configs/ios_arm64e.json +++ b/test/test_data/toolchain_configs/ios_arm64e.json @@ -4691,7 +4691,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/ios_sim_arm64.json b/test/test_data/toolchain_configs/ios_sim_arm64.json index 39a9da17..5a159f0c 100644 --- a/test/test_data/toolchain_configs/ios_sim_arm64.json +++ b/test/test_data/toolchain_configs/ios_sim_arm64.json @@ -4718,7 +4718,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/ios_x86_64.json b/test/test_data/toolchain_configs/ios_x86_64.json index 8c429a79..76c59b43 100644 --- a/test/test_data/toolchain_configs/ios_x86_64.json +++ b/test/test_data/toolchain_configs/ios_x86_64.json @@ -4718,7 +4718,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/tvos_arm64.json b/test/test_data/toolchain_configs/tvos_arm64.json index 07f26158..d570a2a6 100644 --- a/test/test_data/toolchain_configs/tvos_arm64.json +++ b/test/test_data/toolchain_configs/tvos_arm64.json @@ -4665,7 +4665,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/tvos_sim_arm64.json b/test/test_data/toolchain_configs/tvos_sim_arm64.json index 0d2aaacc..6e5a01c7 100644 --- a/test/test_data/toolchain_configs/tvos_sim_arm64.json +++ b/test/test_data/toolchain_configs/tvos_sim_arm64.json @@ -4692,7 +4692,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/tvos_x86_64.json b/test/test_data/toolchain_configs/tvos_x86_64.json index b9d67ad7..40212a80 100644 --- a/test/test_data/toolchain_configs/tvos_x86_64.json +++ b/test/test_data/toolchain_configs/tvos_x86_64.json @@ -4692,7 +4692,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/visionos_arm64.json b/test/test_data/toolchain_configs/visionos_arm64.json index 3ea85c63..66aac769 100644 --- a/test/test_data/toolchain_configs/visionos_arm64.json +++ b/test/test_data/toolchain_configs/visionos_arm64.json @@ -4664,7 +4664,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/visionos_sim_arm64.json b/test/test_data/toolchain_configs/visionos_sim_arm64.json index 393acd47..b1ea672f 100644 --- a/test/test_data/toolchain_configs/visionos_sim_arm64.json +++ b/test/test_data/toolchain_configs/visionos_sim_arm64.json @@ -4691,7 +4691,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/watchos_arm64.json b/test/test_data/toolchain_configs/watchos_arm64.json index 93d8d419..8ff12a49 100644 --- a/test/test_data/toolchain_configs/watchos_arm64.json +++ b/test/test_data/toolchain_configs/watchos_arm64.json @@ -4692,7 +4692,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/watchos_arm64_32.json b/test/test_data/toolchain_configs/watchos_arm64_32.json index 09a726fc..b0fe77c1 100644 --- a/test/test_data/toolchain_configs/watchos_arm64_32.json +++ b/test/test_data/toolchain_configs/watchos_arm64_32.json @@ -4665,7 +4665,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/watchos_device_arm64.json b/test/test_data/toolchain_configs/watchos_device_arm64.json index 04150c76..962c12e3 100644 --- a/test/test_data/toolchain_configs/watchos_device_arm64.json +++ b/test/test_data/toolchain_configs/watchos_device_arm64.json @@ -4665,7 +4665,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/watchos_device_arm64e.json b/test/test_data/toolchain_configs/watchos_device_arm64e.json index d1a703c4..8ac7194b 100644 --- a/test/test_data/toolchain_configs/watchos_device_arm64e.json +++ b/test/test_data/toolchain_configs/watchos_device_arm64e.json @@ -4665,7 +4665,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/test/test_data/toolchain_configs/watchos_x86_64.json b/test/test_data/toolchain_configs/watchos_x86_64.json index bbaee12f..040216f4 100644 --- a/test/test_data/toolchain_configs/watchos_x86_64.json +++ b/test/test_data/toolchain_configs/watchos_x86_64.json @@ -4692,7 +4692,6 @@ "expand_if_true": null, "flag_groups": [], "flags": [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all" ], "iterate_over": null, diff --git a/toolchain/sanitizers/BUILD b/toolchain/sanitizers/BUILD index e7993d1b..abcfb798 100644 --- a/toolchain/sanitizers/BUILD +++ b/toolchain/sanitizers/BUILD @@ -67,7 +67,6 @@ cc_args( name = "default_sanitizer_flags_args", actions = _LIMITED_COMPILE_ACTIONS, args = [ - "-fno-omit-frame-pointer", "-fno-sanitize-recover=all", ], )