diff options
Diffstat (limited to 'compiler-rt/lib/asan/asan_globals.cc')
-rw-r--r-- | compiler-rt/lib/asan/asan_globals.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/compiler-rt/lib/asan/asan_globals.cc b/compiler-rt/lib/asan/asan_globals.cc index 972afe6505e..301ea44f2ca 100644 --- a/compiler-rt/lib/asan/asan_globals.cc +++ b/compiler-rt/lib/asan/asan_globals.cc @@ -123,6 +123,21 @@ static void UnregisterGlobal(const Global *g) { // implementation. It might not be worth doing anyway. } +void StopInitOrderChecking() { + BlockingMutexLock lock(&mu_for_globals); + if (!flags()->check_initialization_order || !dynamic_init_globals) + return; + flags()->check_initialization_order = false; + for (uptr i = 0, n = dynamic_init_globals->size(); i < n; ++i) { + DynInitGlobal &dyn_g = (*dynamic_init_globals)[i]; + const Global *g = &dyn_g.g; + // Unpoison the whole global. + PoisonShadowForGlobal(g, 0); + // Poison redzones back. + PoisonRedZones(*g); + } +} + } // namespace __asan // ---------------------- Interface ---------------- {{{1 |