forked from OSchip/llvm-project
parent
828e5e141d
commit
bca169c185
|
@ -79,8 +79,6 @@ def err_drv_invalid_libcxx_deployment : Error<
|
|||
"invalid deployment target for -stdlib=libc++ (requires %0 or later)">;
|
||||
def err_drv_invalid_feature : Error<
|
||||
"invalid feature '%0' for CPU '%1'">;
|
||||
def err_drv_malformed_sanitizer_blacklist : Error<
|
||||
"malformed sanitizer blacklist: '%0'">;
|
||||
|
||||
def err_drv_I_dash_not_supported : Error<
|
||||
"'%0' not supported, please use -iquote instead">;
|
||||
|
|
|
@ -12,11 +12,9 @@
|
|||
#include "clang/Driver/DriverDiagnostic.h"
|
||||
#include "clang/Driver/Options.h"
|
||||
#include "clang/Driver/ToolChain.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/ADT/StringSwitch.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Transforms/Utils/SpecialCaseList.h"
|
||||
|
||||
using namespace clang::driver;
|
||||
using namespace llvm::opt;
|
||||
|
@ -117,18 +115,10 @@ SanitizerArgs::SanitizerArgs(const Driver &D, const llvm::opt::ArgList &Args) {
|
|||
options::OPT_fno_sanitize_blacklist)) {
|
||||
if (BLArg->getOption().matches(options::OPT_fsanitize_blacklist)) {
|
||||
std::string BLPath = BLArg->getValue();
|
||||
if (llvm::sys::fs::exists(BLPath)) {
|
||||
// Validate the blacklist format.
|
||||
std::string BLError;
|
||||
llvm::OwningPtr<llvm::SpecialCaseList> SCL(
|
||||
llvm::SpecialCaseList::create(BLPath, BLError));
|
||||
if (!SCL.get())
|
||||
D.Diag(diag::err_drv_malformed_sanitizer_blacklist) << BLError;
|
||||
else
|
||||
BlacklistFile = BLPath;
|
||||
} else {
|
||||
if (llvm::sys::fs::exists(BLPath))
|
||||
BlacklistFile = BLPath;
|
||||
else
|
||||
D.Diag(diag::err_drv_no_such_file) << BLPath;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If no -fsanitize-blacklist option is specified, try to look up for
|
||||
|
|
|
@ -1,26 +1,18 @@
|
|||
// General blacklist usage.
|
||||
|
||||
// PR12920
|
||||
// REQUIRES: clang-driver, shell
|
||||
|
||||
// RUN: echo "fun:foo" > %t.good
|
||||
// RUN: echo "badline" > %t.bad
|
||||
|
||||
// RUN: %clang -fsanitize=address -fsanitize-blacklist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BLACKLIST
|
||||
// RUN: %clang -fsanitize=address -fsanitize-blacklist=%s %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BLACKLIST
|
||||
// CHECK-BLACKLIST: -fsanitize-blacklist
|
||||
|
||||
// Ignore -fsanitize-blacklist flag if there is no -fsanitize flag.
|
||||
// RUN: %clang -fsanitize-blacklist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE
|
||||
// RUN: %clang -fsanitize-blacklist=%s %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE
|
||||
// CHECK-NO-SANITIZE-NOT: -fsanitize-blacklist
|
||||
|
||||
// Flag -fno-sanitize-blacklist wins if it is specified later.
|
||||
// RUN: %clang -fsanitize=address -fsanitize-blacklist=%t.good -fno-sanitize-blacklist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-BLACKLIST
|
||||
// RUN: %clang -fsanitize=address -fsanitize-blacklist=%s -fno-sanitize-blacklist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-BLACKLIST
|
||||
// CHECK-NO-BLACKLIST-NOT: -fsanitize-blacklist
|
||||
|
||||
// Driver barks on unexisting blacklist files.
|
||||
// RUN: %clang -fno-sanitize-blacklist -fsanitize-blacklist=unexisting.txt %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SUCH-FILE
|
||||
// CHECK-NO-SUCH-FILE: error: no such file or directory: 'unexisting.txt'
|
||||
|
||||
// Driver properly reports malformed blacklist files.
|
||||
// RUN: %clang -fsanitize=address -fsanitize-blacklist=%t.bad %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BAD-BLACKLIST
|
||||
// CHECK-BAD-BLACKLIST: error: malformed sanitizer blacklist
|
||||
// PR12920
|
||||
// REQUIRES: clang-driver
|
||||
|
|
Loading…
Reference in New Issue