[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