mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
786e51648b
The libsanitizer build has been broken on Solaris 11.3 by the latest import. An upstream patch to fix this has now been committed: [sanitizer_common] Support Solaris < 11.4 in GetStaticTlsBoundary https://reviews.llvm.org/D120059 I'd like to cherry-pick it into libsanitizer, too. Bootstrapped without regressions on sparc-sun-solaris2.11, i386-pc-solaris2.11 (both Solaris 11.3 and 11.4), and x86_64-pc-linux-gnu. 2022-07-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> libsanitizer: PR sanitizer/105531 * sanitizer_common/sanitizer_linux_libcdep.cpp, sanitizer_common/sanitizer_solaris.h:: Cherry-pick llvm-project revision 3776db9a4fd2080d23d6a5f52e405eea44558761.
57 lines
1.5 KiB
C++
57 lines
1.5 KiB
C++
//===-- 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
|