Skip to content
Open
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
22 changes: 20 additions & 2 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 = "10fd9147eaaa8f2b829bc9b1d50213159415a9c8", # 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 Expand Up @@ -96,7 +104,12 @@ toolchains_qnx.sdp(
)
use_repo(toolchains_qnx, "toolchains_qnx_ifs")

bazel_dep(name = "toolchains_llvm", version = "1.5.0", dev_dependency = True)
bazel_dep(name = "toolchains_llvm", version = "1.7.0", dev_dependency = True)
git_override(
module_name = "toolchains_llvm",
commit = "576a587e4542733166ac1c3c4fb14c79c421332c",
remote = "https://github.com/bazel-contrib/toolchains_llvm",
)

llvm = use_extension(
"@toolchains_llvm//toolchain/extensions:llvm.bzl",
Expand All @@ -118,12 +131,17 @@ llvm.toolchain(
"-Wthread-safety",
]},
cxx_standard = {"": "c++17"},
extra_known_features = [
"@score_cpp_policies//sanitizers/features:asan_ubsan_lsan_link",
"@score_cpp_policies//sanitizers/features:tsan_link",
],
link_libs = {"": [
"-lrt",
# This is the agreed way to ensure linking for targets using std::atomic operations.
"-latomic",
]},
llvm_version = "19.1.7",
stdlib = {"": "stdc++"},
)
use_repo(llvm, "llvm_toolchain")

Expand Down Expand Up @@ -170,7 +188,7 @@ download_file(
urls = ["https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/master-2da3e7b/clang-format-19_linux-amd64"],
)

bazel_dep(name = "rules_cc", version = "0.1.5")
bazel_dep(name = "rules_cc", version = "0.2.17")

bazel_dep(name = "aspect_rules_lint", version = "2.2.0", dev_dependency = True)
bazel_dep(name = "googletest", version = "1.17.0.bcr.2", 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 @@ -167,7 +167,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"],
)

_extend_list_in_kwargs_without_duplicates(
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.

40 changes: 19 additions & 21 deletions quality/sanitizer/sanitizer.bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,33 @@
# 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
Comment on lines +18 to 20
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should also go to the central cc_feature.
Without this sanitizer outputs are without symbol resolution. Debugging is then nearly impossible.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


# ASan + UBSan + LSan (Combined)
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
test:asan_ubsan_lsan --features=asan_ubsan_lsan_link
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 --@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:ubsan --config=asan_ubsan_lsan
build:lsan --config=asan_ubsan_lsan

# ThreadSanitizer
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
test:tsan --features=tsan_link
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 --@score_cpp_policies//sanitizers/flags:sanitizer=tsan
test:tsan --run_under=@score_cpp_policies//sanitizers:wrapper
Loading
Loading