diff options
| author | Reid Kleckner <rnk@google.com> | 2016-08-05 16:01:57 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-08-05 16:01:57 +0000 |
| commit | 2a06f48bb5bf484bdc4b25ab459e3ba960d6368b (patch) | |
| tree | 382354aadb34968059f77139ece5e917687413fb | |
| parent | 5bf494e73d8e6bbde9eee09e3acd0fb38e8b7330 (diff) | |
| download | bcm5719-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.h | 6 |
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) |

