summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-08-05 16:01:57 +0000
committerReid Kleckner <rnk@google.com>2016-08-05 16:01:57 +0000
commit2a06f48bb5bf484bdc4b25ab459e3ba960d6368b (patch)
tree382354aadb34968059f77139ece5e917687413fb
parent5bf494e73d8e6bbde9eee09e3acd0fb38e8b7330 (diff)
downloadbcm5719-llvm-2a06f48bb5bf484bdc4b25ab459e3ba960d6368b.tar.gz
bcm5719-llvm-2a06f48bb5bf484bdc4b25ab459e3ba960d6368b.zip
Print a more useful BP value from MSVC-built ASan runtimes
MSVC doesn't have an exact equivalent for __builtin_frame_address, but _AddressOfReturnAddress() + sizeof(void*) should be equivalent for all frames build with -fno-omit-frame-pointer. llvm-svn: 277826
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
index 720672d2908..bb25cf4fce9 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h
@@ -296,12 +296,12 @@ inline void Trap() {
}
#else
extern "C" void* _ReturnAddress(void);
+extern "C" void* _AddressOfReturnAddress(void);
# pragma intrinsic(_ReturnAddress)
+# pragma intrinsic(_AddressOfReturnAddress)
# define GET_CALLER_PC() (uptr)_ReturnAddress()
// CaptureStackBackTrace doesn't need to know BP on Windows.
-// FIXME: This macro is still used when printing error reports though it's not
-// clear if the BP value is needed in the ASan reports on Windows.
-# define GET_CURRENT_FRAME() (uptr)0xDEADBEEF
+# define GET_CURRENT_FRAME() (((uptr)_AddressOfReturnAddress()) + sizeof(uptr))
extern "C" void __ud2(void);
# pragma intrinsic(__ud2)
OpenPOWER on IntegriCloud