Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,11 @@ test:clang-tidy --output_groups=+rules_lint_report
test:clang-tidy --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
test:clang-tidy --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain

# ==============================================================================
# Sanitizer Configurations
# ==============================================================================
import quality/sanitizer/sanitizer.bazelrc
# ==============================================================================

common:codeql --platform_suffix=codeql
common:codeql --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
Expand Down
8 changes: 8 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ module(name = "score_communication")

bazel_dep(name = "platforms", version = "1.0.0")

# Centralized sanitizer policies (ASan, TSan, UBSan, LSan)
bazel_dep(name = "score_cpp_policies", version = "0.0.0", dev_dependency = True)
git_override(
module_name = "score_cpp_policies",
commit = "07a78d6", # tip of rs/swp-245137 branch
remote = "https://github.com/RSingh1511/score_cpp_policies.git",
)

bazel_dep(name = "gcc_toolchain", version = "0.9.0", dev_dependency = True)

gcc_toolchains = use_extension("@gcc_toolchain//toolchain:module_extensions.bzl", "gcc_toolchains", dev_dependency = True)
Expand Down
10 changes: 5 additions & 5 deletions quality/integration_testing/integration_testing.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@ def integration_test(name, srcs, filesystem, **kwargs):
}),
os = "linux",
env = select({
"//quality/sanitizer/flags:none": None,
"//quality/sanitizer/flags:any_sanitizer": "//quality/sanitizer:absolute_env",
"@score_cpp_policies//sanitizers/flags:none": None,
"@score_cpp_policies//sanitizers/flags:any_sanitizer": "@score_cpp_policies//sanitizers:absolute_env",
}),
tars = [
filesystem,
] + select({
"//quality/sanitizer/flags:none": [],
"//quality/sanitizer/flags:any_sanitizer": ["//quality/sanitizer:suppressions_pkg"],
"@score_cpp_policies//sanitizers/flags:none": [],
"@score_cpp_policies//sanitizers/flags:any_sanitizer": ["//quality/integration_testing/sanitizer_support:suppressions_pkg"],
}) + [
"@ubuntu24_04//:ubuntu24_04",
],
Expand Down Expand Up @@ -166,7 +166,7 @@ def integration_test(name, srcs, filesystem, **kwargs):
_extend_list_in_kwargs_without_duplicates(
kwargs,
"target_compatible_with",
["//quality/sanitizer/constraints:no_tsan"],
["@score_cpp_policies//sanitizers/constraints:no_tsan"],
)

test_as_exec(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# *******************************************************************************
# Copyright (c) 2025 Contributors to the Eclipse Foundation
# Copyright (c) 2026 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
Expand All @@ -11,17 +11,15 @@
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

cc_test(
name = "asan_fail_heap_out_of_bounds",
srcs = ["asan_fail_heap_out_of_bounds.cpp"],
)

cc_test(
name = "lsan_fail_leak",
srcs = ["lsan_fail_leak.cpp"],
)
load("@rules_pkg//pkg:tar.bzl", "pkg_tar")

cc_test(
name = "tsan_fail_data_race",
srcs = ["tsan_fail_data_race.cpp"],
pkg_tar(
name = "suppressions_pkg",
srcs = [
"//quality/sanitizer:repo_suppressions",
"@score_cpp_policies//sanitizers:suppressions",
],
mode = "0444",
package_dir = "sanitizers/suppressions",
visibility = ["//visibility:public"],
)
93 changes: 7 additions & 86 deletions quality/sanitizer/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -11,92 +11,13 @@
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

load("@rules_pkg//pkg:tar.bzl", "pkg_tar")
load("//bazel/rules:expand_template.bzl", "expand_template")

sh_test(
name = "sanitizers_functional_test",
srcs = ["sanitizers_functional_test.sh"],
data = [
"sanitizer.bazelrc",
"test_workspace/BUILD.tpl",
"test_workspace/MODULE.bazel",
"test_workspace/asan_fail_heap_out_of_bounds.cpp",
"test_workspace/lsan_fail_leak.cpp",
"test_workspace/tsan_fail_data_race.cpp",
],
env_inherit = [
"PATH",
"http_proxy",
"https_proxy",
],
tags = [
"local", # Test marked local because it uses bazel.
"manual", # Due to long-runtime and local dependencies
],
deps = ["@bazel_tools//tools/bash/runfiles"],
)

filegroup(
name = "env_template",
srcs = select({
"//quality/sanitizer/flags:tsan": ["tsan.env.template"],
"//quality/sanitizer/flags:asan_ubsan_lsan": ["asan_ubsan_lsan.env.template"],
}),
target_compatible_with = ["//quality/sanitizer/constraints:any_sanitizer"],
)

[
expand_template(
name = name + "_env",
out = name + "_sanitizer.env",
substitutions = {
"%ROOT%": root,
},
target_compatible_with = ["//quality/sanitizer/constraints:any_sanitizer"],
template = ":env_template",
visibility = ["//:__subpackages__"],
)
for name, root in (
[
"absolute",
"/",
],
[
"relative",
"./",
],
)
]

filegroup(
name = "suppressions",
srcs = select({
"//quality/sanitizer/flags:tsan": ["tsan.supp"],
"//quality/sanitizer/flags:asan_ubsan_lsan": [
"asan.supp",
"lsan.supp",
"ubsan.supp",
],
}),
target_compatible_with = ["//quality/sanitizer/constraints:any_sanitizer"],
)

pkg_tar(
name = "suppressions_pkg",
srcs = [":suppressions"],
mode = "0444",
package_dir = "quality/sanitizer",
target_compatible_with = ["//quality/sanitizer/constraints:any_sanitizer"],
visibility = ["//:__subpackages__"],
)

sh_binary(
name = "wrapper",
srcs = ["wrapper.sh"],
data = [
":relative_env",
":suppressions",
name = "repo_suppressions",
srcs = [
"asan.supp",
"lsan.supp",
"tsan.supp",
"ubsan.supp",
],
target_compatible_with = ["//quality/sanitizer/constraints:any_sanitizer"],
visibility = ["//quality/integration_testing/sanitizer_support:__pkg__"],
)
3 changes: 0 additions & 3 deletions quality/sanitizer/asan_ubsan_lsan.env.template

This file was deleted.

49 changes: 0 additions & 49 deletions quality/sanitizer/constraints/BUILD

This file was deleted.

51 changes: 0 additions & 51 deletions quality/sanitizer/flags/BUILD

This file was deleted.

60 changes: 35 additions & 25 deletions quality/sanitizer/sanitizer.bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,45 @@
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

# todo: Extract to toolchain feature once possible
# ==============================================================================
# Sanitizer Configurations (adapted from @score_cpp_policies)
# ==============================================================================

test:with_debug_symbols --cxxopt -gline-tables-only
test:with_debug_symbols --cxxopt -gcolumn-info
# Debug symbols for sanitizer stack traces
test:with_debug_symbols --cxxopt=-g1
test:with_debug_symbols --strip=never

test:asan_ubsan_lsan --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
test:asan_ubsan_lsan --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain
# ASan + UBSan + LSan (Combined)
build:asan_ubsan_lsan --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
build:asan_ubsan_lsan --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain
build:asan_ubsan_lsan --features=asan
build:asan_ubsan_lsan --features=ubsan
build:asan_ubsan_lsan --features=lsan
build:asan_ubsan_lsan --linkopt=-fsanitize=undefined,address,leak
build:asan_ubsan_lsan --linkopt=-fsanitize-link-c++-runtime
build:asan_ubsan_lsan --platform_suffix=asan_ubsan_lsan
test:asan_ubsan_lsan --config=with_debug_symbols
test:asan_ubsan_lsan --run_under=//quality/sanitizer:wrapper
test:asan_ubsan_lsan --//quality/sanitizer/flags:sanitizer=asan_ubsan_lsan
test:asan_ubsan_lsan --cxxopt -fsanitize=undefined,address,leak
test:asan_ubsan_lsan --cxxopt -fno-omit-frame-pointer
test:asan_ubsan_lsan --cxxopt -fno-common
test:asan_ubsan_lsan --linkopt -fsanitize=undefined,address,leak
test:asan_ubsan_lsan --linkopt -fsanitize-link-c++-runtime
test:asan_ubsan_lsan --platform_suffix=asan_ubsan
test:asan_ubsan_lsan --test_tag_filters=-no-asan,-no-lsan,-no-ubsan
test:asan_ubsan_lsan --@score_cpp_policies//sanitizers/flags:sanitizer=asan_ubsan_lsan
test:asan_ubsan_lsan --run_under=@score_cpp_policies//sanitizers:wrapper

test:asan --config=asan_ubsan_lsan
test:ubsan --config=asan_ubsan_lsan
test:lsan --config=asan_ubsan_lsan
# Shortcuts for individual sanitizers
build:asan --config=asan_ubsan_lsan
build:asan --test_tag_filters=-no-asan
build:ubsan --config=asan_ubsan_lsan
build:ubsan --test_tag_filters=-no-ubsan
build:lsan --config=asan_ubsan_lsan
build:lsan --test_tag_filters=-no-lsan

test:tsan --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
test:tsan --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain
# ThreadSanitizer
build:tsan --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux
build:tsan --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain
build:tsan --features=tsan
build:tsan --linkopt=-fsanitize=thread
build:tsan --linkopt=-fsanitize-link-c++-runtime
build:tsan --platform_suffix=tsan
test:tsan --config=with_debug_symbols
test:tsan --run_under=//quality/sanitizer:wrapper
test:tsan --//quality/sanitizer/flags:sanitizer=tsan
test:tsan --cxxopt -fsanitize=thread
test:tsan --cxxopt -O1
test:tsan --linkopt -fsanitize=thread
test:tsan --linkopt -fsanitize-link-c++-runtime
test:tsan --platform_suffix=tsan
test:tsan --cxxopt=-O1
test:tsan --test_tag_filters=-no-tsan
test:tsan --@score_cpp_policies//sanitizers/flags:sanitizer=tsan
test:tsan --run_under=@score_cpp_policies//sanitizers:wrapper
Loading
Loading