[ASan] Fix __asan_describe_address and add a test for it.
llvm-svn: 213583
This commit is contained in:
parent
d32803b669
commit
a89ad664b1
|
@ -945,7 +945,10 @@ void NOINLINE __asan_set_error_report_callback(void (*callback)(const char*)) {
|
|||
}
|
||||
|
||||
void __asan_describe_address(uptr addr) {
|
||||
// Thread registry must be locked while we're describing an address.
|
||||
asanThreadRegistry().Lock();
|
||||
DescribeAddress(addr, 1);
|
||||
asanThreadRegistry().Unlock();
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clangxx_asan -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
|
||||
|
||||
#include <sanitizer/asan_interface.h>
|
||||
|
||||
int global;
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int stack;
|
||||
int *heap = new int[100];
|
||||
__asan_describe_address(heap);
|
||||
// CHECK: {{.*}} is located 0 bytes inside of 400-byte region
|
||||
// CHECK: allocated by thread T{{.*}} here
|
||||
__asan_describe_address(&stack);
|
||||
// CHECK: Address {{.*}} is located in stack of thread T{{.*}} at offset {{.*}}
|
||||
__asan_describe_address(&global);
|
||||
// CHECK: {{.*}} is located 0 bytes inside of global variable 'global'
|
||||
delete[] heap;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue