forked from OSchip/llvm-project
Allow -fsanitize-coverage=N with ubsan, clang part
Summary: Allow -fsanitize-coverage=N with ubsan, clang part. This simply allows the flag combination. The LLVM will work out of the box, the compile-rt part will follow as a separate patch. Test Plan: check-clang Reviewers: samsonov Reviewed By: samsonov Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D6849 llvm-svn: 225229
This commit is contained in:
parent
04b37c4043
commit
2d88f3d623
|
@ -43,7 +43,8 @@ ID = ALIAS, ID##Group = 1 << SO_##ID##Group,
|
|||
NeedsUbsanRt = Undefined | Integer,
|
||||
NotAllowedWithTrap = Vptr,
|
||||
RequiresPIE = Memory | DataFlow,
|
||||
NeedsUnwindTables = Address | Thread | Memory | DataFlow
|
||||
NeedsUnwindTables = Address | Thread | Memory | DataFlow,
|
||||
SupportsCoverage = Address | Memory | Leak | Undefined | Integer
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -295,7 +296,7 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
|
|||
}
|
||||
|
||||
// Parse -fsanitize-coverage=N. Currently one of asan/msan/lsan is required.
|
||||
if (NeedsAsan || NeedsMsan || NeedsLsan) {
|
||||
if (hasOneOf(Sanitizers, SupportsCoverage)) {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fsanitize_coverage)) {
|
||||
StringRef S = A->getValue();
|
||||
// Legal values are 0..4.
|
||||
|
|
|
@ -92,11 +92,17 @@
|
|||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-1
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=memory -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-1
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=leak -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-1
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-1
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=bool -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-1
|
||||
// CHECK-SANITIZE-COVERAGE-1: fsanitize-coverage=1
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-coverage=4 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-4
|
||||
// CHECK-SANITIZE-COVERAGE-4: fsanitize-coverage=4
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-coverage=5 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-5
|
||||
// CHECK-SANITIZE-COVERAGE-5: error: invalid value '5' in '-fsanitize-coverage=5'
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=thread -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-UNUSED
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=dataflow -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-UNUSED
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize-coverage=1 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SANITIZE-COVERAGE-UNUSED
|
||||
// CHECK-SANITIZE-COVERAGE-UNUSED: argument unused during compilation: '-fsanitize-coverage=1'
|
||||
|
||||
// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-address-field-padding=0 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-FIELD-PADDING-0
|
||||
// CHECK-ASAN-FIELD-PADDING-0-NOT: -fsanitize-address-field-padding
|
||||
|
|
Loading…
Reference in New Issue