[PATCH] D46466: [asan] Add AsanThread::Restart() to support thread restart
Walter Lee via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri May 4 13:50:36 PDT 2018
waltl created this revision.
waltl added reviewers: vitalybuka, eugenis, alekseyshl.
Herald added a subscriber: kubamracek.
Thread restart is a feature on RTEMS where a thread may resume at an
arbitrary function entry point, but the stack and TLS state are reset.
Use AsanThread::Restart() to do the corresponding bookeeping.
Repository:
rL LLVM
https://reviews.llvm.org/D46466
Files:
compiler-rt/lib/asan/asan_thread.cc
compiler-rt/lib/asan/asan_thread.h
Index: compiler-rt/lib/asan/asan_thread.h
===================================================================
--- compiler-rt/lib/asan/asan_thread.h
+++ compiler-rt/lib/asan/asan_thread.h
@@ -103,6 +103,8 @@
t->Destroy(tid);
}
+ void Restart();
+
void StartSwitchFiber(FakeStack **fake_stack_save, uptr bottom, uptr size);
void FinishSwitchFiber(FakeStack *fake_stack_save, uptr *bottom_old,
uptr *size_old);
Index: compiler-rt/lib/asan/asan_thread.cc
===================================================================
--- compiler-rt/lib/asan/asan_thread.cc
+++ compiler-rt/lib/asan/asan_thread.cc
@@ -115,6 +115,10 @@
DTLS_Destroy();
}
+void AsanThread::Restart() {
+ PoisonShadow(stack_bottom_, stack_top_ - stack_bottom_, 0);
+}
+
void AsanThread::StartSwitchFiber(FakeStack **fake_stack_save, uptr bottom,
uptr size) {
if (atomic_load(&stack_switching_, memory_order_relaxed)) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D46466.145283.patch
Type: text/x-patch
Size: 974 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180504/9a8fb6ec/attachment.bin>
More information about the llvm-commits
mailing list