#include "dfsan_thread.h" #include <pthread.h> #include "dfsan.h" #include "sanitizer_common/sanitizer_tls_get_addr.h" usingnamespace__dfsan; DFsanThread *DFsanThread::Create(thread_callback_t start_routine, void *arg, bool track_origins) { … } void DFsanThread::SetThreadStackAndTls() { … } void DFsanThread::ClearShadowForThreadStackAndTLS() { … } void DFsanThread::Init() { … } void DFsanThread::TSDDtor(void *tsd) { … } void DFsanThread::Destroy() { … } thread_return_t DFsanThread::ThreadStart() { … } DFsanThread::StackBounds DFsanThread::GetStackBounds() const { … } uptr DFsanThread::stack_top() { … } uptr DFsanThread::stack_bottom() { … } bool DFsanThread::AddrIsInStack(uptr addr) { … } static pthread_key_t tsd_key; static bool tsd_key_inited = …; void __dfsan::DFsanTSDInit(void (*destructor)(void *tsd)) { … } static THREADLOCAL DFsanThread *dfsan_current_thread; DFsanThread *__dfsan::GetCurrentThread() { … } void __dfsan::SetCurrentThread(DFsanThread *t) { … } void __dfsan::DFsanTSDDtor(void *tsd) { … }