| //=-- lsan_posix.h -----------------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===---------------------------------------------------------------------===// |
| // |
| // This file is a part of LeakSanitizer. |
| // Standalone LSan RTL code common to POSIX-like systems. |
| // |
| //===---------------------------------------------------------------------===// |
| |
| #ifndef LSAN_POSIX_H |
| #define LSAN_POSIX_H |
| |
| #include "lsan_thread.h" |
| #include "sanitizer_common/sanitizer_platform.h" |
| |
| #if !SANITIZER_POSIX |
| #error "lsan_posix.h is used only on POSIX-like systems (SANITIZER_POSIX)" |
| #endif |
| |
| namespace __sanitizer { |
| struct DTLS; |
| } |
| |
| namespace __lsan { |
| |
| class ThreadContext final : public ThreadContextLsanBase { |
| public: |
| explicit ThreadContext(int tid); |
| void OnStarted(void *arg) override; |
| uptr tls_begin() { return tls_begin_; } |
| uptr tls_end() { return tls_end_; } |
| DTLS *dtls() { return dtls_; } |
| |
| private: |
| uptr tls_begin_ = 0; |
| uptr tls_end_ = 0; |
| DTLS *dtls_ = nullptr; |
| }; |
| |
| void ThreadStart(u32 tid, tid_t os_id, |
| ThreadType thread_type = ThreadType::Regular); |
| |
| } // namespace __lsan |
| |
| #endif // LSAN_POSIX_H |