| //===-- sanitizer_solaris.h -------------------------------------*- C++ -*-===// |
| // |
| // 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 Sanitizer runtime. It contains Solaris-specific |
| // definitions. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef SANITIZER_SOLARIS_H |
| #define SANITIZER_SOLARIS_H |
| |
| #include "sanitizer_internal_defs.h" |
| |
| #if SANITIZER_SOLARIS |
| |
| #include <link.h> |
| |
| namespace __sanitizer { |
| |
| // Beginning of declaration from OpenSolaris/Illumos |
| // $SRC/cmd/sgs/include/rtld.h. |
| struct Rt_map { |
| Link_map rt_public; |
| const char *rt_pathname; |
| ulong_t rt_padstart; |
| ulong_t rt_padimlen; |
| ulong_t rt_msize; |
| uint_t rt_flags; |
| uint_t rt_flags1; |
| ulong_t rt_tlsmodid; |
| }; |
| |
| // Structure matching the Solaris 11.4 struct dl_phdr_info used to determine |
| // presence of dlpi_tls_modid field at runtime. Cf. Solaris 11.4 |
| // dl_iterate_phdr(3C), Example 2. |
| struct dl_phdr_info_test { |
| ElfW(Addr) dlpi_addr; |
| const char *dlpi_name; |
| const ElfW(Phdr) * dlpi_phdr; |
| ElfW(Half) dlpi_phnum; |
| u_longlong_t dlpi_adds; |
| u_longlong_t dlpi_subs; |
| size_t dlpi_tls_modid; |
| void *dlpi_tls_data; |
| }; |
| |
| } // namespace __sanitizer |
| |
| #endif // SANITIZER_SOLARIS |
| |
| #endif // SANITIZER_SOLARIS_H |