Skip to content

Commit 2a3dad4

Browse files
committed
Adds valid arguments to -sanitize-coverage: pc-table and inline-8bit-counter.
As is, you cannot set all default fuzzer options directly using -sanitize-coverage. Because of this you can use default fuzzer sanitize-coverage args, or a limited number coverage options. This PR adds pc-table and inline-8bit-counter as valid args to be parsed for sanitize-coverage flag. These are default fuzzer options -- and will allow customizing sanitizer-coverage in variations of fuzzer defaults. (i.e. w/o pc-table enabled). In upstream clang the option -fno-sanitize-coverage exists to disable various coverage options. Swift currently does not have a convention of using excluding args for sanitizer flags. This aims to limit the need for a new flag by inclusively setting desired coverage up to current fuzzer defaults. rdar://127881891
1 parent 76fb0ee commit 2a3dad4

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

lib/Option/SanitizerOptions.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ llvm::SanitizerCoverageOptions swift::parseSanitizerCoverageArgValue(
9292
} else if (StringRef(A->getValue(i)) == "trace-pc-guard") {
9393
opts.TracePCGuard = true;
9494
continue;
95+
} else if (StringRef(A->getValue(i)) == "inline-8bit-counters") {
96+
opts.Inline8bitCounters = true;
97+
continue;
98+
} else if (StringRef(A->getValue(i)) == "pc-table") {
99+
opts.PCTable = true;
100+
continue;
95101
}
96102

97103
// Argument is not supported.

test/Driver/sanitize_coverage.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// REQUIRES: asan_runtime
66

77
// Try some options
8-
// RUN: %swiftc_driver -driver-print-jobs -sanitize-coverage=edge,indirect-calls,trace-bb,trace-cmp,8bit-counters -sanitize=address %s | %FileCheck -check-prefix=SANCOV_EDGE_WITH_OPTIONS %s
8+
// RUN: %swiftc_driver -driver-print-jobs -sanitize-coverage=edge,indirect-calls,trace-bb,trace-cmp,8bit-counters,inlnie-8bit-counters,pc-table -sanitize=address %s | %FileCheck -check-prefix=SANCOV_EDGE_WITH_OPTIONS %s
99

1010
// Invalid command line arguments
1111
// RUN: not %swiftc_driver -driver-print-jobs -sanitize-coverage=func %s 2>&1 | %FileCheck -check-prefix=SANCOV_WITHOUT_XSAN %s
@@ -16,6 +16,8 @@
1616
// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -sanitize-coverage=trace-bb %s 2>&1 | %FileCheck -check-prefix=SANCOV_MISSING_ARG %s
1717
// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -sanitize-coverage=trace-cmp %s 2>&1 | %FileCheck -check-prefix=SANCOV_MISSING_ARG %s
1818
// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -sanitize-coverage=8bit-counters %s 2>&1 | %FileCheck -check-prefix=SANCOV_MISSING_ARG %s
19+
// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -sanitize-coverage=inline-8bit-counters %s 2>&1 | %FileCheck -check-prefix=SANCOV_MISSING_ARG %s
20+
// RUN: not %swiftc_driver -driver-print-jobs -sanitize=address -sanitize-coverage=pc-table %s 2>&1 | %FileCheck -check-prefix=SANCOV_MISSING_ARG %s
1921

2022
// SANCOV_FUNC: swift
2123
// SANCOV_FUNC-DAG: -sanitize-coverage=func

0 commit comments

Comments
 (0)