diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2017-09-28 13:38:58 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2017-09-28 13:38:58 +0000 |
commit | c4e652f3aa4d0bf6831fd00b91b48aa82b5a8d01 (patch) | |
tree | 9307a2c193a58d3a4826f9fea1ab8d50a9630d46 | |
parent | 715a5efaadec7c354f3d004232ecc4d4062929ae (diff) | |
download | llvm-c4e652f3aa4d0bf6831fd00b91b48aa82b5a8d01.zip llvm-c4e652f3aa4d0bf6831fd00b91b48aa82b5a8d01.tar.gz llvm-c4e652f3aa4d0bf6831fd00b91b48aa82b5a8d01.tar.bz2 |
[asan] Unpoison global metadata on dlclose.
dlclose itself might touch it, so better return it to the state it was
before. I don't know how to create a test for this as it would require
chaning dlclose itself.
llvm-svn: 314415
-rw-r--r-- | compiler-rt/lib/asan/asan_globals.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler-rt/lib/asan/asan_globals.cc b/compiler-rt/lib/asan/asan_globals.cc index ed1e4c6..0db65d0 100644 --- a/compiler-rt/lib/asan/asan_globals.cc +++ b/compiler-rt/lib/asan/asan_globals.cc @@ -403,6 +403,9 @@ void __asan_unregister_globals(__asan_global *globals, uptr n) { } UnregisterGlobal(&globals[i]); } + + // Unpoison the metadata. + PoisonShadow(reinterpret_cast<uptr>(globals), n * sizeof(__asan_global), 0); } // This method runs immediately prior to dynamic initialization in each TU, |