[hwasan] revert r341435 as it breaks the bot on aarch64

llvm-svn: 341441
This commit is contained in:
Kostya Serebryany 2018-09-05 01:29:08 +00:00
parent c12cc9b85c
commit ee0e2f8323
1 changed files with 7 additions and 11 deletions

View File

@ -221,25 +221,23 @@ extern "C" void __hwasan_thread_exit() {
Thread *t = GetCurrentThread();
// Make sure that signal handler can not see a stale current thread pointer.
atomic_signal_fence(memory_order_seq_cst);
CHECK(t);
t->Destroy();
if (t)
t->Destroy();
}
#if HWASAN_WITH_INTERCEPTORS
static pthread_key_t tsd_key;
static bool tsd_key_inited = false;
static THREADLOCAL Thread *current_thread;
void HwasanTSDDtor(void *tsd) {
Thread *t = current_thread;
Thread *t = (Thread*)tsd;
if (t->destructor_iterations_ > 1) {
t->destructor_iterations_--;
CHECK_EQ(0, pthread_setspecific(tsd_key, (void*)1));
CHECK_EQ(0, pthread_setspecific(tsd_key, tsd));
return;
}
t->Destroy();
__hwasan_thread_exit();
current_thread = nullptr;
}
void HwasanTSDInit() {
@ -249,17 +247,15 @@ void HwasanTSDInit() {
}
Thread *GetCurrentThread() {
return current_thread;
return (Thread *)pthread_getspecific(tsd_key);
}
void SetCurrentThread(Thread *t) {
// Make sure that HwasanTSDDtor gets called at the end.
CHECK(tsd_key_inited);
// Make sure we do not reset the current Thread.
CHECK_EQ(current_thread, nullptr);
current_thread = t;
CHECK_EQ(0, pthread_getspecific(tsd_key));
CHECK_EQ(0, pthread_setspecific(tsd_key, (void *)1));
pthread_setspecific(tsd_key, (void *)t);
}
#elif SANITIZER_ANDROID
void HwasanTSDInit() {}