diff options
author | Reid Kleckner <rnk@google.com> | 2016-11-23 18:02:16 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2016-11-23 18:02:16 +0000 |
commit | ff8f2b8f8912825c6dab75b63b9abcbaef096d6a (patch) | |
tree | 2aa9eb761cb6d820bbe305c18ff0cba2ac629b07 | |
parent | dab4eae2746ff5d99f092a5b8b7b77da86b06627 (diff) | |
download | bcm5719-llvm-ff8f2b8f8912825c6dab75b63b9abcbaef096d6a.tar.gz bcm5719-llvm-ff8f2b8f8912825c6dab75b63b9abcbaef096d6a.zip |
[asan/win] Check assumptions about the incremental linker more
Remove a needless cast as well.
llvm-svn: 287785
-rw-r--r-- | compiler-rt/lib/asan/asan_globals_win.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler-rt/lib/asan/asan_globals_win.cc b/compiler-rt/lib/asan/asan_globals_win.cc index e20b7eff1f7..56c0d1a532f 100644 --- a/compiler-rt/lib/asan/asan_globals_win.cc +++ b/compiler-rt/lib/asan/asan_globals_win.cc @@ -26,7 +26,15 @@ __asan_global __asan_globals_end = {}; static void call_on_globals(void (*hook)(__asan_global *, uptr)) { __asan_global *start = &__asan_globals_start + 1; - __asan_global *end = (__asan_global *)&__asan_globals_end; + __asan_global *end = &__asan_globals_end; + uptr bytediff = (uptr)end - (uptr)start; + if (bytediff % sizeof(__asan_global) != 0) { +#ifdef ASAN_DLL_THUNK + __debugbreak(); +#else + CHECK("corrupt asan global array"); +#endif + } // We know end >= start because the linker sorts the portion after the dollar // sign alphabetically. uptr n = end - start; |