summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-11-23 18:02:16 +0000
committerReid Kleckner <rnk@google.com>2016-11-23 18:02:16 +0000
commitff8f2b8f8912825c6dab75b63b9abcbaef096d6a (patch)
tree2aa9eb761cb6d820bbe305c18ff0cba2ac629b07
parentdab4eae2746ff5d99f092a5b8b7b77da86b06627 (diff)
downloadbcm5719-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.cc10
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;
OpenPOWER on IntegriCloud