15ffd83dbSDimitry Andric //=-- lsan_posix.h -----------------------------------------------------===// 25ffd83dbSDimitry Andric // 35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65ffd83dbSDimitry Andric // 75ffd83dbSDimitry Andric //===---------------------------------------------------------------------===// 85ffd83dbSDimitry Andric // 95ffd83dbSDimitry Andric // This file is a part of LeakSanitizer. 105ffd83dbSDimitry Andric // Standalone LSan RTL code common to POSIX-like systems. 115ffd83dbSDimitry Andric // 125ffd83dbSDimitry Andric //===---------------------------------------------------------------------===// 135ffd83dbSDimitry Andric 145ffd83dbSDimitry Andric #ifndef LSAN_POSIX_H 155ffd83dbSDimitry Andric #define LSAN_POSIX_H 165ffd83dbSDimitry Andric 175ffd83dbSDimitry Andric #include "lsan_thread.h" 185ffd83dbSDimitry Andric #include "sanitizer_common/sanitizer_platform.h" 195ffd83dbSDimitry Andric 205ffd83dbSDimitry Andric #if !SANITIZER_POSIX 215ffd83dbSDimitry Andric #error "lsan_posix.h is used only on POSIX-like systems (SANITIZER_POSIX)" 225ffd83dbSDimitry Andric #endif 235ffd83dbSDimitry Andric 245ffd83dbSDimitry Andric namespace __sanitizer { 255ffd83dbSDimitry Andric struct DTLS; 265ffd83dbSDimitry Andric } 275ffd83dbSDimitry Andric 285ffd83dbSDimitry Andric namespace __lsan { 295ffd83dbSDimitry Andric 30*e8d8bef9SDimitry Andric class ThreadContext final : public ThreadContextLsanBase { 315ffd83dbSDimitry Andric public: 325ffd83dbSDimitry Andric explicit ThreadContext(int tid); 335ffd83dbSDimitry Andric void OnStarted(void *arg) override; tls_begin()345ffd83dbSDimitry Andric uptr tls_begin() { return tls_begin_; } tls_end()355ffd83dbSDimitry Andric uptr tls_end() { return tls_end_; } dtls()365ffd83dbSDimitry Andric DTLS *dtls() { return dtls_; } 375ffd83dbSDimitry Andric 385ffd83dbSDimitry Andric private: 395ffd83dbSDimitry Andric uptr tls_begin_ = 0; 405ffd83dbSDimitry Andric uptr tls_end_ = 0; 415ffd83dbSDimitry Andric DTLS *dtls_ = nullptr; 425ffd83dbSDimitry Andric }; 435ffd83dbSDimitry Andric 445ffd83dbSDimitry Andric void ThreadStart(u32 tid, tid_t os_id, 455ffd83dbSDimitry Andric ThreadType thread_type = ThreadType::Regular); 465ffd83dbSDimitry Andric 475ffd83dbSDimitry Andric } // namespace __lsan 485ffd83dbSDimitry Andric 495ffd83dbSDimitry Andric #endif // LSAN_POSIX_H 50