diff options
author | Filipe Cabecinhas <me@filcab.net> | 2018-01-02 13:46:12 +0000 |
---|---|---|
committer | Filipe Cabecinhas <me@filcab.net> | 2018-01-02 13:46:12 +0000 |
commit | 6f83fa99347ee220edecec703e90e126d1323b90 (patch) | |
tree | f73db7af40ed7d65b3fc93fd313f0395a5138a10 | |
parent | c9b3e1cf039e541dac031bebac0fd075197d5860 (diff) | |
download | bcm5719-llvm-6f83fa99347ee220edecec703e90e126d1323b90.tar.gz bcm5719-llvm-6f83fa99347ee220edecec703e90e126d1323b90.zip |
Revert "ASan+operator new[]: Fix operator new[] cookie poisoning"
This reverts r321645.
I missed a compiler-rt test that needs updating.
llvm-svn: 321647
-rw-r--r-- | clang/lib/CodeGen/ItaniumCXXABI.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGen/address-sanitizer-and-array-cookie.cpp | 10 |
2 files changed, 3 insertions, 10 deletions
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp index bfb18aee2e6..c375b82ea93 100644 --- a/clang/lib/CodeGen/ItaniumCXXABI.cpp +++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp @@ -1847,7 +1847,8 @@ Address ItaniumCXXABI::InitializeArrayCookie(CodeGenFunction &CGF, llvm::Instruction *SI = CGF.Builder.CreateStore(NumElements, NumElementsPtr); // Handle the array cookie specially in ASan. - if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0) { + if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0 && + expr->getOperatorNew()->isReplaceableGlobalAllocationFunction()) { // The store to the CookiePtr does not need to be instrumented. CGM.getSanitizerMetadata()->disableSanitizerForInstruction(SI); llvm::FunctionType *FTy = diff --git a/clang/test/CodeGen/address-sanitizer-and-array-cookie.cpp b/clang/test/CodeGen/address-sanitizer-and-array-cookie.cpp index 90b6ad0e051..ea895377891 100644 --- a/clang/test/CodeGen/address-sanitizer-and-array-cookie.cpp +++ b/clang/test/CodeGen/address-sanitizer-and-array-cookie.cpp @@ -7,7 +7,7 @@ namespace std { std::nothrow_t nothrow; } void *operator new[](size_t, const std::nothrow_t &) throw(); -void *operator new[](size_t, void *); +void *operator new[](size_t, char *); struct C { int x; @@ -53,11 +53,3 @@ C *CallPlacementNew() { } // ASAN-LABEL: CallPlacementNew // ASAN-NOT: __asan_poison_cxx_array_cookie - -void *operator new[](size_t n, int); - -C *CallNewWithArgs() { -// ASAN-LABEL: CallNewWithArgs -// ASAN: call void @__asan_poison_cxx_array_cookie - return new (123) C[20]; -} |