Skip to content

Commit 0a6cfcf

Browse files
committed
Adding Undefined Behavior Sanitizer support for C Family Languages
1 parent 87bc6c0 commit 0a6cfcf

File tree

5 files changed

+25
-0
lines changed

5 files changed

+25
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// swift-tools-version:4.2
2+
// The swift-tools-version declares the minimum version of Swift required to build this package.
3+
4+
import PackageDescription
5+
6+
let package = Package(
7+
name: "CUBSan",
8+
targets: [
9+
.target(
10+
name: "CUBSan",
11+
path: "./")
12+
]
13+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# CUBSan
2+
3+
A description of this package.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
int main(int argc, char **argv);

Fixtures/CFamilyTargets/CUBSan/main.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
int main(int argc, char **argv) {
2+
int k = 0x7fffffff;
3+
k += argc;
4+
return 0;
5+
}

Sources/Build/Sanitizers.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ import Utility
1515
public enum Sanitizer: String {
1616
case address
1717
case thread
18+
case undefined
1819

1920
/// Return an established short name for a sanitizer, e.g. "asan".
2021
public var shortName: String {
2122
switch self {
2223
case .address: return "asan"
2324
case .thread: return "tsan"
25+
case .undefined: return "ubsan"
2426
}
2527
}
2628
}
@@ -61,5 +63,6 @@ extension Sanitizer: StringEnumArgument {
6163
public static let completion: ShellCompletion = .values([
6264
(address.rawValue, "enable Address sanitizer"),
6365
(thread.rawValue, "enable Thread sanitizer"),
66+
(undefined.rawValue, "enable Undefined Behavior sanitizer")
6467
])
6568
}

0 commit comments

Comments
 (0)