From c578508b5bb20ccce5e2a43dd2afc41a49afec74 Mon Sep 17 00:00:00 2001 From: Vy Nguyen Date: Thu, 11 Mar 2021 22:06:37 -0500 Subject: [PATCH] Revert "[compiler-rt][asan] Make wild-pointer crash error more useful" This reverts commit f65e1aee4004c25fbeacd5024de1d17f0a7ebc5c. --- compiler-rt/lib/asan/asan_descriptions.cpp | 9 ++------ compiler-rt/lib/asan/asan_descriptions.h | 13 +++-------- .../test/asan/TestCases/wild_pointer.cpp | 22 ------------------- 3 files changed, 5 insertions(+), 39 deletions(-) delete mode 100644 compiler-rt/test/asan/TestCases/wild_pointer.cpp diff --git a/compiler-rt/lib/asan/asan_descriptions.cpp b/compiler-rt/lib/asan/asan_descriptions.cpp index 347eaa4a824f..153c874a4e77 100644 --- a/compiler-rt/lib/asan/asan_descriptions.cpp +++ b/compiler-rt/lib/asan/asan_descriptions.cpp @@ -77,6 +77,7 @@ static bool GetShadowKind(uptr addr, ShadowKind *shadow_kind) { } else if (AddrIsInLowShadow(addr)) { *shadow_kind = kShadowKindLow; } else { + CHECK(0 && "Address is not in memory and not in shadow?"); return false; } return true; @@ -463,13 +464,7 @@ AddressDescription::AddressDescription(uptr addr, uptr access_size, return; } data.kind = kAddressKindWild; - data.wild.addr = addr; - data.wild.access_size = access_size; -} - -void WildAddressDescription::Print() const { - Printf("Address %p is a wild pointer inside of access range of size %p.\n", - addr, access_size); + addr = 0; } void PrintAddressDescription(uptr addr, uptr access_size, diff --git a/compiler-rt/lib/asan/asan_descriptions.h b/compiler-rt/lib/asan/asan_descriptions.h index 650e2eb9173a..ee0e2061559e 100644 --- a/compiler-rt/lib/asan/asan_descriptions.h +++ b/compiler-rt/lib/asan/asan_descriptions.h @@ -146,13 +146,6 @@ struct StackAddressDescription { bool GetStackAddressInformation(uptr addr, uptr access_size, StackAddressDescription *descr); -struct WildAddressDescription { - uptr addr; - uptr access_size; - - void Print() const; -}; - struct GlobalAddressDescription { uptr addr; // Assume address is close to at most four globals. @@ -200,7 +193,7 @@ class AddressDescription { HeapAddressDescription heap; StackAddressDescription stack; GlobalAddressDescription global; - WildAddressDescription wild; + uptr addr; }; }; @@ -218,7 +211,7 @@ class AddressDescription { uptr Address() const { switch (data.kind) { case kAddressKindWild: - return data.wild.addr; + return data.addr; case kAddressKindShadow: return data.shadow.addr; case kAddressKindHeap: @@ -233,7 +226,7 @@ class AddressDescription { void Print(const char *bug_descr = nullptr) const { switch (data.kind) { case kAddressKindWild: - data.wild.Print(); + Printf("Address %p is a wild pointer.\n", data.addr); return; case kAddressKindShadow: return data.shadow.Print(); diff --git a/compiler-rt/test/asan/TestCases/wild_pointer.cpp b/compiler-rt/test/asan/TestCases/wild_pointer.cpp deleted file mode 100644 index 80c3e2b254e5..000000000000 --- a/compiler-rt/test/asan/TestCases/wild_pointer.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// RUN: %clangxx_asan %s -o %t -// RUN: not %run %t 2>&1 | FileCheck %s -// REQUIRES: asan-64-bits - -#include -#include -#include - -int main() { - char *p = new char; - char *dest = new char; - const size_t offset = 0x4567890123456789; - // Flush it so the output came out before the asan report. - fprintf(stderr, "Expected bad addr: %p\n", p + offset); - fflush(stderr); - memmove(dest, p, offset); - return 0; -} - -// CHECK: Expected bad addr: [[ADDR:0x[0-9,a-f]+]] -// CHECK: AddressSanitizer: unknown-crash on address [[ADDR]] -// CHECK: Address [[ADDR]] is a wild pointer inside of access range of size 0x4567890123456789