(root)/
gcc-13.2.0/
libsanitizer/
lsan/
lsan_posix.h
       1  //=-- lsan_posix.h -----------------------------------------------------===//
       2  //
       3  // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
       4  // See https://llvm.org/LICENSE.txt for license information.
       5  // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
       6  //
       7  //===---------------------------------------------------------------------===//
       8  //
       9  // This file is a part of LeakSanitizer.
      10  // Standalone LSan RTL code common to POSIX-like systems.
      11  //
      12  //===---------------------------------------------------------------------===//
      13  
      14  #ifndef LSAN_POSIX_H
      15  #define LSAN_POSIX_H
      16  
      17  #include "lsan_thread.h"
      18  #include "sanitizer_common/sanitizer_platform.h"
      19  
      20  #if !SANITIZER_POSIX
      21  #error "lsan_posix.h is used only on POSIX-like systems (SANITIZER_POSIX)"
      22  #endif
      23  
      24  namespace __sanitizer {
      25  struct DTLS;
      26  }
      27  
      28  namespace __lsan {
      29  
      30  class ThreadContext final : public ThreadContextLsanBase {
      31   public:
      32    explicit ThreadContext(int tid);
      33    void OnStarted(void *arg) override;
      34    uptr tls_begin() { return tls_begin_; }
      35    uptr tls_end() { return tls_end_; }
      36    DTLS *dtls() { return dtls_; }
      37  
      38   private:
      39    uptr tls_begin_ = 0;
      40    uptr tls_end_ = 0;
      41    DTLS *dtls_ = nullptr;
      42  };
      43  
      44  void ThreadStart(u32 tid, tid_t os_id,
      45                   ThreadType thread_type = ThreadType::Regular);
      46  
      47  }  // namespace __lsan
      48  
      49  #endif  // LSAN_POSIX_H