From 22b901ee56aba428611c895b9427a343612ee229 Mon Sep 17 00:00:00 2001 From: Blue Gaston Date: Sun, 12 May 2024 12:57:47 -0700 Subject: [PATCH 1/2] Add valid args to sanitizer-coverage Adds valid arguments to sanitizer-coverage pc-table and inline-8bit-counter. Currently you cannot set all default fuzzer options directly using sanitizer coverage. Right now you can choose default fuzzer args, or a limited number coverage options. This PR extends coverage options to allow pc-table and inline-8bit-counter. This algins with default fuzzer options to allow customizing sanitizer-coverage in variations of fuzzer defaults. (i.e. Fuzzer defaults w/o pc-table enabled). In upstream llvm the option -no-sanitize-coverage exists to disable various fuzzing options. Swift current does not have a convention of using excluding args. This aims to limit the need for that by being able to inclusively set desired coverage. rdar://127950283 --- Sources/SwiftDriver/Driver/Driver.swift | 2 +- Tests/SwiftDriverTests/SwiftDriverTests.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/SwiftDriver/Driver/Driver.swift b/Sources/SwiftDriver/Driver/Driver.swift index 52e75121a..90f85a3ba 100644 --- a/Sources/SwiftDriver/Driver/Driver.swift +++ b/Sources/SwiftDriver/Driver/Driver.swift @@ -3145,7 +3145,7 @@ extension Driver { for arg in parsedOptions.arguments(for: .sanitizeCoverageEQ).flatMap(\.argument.asMultiple) { if ["func", "bb", "edge"].contains(arg) { foundRequiredArg = true - } else if !["indirect-calls", "trace-bb", "trace-cmp", "8bit-counters", "trace-pc", "trace-pc-guard"].contains(arg) { + } else if !["indirect-calls", "trace-bb", "trace-cmp", "8bit-counters", "trace-pc", "trace-pc-guard","pc-table","inline-8bit-counters",].contains(arg) { diagnosticsEngine.emit(.error_unsupported_argument(argument: arg, option: .sanitizeCoverageEQ)) } diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 64f076f25..e1f303d8a 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -2807,7 +2807,7 @@ final class SwiftDriverTests: XCTestCase { $1.expect(.error("unsupported argument 'baz' to option '-sanitize-coverage='")) } - try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-sanitize=thread", "-sanitize-coverage=edge,indirect-calls,trace-bb,trace-cmp,8bit-counters") + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-sanitize=thread", "-sanitize-coverage=edge,indirect-calls,trace-bb,trace-cmp,8bit-counters,pc-table,inline-8bit-counters") #endif } From 42f1733263800cb293f73b0fd4e2feb0fb669120 Mon Sep 17 00:00:00 2001 From: thetruestblue <92476612+thetruestblue@users.noreply.github.com> Date: Tue, 14 May 2024 06:15:41 -0700 Subject: [PATCH 2/2] Update Driver.swift --- Sources/SwiftDriver/Driver/Driver.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/SwiftDriver/Driver/Driver.swift b/Sources/SwiftDriver/Driver/Driver.swift index 90f85a3ba..5d8b80523 100644 --- a/Sources/SwiftDriver/Driver/Driver.swift +++ b/Sources/SwiftDriver/Driver/Driver.swift @@ -3145,7 +3145,7 @@ extension Driver { for arg in parsedOptions.arguments(for: .sanitizeCoverageEQ).flatMap(\.argument.asMultiple) { if ["func", "bb", "edge"].contains(arg) { foundRequiredArg = true - } else if !["indirect-calls", "trace-bb", "trace-cmp", "8bit-counters", "trace-pc", "trace-pc-guard","pc-table","inline-8bit-counters",].contains(arg) { + } else if !["indirect-calls", "trace-bb", "trace-cmp", "8bit-counters", "trace-pc", "trace-pc-guard","pc-table","inline-8bit-counters"].contains(arg) { diagnosticsEngine.emit(.error_unsupported_argument(argument: arg, option: .sanitizeCoverageEQ)) }