forked from OSchip/llvm-project
Revert "[compiler-rt][asan] Make wild-pointer crash error more useful"
This reverts commit f65e1aee40
.
This commit is contained in:
parent
5908c7ca41
commit
c578508b5b
|
@ -77,6 +77,7 @@ static bool GetShadowKind(uptr addr, ShadowKind *shadow_kind) {
|
||||||
} else if (AddrIsInLowShadow(addr)) {
|
} else if (AddrIsInLowShadow(addr)) {
|
||||||
*shadow_kind = kShadowKindLow;
|
*shadow_kind = kShadowKindLow;
|
||||||
} else {
|
} else {
|
||||||
|
CHECK(0 && "Address is not in memory and not in shadow?");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -463,13 +464,7 @@ AddressDescription::AddressDescription(uptr addr, uptr access_size,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data.kind = kAddressKindWild;
|
data.kind = kAddressKindWild;
|
||||||
data.wild.addr = addr;
|
addr = 0;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintAddressDescription(uptr addr, uptr access_size,
|
void PrintAddressDescription(uptr addr, uptr access_size,
|
||||||
|
|
|
@ -146,13 +146,6 @@ struct StackAddressDescription {
|
||||||
bool GetStackAddressInformation(uptr addr, uptr access_size,
|
bool GetStackAddressInformation(uptr addr, uptr access_size,
|
||||||
StackAddressDescription *descr);
|
StackAddressDescription *descr);
|
||||||
|
|
||||||
struct WildAddressDescription {
|
|
||||||
uptr addr;
|
|
||||||
uptr access_size;
|
|
||||||
|
|
||||||
void Print() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct GlobalAddressDescription {
|
struct GlobalAddressDescription {
|
||||||
uptr addr;
|
uptr addr;
|
||||||
// Assume address is close to at most four globals.
|
// Assume address is close to at most four globals.
|
||||||
|
@ -200,7 +193,7 @@ class AddressDescription {
|
||||||
HeapAddressDescription heap;
|
HeapAddressDescription heap;
|
||||||
StackAddressDescription stack;
|
StackAddressDescription stack;
|
||||||
GlobalAddressDescription global;
|
GlobalAddressDescription global;
|
||||||
WildAddressDescription wild;
|
uptr addr;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -218,7 +211,7 @@ class AddressDescription {
|
||||||
uptr Address() const {
|
uptr Address() const {
|
||||||
switch (data.kind) {
|
switch (data.kind) {
|
||||||
case kAddressKindWild:
|
case kAddressKindWild:
|
||||||
return data.wild.addr;
|
return data.addr;
|
||||||
case kAddressKindShadow:
|
case kAddressKindShadow:
|
||||||
return data.shadow.addr;
|
return data.shadow.addr;
|
||||||
case kAddressKindHeap:
|
case kAddressKindHeap:
|
||||||
|
@ -233,7 +226,7 @@ class AddressDescription {
|
||||||
void Print(const char *bug_descr = nullptr) const {
|
void Print(const char *bug_descr = nullptr) const {
|
||||||
switch (data.kind) {
|
switch (data.kind) {
|
||||||
case kAddressKindWild:
|
case kAddressKindWild:
|
||||||
data.wild.Print();
|
Printf("Address %p is a wild pointer.\n", data.addr);
|
||||||
return;
|
return;
|
||||||
case kAddressKindShadow:
|
case kAddressKindShadow:
|
||||||
return data.shadow.Print();
|
return data.shadow.Print();
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
// RUN: %clangxx_asan %s -o %t
|
|
||||||
// RUN: not %run %t 2>&1 | FileCheck %s
|
|
||||||
// REQUIRES: asan-64-bits
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
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
|
|
Loading…
Reference in New Issue