11f9cb04fSpatrick //=-- lsan_posix.h -----------------------------------------------------===// 21f9cb04fSpatrick // 31f9cb04fSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41f9cb04fSpatrick // See https://llvm.org/LICENSE.txt for license information. 51f9cb04fSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61f9cb04fSpatrick // 71f9cb04fSpatrick //===---------------------------------------------------------------------===// 81f9cb04fSpatrick // 91f9cb04fSpatrick // This file is a part of LeakSanitizer. 101f9cb04fSpatrick // Standalone LSan RTL code common to POSIX-like systems. 111f9cb04fSpatrick // 121f9cb04fSpatrick //===---------------------------------------------------------------------===// 131f9cb04fSpatrick 141f9cb04fSpatrick #ifndef LSAN_POSIX_H 151f9cb04fSpatrick #define LSAN_POSIX_H 161f9cb04fSpatrick 171f9cb04fSpatrick #include "lsan_thread.h" 181f9cb04fSpatrick #include "sanitizer_common/sanitizer_platform.h" 191f9cb04fSpatrick 201f9cb04fSpatrick #if !SANITIZER_POSIX 211f9cb04fSpatrick #error "lsan_posix.h is used only on POSIX-like systems (SANITIZER_POSIX)" 221f9cb04fSpatrick #endif 231f9cb04fSpatrick 241f9cb04fSpatrick namespace __sanitizer { 251f9cb04fSpatrick struct DTLS; 261f9cb04fSpatrick } 271f9cb04fSpatrick 281f9cb04fSpatrick namespace __lsan { 291f9cb04fSpatrick 30*d89ec533Spatrick class ThreadContext final : public ThreadContextLsanBase { 311f9cb04fSpatrick public: 321f9cb04fSpatrick explicit ThreadContext(int tid); 331f9cb04fSpatrick void OnStarted(void *arg) override; tls_begin()341f9cb04fSpatrick uptr tls_begin() { return tls_begin_; } tls_end()351f9cb04fSpatrick uptr tls_end() { return tls_end_; } dtls()361f9cb04fSpatrick DTLS *dtls() { return dtls_; } 371f9cb04fSpatrick 381f9cb04fSpatrick private: 391f9cb04fSpatrick uptr tls_begin_ = 0; 401f9cb04fSpatrick uptr tls_end_ = 0; 411f9cb04fSpatrick DTLS *dtls_ = nullptr; 421f9cb04fSpatrick }; 431f9cb04fSpatrick 441f9cb04fSpatrick void ThreadStart(u32 tid, tid_t os_id, 451f9cb04fSpatrick ThreadType thread_type = ThreadType::Regular); 461f9cb04fSpatrick 471f9cb04fSpatrick } // namespace __lsan 481f9cb04fSpatrick 491f9cb04fSpatrick #endif // LSAN_POSIX_H 50