summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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