-fsanitize-blacklist was renamed to -fsanitize-ignorelist in Clang 13.
Fixes #1712.
return Statistic::none;
}
- if (arg.starts_with("-fsanitize-blacklist=")) {
- auto path = std::string_view(args[i]).substr(21);
- args_info.sanitize_blacklists.emplace_back(path);
- auto relpath = core::make_relative_path(ctx, path);
- state.add_common_arg(FMT("-fsanitize-blacklist={}", relpath));
+ if (arg.starts_with("-fsanitize-ignorelist=")
+ || arg.starts_with("-fsanitize-blacklist=")) {
+ auto [option, path] = util::split_once(args[i], '=');
+ DEBUG_ASSERT(path);
+ args_info.sanitize_ignorelists.emplace_back(*path);
+ auto relpath = core::make_relative_path(ctx, *path);
+ state.add_common_arg(FMT("{}={}", option, relpath));
return Statistic::none;
}
// header it generates.
bool fno_pch_timestamp = false;
- // Files referenced by -fsanitize-blacklist options.
- std::vector<std::filesystem::path> sanitize_blacklists;
+ // Files referenced by -fsanitize-ignorelist/-fsanitize-blacklist options.
+ std::vector<std::filesystem::path> sanitize_ignorelists;
// Architectures from -arch options.
std::vector<std::string> arch_args;
hash.hash(gcda_path);
}
- // Possibly hash the sanitize blacklist file path.
- for (const auto& sanitize_blacklist : ctx.args_info.sanitize_blacklists) {
- LOG("Hashing sanitize blacklist {}", sanitize_blacklist);
- hash.hash_delimiter("sanitizeblacklist");
- if (!hash_binary_file(ctx, hash, sanitize_blacklist)) {
+ // Possibly hash the sanitize ignorelist file path.
+ for (const auto& sanitize_ignorelist : ctx.args_info.sanitize_ignorelists) {
+ LOG("Hashing sanitize ignorelist {}", sanitize_ignorelist);
+ hash.hash_delimiter("sanitizeignorelist");
+ if (!hash_binary_file(ctx, hash, sanitize_ignorelist)) {
return tl::unexpected(Statistic::error_hashing_extra_file);
}
}
addtest(remote_redis)
addtest(remote_redis_unix)
addtest(remote_url)
-addtest(sanitize_blacklist)
+addtest(sanitize_ignorelist)
addtest(serialize_diagnostics)
addtest(source_date_epoch)
addtest(split_dwarf)
+++ /dev/null
-SUITE_sanitize_blacklist_PROBE() {
- touch test.c blacklist.txt
- if ! $COMPILER -c -fsanitize-blacklist=blacklist.txt \
- test.c 2>/dev/null; then
- echo "-fsanitize-blacklist not supported by compiler"
- fi
-}
-
-SUITE_sanitize_blacklist_SETUP() {
- generate_code 2 test1.c
- echo "fun:foo" >blacklist.txt
- echo "fun_1:foo" >blacklist2.txt
-
- mkdir -p dir1/ dir2/
- cp blacklist.txt dir1/blacklist.txt
- cp blacklist.txt dir2/blacklist.txt
-
- unset CCACHE_NODIRECT
-}
-
-SUITE_sanitize_blacklist() {
- # -------------------------------------------------------------------------
- TEST "Compile OK"
-
- $COMPILER -c -fsanitize-blacklist=blacklist.txt test1.c
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 0
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 1
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- echo "fun:bar" >blacklist.txt
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 1
- expect_stat cache_miss 2
- expect_stat files_in_cache 4
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 2
- expect_stat cache_miss 2
- expect_stat files_in_cache 4
-
- # -------------------------------------------------------------------------
- TEST "base_dir OK"
-
- basedir1="$(pwd)/dir1"
- basedir2="$(pwd)/dir2"
-
- basedir=$basedir1
- cd $basedir
-
- $COMPILER -c -fsanitize-blacklist=blacklist.txt ../test1.c
-
- CCACHE_BASEDIR="${basedir}" $CCACHE_COMPILE -c -fsanitize-blacklist=$basedir/blacklist.txt ../test1.c
- expect_stat direct_cache_hit 0
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- CCACHE_BASEDIR="${basedir}" $CCACHE_COMPILE -c -fsanitize-blacklist=$basedir/blacklist.txt ../test1.c
- expect_stat direct_cache_hit 1
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- basedir=$basedir2
- cd $basedir
-
- CCACHE_DEBUG=1 CCACHE_BASEDIR="${basedir}" $CCACHE_COMPILE -c -fsanitize-blacklist=$basedir/blacklist.txt ../test1.c
- expect_stat direct_cache_hit 2
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- # -------------------------------------------------------------------------
- TEST "Unsuccessful compilation"
-
- if $COMPILER -c -fsanitize-blacklist=nosuchfile.txt test1.c 2>expected.stderr; then
- test_failed "Expected an error compiling test1.c"
- fi
-
- rm blacklist.txt
-
- if $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist.txt test1.c 2>expected.stderr; then
- test_failed "Expected an error compiling test1.c"
- fi
-
- expect_stat error_hashing_extra_file 1
-
- # -------------------------------------------------------------------------
- TEST "Multiple -fsanitize-blacklist"
-
- $COMPILER -c -fsanitize-blacklist=blacklist2.txt -fsanitize-blacklist=blacklist.txt test1.c
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist2.txt -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 0
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist2.txt -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 1
- expect_stat cache_miss 1
- expect_stat files_in_cache 2
-
- echo "fun_2:foo" >blacklist2.txt
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist2.txt -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 1
- expect_stat cache_miss 2
- expect_stat files_in_cache 4
-
- $CCACHE_COMPILE -c -fsanitize-blacklist=blacklist2.txt -fsanitize-blacklist=blacklist.txt test1.c
- expect_stat direct_cache_hit 2
- expect_stat cache_miss 2
- expect_stat files_in_cache 4
-}
--- /dev/null
+SUITE_sanitize_ignorelist_PROBE() {
+ touch test.c ignorelist.txt
+ if ! $COMPILER -c -fsanitize-ignorelist=ignorelist.txt \
+ test.c 2>/dev/null; then
+ echo "-fsanitize-ignorelist not supported by compiler"
+ fi
+}
+
+SUITE_sanitize_ignorelist_SETUP() {
+ generate_code 2 test1.c
+ echo "fun:foo" >ignorelist.txt
+ echo "fun_1:foo" >ignorelist2.txt
+
+ mkdir -p dir1/ dir2/
+ cp ignorelist.txt dir1/ignorelist.txt
+ cp ignorelist.txt dir2/ignorelist.txt
+
+ unset CCACHE_NODIRECT
+}
+
+SUITE_sanitize_ignorelist() {
+ # -------------------------------------------------------------------------
+ TEST "Compile OK, -fsanitize-ignorelist"
+
+ $COMPILER -c -fsanitize-ignorelist=ignorelist.txt test1.c
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 0
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ echo "fun:bar" >ignorelist.txt
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 2
+ expect_stat files_in_cache 4
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 2
+ expect_stat cache_miss 2
+ expect_stat files_in_cache 4
+
+ # -------------------------------------------------------------------------
+ TEST "Compile OK, -fsanitize-blacklist"
+
+ $COMPILER -c -fsanitize-blacklist=ignorelist.txt test1.c
+
+ $CCACHE_COMPILE -c -fsanitize-blacklist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 0
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ $CCACHE_COMPILE -c -fsanitize-blacklist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ echo "fun:bar" >ignorelist.txt
+
+ $CCACHE_COMPILE -c -fsanitize-blacklist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 2
+ expect_stat files_in_cache 4
+
+ $CCACHE_COMPILE -c -fsanitize-blacklist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 2
+ expect_stat cache_miss 2
+ expect_stat files_in_cache 4
+
+ # -------------------------------------------------------------------------
+ TEST "base_dir OK"
+
+ basedir1="$(pwd)/dir1"
+ basedir2="$(pwd)/dir2"
+
+ basedir=$basedir1
+ cd $basedir
+
+ $COMPILER -c -fsanitize-ignorelist=ignorelist.txt ../test1.c
+
+ CCACHE_BASEDIR="${basedir}" $CCACHE_COMPILE -c -fsanitize-ignorelist=$basedir/ignorelist.txt ../test1.c
+ expect_stat direct_cache_hit 0
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ CCACHE_BASEDIR="${basedir}" $CCACHE_COMPILE -c -fsanitize-ignorelist=$basedir/ignorelist.txt ../test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ basedir=$basedir2
+ cd $basedir
+
+ CCACHE_DEBUG=1 CCACHE_BASEDIR="${basedir}" $CCACHE_COMPILE -c -fsanitize-ignorelist=$basedir/ignorelist.txt ../test1.c
+ expect_stat direct_cache_hit 2
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ # -------------------------------------------------------------------------
+ TEST "Unsuccessful compilation"
+
+ if $COMPILER -c -fsanitize-ignorelist=nosuchfile.txt test1.c 2>expected.stderr; then
+ test_failed "Expected an error compiling test1.c"
+ fi
+
+ rm ignorelist.txt
+
+ if $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist.txt test1.c 2>expected.stderr; then
+ test_failed "Expected an error compiling test1.c"
+ fi
+
+ expect_stat error_hashing_extra_file 1
+
+ # -------------------------------------------------------------------------
+ TEST "Multiple -fsanitize-ignorelist"
+
+ $COMPILER -c -fsanitize-ignorelist=ignorelist2.txt -fsanitize-ignorelist=ignorelist.txt test1.c
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist2.txt -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 0
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist2.txt -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 1
+ expect_stat files_in_cache 2
+
+ echo "fun_2:foo" >ignorelist2.txt
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist2.txt -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 1
+ expect_stat cache_miss 2
+ expect_stat files_in_cache 4
+
+ $CCACHE_COMPILE -c -fsanitize-ignorelist=ignorelist2.txt -fsanitize-ignorelist=ignorelist.txt test1.c
+ expect_stat direct_cache_hit 2
+ expect_stat cache_miss 2
+ expect_stat files_in_cache 4
+}