forked from OSchip/llvm-project
[Sanitizers] Remove OpenBSD support (new attempt)
- Fixing VS compiler and other cases settings this time. Reviewers: dmajor, hans Reviewed By: hans Differential Revision: https://reviews.llvm.org/D89759
This commit is contained in:
parent
66a3b9073a
commit
53065c543f
|
@ -170,16 +170,8 @@ macro(test_targets)
|
|||
add_default_target_arch(${COMPILER_RT_DEFAULT_TARGET_ARCH})
|
||||
elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "i[2-6]86|x86|amd64")
|
||||
if(NOT MSVC)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
test_target_arch(i386 __i386__ "-m32")
|
||||
else()
|
||||
test_target_arch(x86_64 "" "-m64")
|
||||
endif()
|
||||
else()
|
||||
test_target_arch(x86_64 "" "-m64")
|
||||
test_target_arch(i386 __i386__ "-m32")
|
||||
endif()
|
||||
test_target_arch(x86_64 "" "-m64")
|
||||
test_target_arch(i386 __i386__ "-m32")
|
||||
else()
|
||||
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
test_target_arch(i386 "" "")
|
||||
|
|
|
@ -644,7 +644,7 @@ set(COMPILER_RT_SANITIZERS_TO_BUILD all CACHE STRING
|
|||
list_replace(COMPILER_RT_SANITIZERS_TO_BUILD all "${ALL_SANITIZERS}")
|
||||
|
||||
if (SANITIZER_COMMON_SUPPORTED_ARCH AND NOT LLVM_USE_SANITIZER AND
|
||||
(OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD|NetBSD|OpenBSD|Fuchsia|SunOS" OR
|
||||
(OS_NAME MATCHES "Android|Darwin|Linux|FreeBSD|NetBSD|Fuchsia|SunOS" OR
|
||||
(OS_NAME MATCHES "Windows" AND NOT CYGWIN AND
|
||||
(NOT MINGW OR CMAKE_CXX_COMPILER_ID MATCHES "Clang"))))
|
||||
set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)
|
||||
|
@ -658,8 +658,7 @@ else()
|
|||
set(COMPILER_RT_HAS_INTERCEPTION FALSE)
|
||||
endif()
|
||||
|
||||
if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH AND
|
||||
NOT OS_NAME MATCHES "OpenBSD")
|
||||
if (COMPILER_RT_HAS_SANITIZER_COMMON AND ASAN_SUPPORTED_ARCH)
|
||||
set(COMPILER_RT_HAS_ASAN TRUE)
|
||||
else()
|
||||
set(COMPILER_RT_HAS_ASAN FALSE)
|
||||
|
@ -729,14 +728,14 @@ else()
|
|||
endif()
|
||||
|
||||
if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND
|
||||
OS_NAME MATCHES "Darwin|Linux|FreeBSD|NetBSD|OpenBSD|Windows|Android|Fuchsia|SunOS")
|
||||
OS_NAME MATCHES "Darwin|Linux|FreeBSD|NetBSD|Windows|Android|Fuchsia|SunOS")
|
||||
set(COMPILER_RT_HAS_UBSAN TRUE)
|
||||
else()
|
||||
set(COMPILER_RT_HAS_UBSAN FALSE)
|
||||
endif()
|
||||
|
||||
if (COMPILER_RT_HAS_SANITIZER_COMMON AND UBSAN_SUPPORTED_ARCH AND
|
||||
OS_NAME MATCHES "Linux|FreeBSD|NetBSD|OpenBSD|Android|Darwin")
|
||||
OS_NAME MATCHES "Linux|FreeBSD|NetBSD|Android|Darwin")
|
||||
set(COMPILER_RT_HAS_UBSAN_MINIMAL TRUE)
|
||||
else()
|
||||
set(COMPILER_RT_HAS_UBSAN_MINIMAL FALSE)
|
||||
|
@ -771,14 +770,14 @@ else()
|
|||
endif()
|
||||
|
||||
if (COMPILER_RT_HAS_SANITIZER_COMMON AND XRAY_SUPPORTED_ARCH AND
|
||||
OS_NAME MATCHES "Darwin|Linux|FreeBSD|NetBSD|OpenBSD|Fuchsia")
|
||||
OS_NAME MATCHES "Darwin|Linux|FreeBSD|NetBSD|Fuchsia")
|
||||
set(COMPILER_RT_HAS_XRAY TRUE)
|
||||
else()
|
||||
set(COMPILER_RT_HAS_XRAY FALSE)
|
||||
endif()
|
||||
|
||||
if (COMPILER_RT_HAS_SANITIZER_COMMON AND FUZZER_SUPPORTED_ARCH AND
|
||||
OS_NAME MATCHES "Android|Darwin|Linux|NetBSD|FreeBSD|OpenBSD|Fuchsia|Windows")
|
||||
OS_NAME MATCHES "Android|Darwin|Linux|NetBSD|FreeBSD|Fuchsia|Windows")
|
||||
set(COMPILER_RT_HAS_FUZZER TRUE)
|
||||
else()
|
||||
set(COMPILER_RT_HAS_FUZZER FALSE)
|
||||
|
|
|
@ -245,7 +245,7 @@ TEST(AddressSanitizer, MemCmpOOBTest) { CmpOOBTestCommon<memcmp>(); }
|
|||
|
||||
TEST(AddressSanitizer, BCmpOOBTest) {
|
||||
#if (defined(__linux__) && !defined(__ANDROID__) && defined(_GNU_SOURCE)) || \
|
||||
defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
|
||||
defined(__NetBSD__) || defined(__FreeBSD__)
|
||||
CmpOOBTestCommon<bcmp>();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
#include "FuzzerPlatform.h"
|
||||
#if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FUCHSIA || \
|
||||
LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD || LIBFUZZER_EMSCRIPTEN
|
||||
LIBFUZZER_FREEBSD || LIBFUZZER_EMSCRIPTEN
|
||||
|
||||
#include "FuzzerExtFunctions.h"
|
||||
#include "FuzzerIO.h"
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include <cstdint>
|
||||
|
||||
#if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \
|
||||
LIBFUZZER_OPENBSD || LIBFUZZER_FUCHSIA || LIBFUZZER_EMSCRIPTEN
|
||||
LIBFUZZER_FUCHSIA || LIBFUZZER_EMSCRIPTEN
|
||||
__attribute__((weak)) extern uint8_t __start___libfuzzer_extra_counters;
|
||||
__attribute__((weak)) extern uint8_t __stop___libfuzzer_extra_counters;
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#define LIBFUZZER_LINUX 1
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif __APPLE__
|
||||
|
@ -27,7 +26,6 @@
|
|||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif __NetBSD__
|
||||
|
@ -36,7 +34,6 @@
|
|||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 1
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif __FreeBSD__
|
||||
|
@ -45,16 +42,6 @@
|
|||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 1
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif __OpenBSD__
|
||||
#define LIBFUZZER_APPLE 0
|
||||
#define LIBFUZZER_FUCHSIA 0
|
||||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 1
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif _WIN32
|
||||
|
@ -63,7 +50,6 @@
|
|||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 1
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif __Fuchsia__
|
||||
|
@ -72,7 +58,6 @@
|
|||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 0
|
||||
#elif __EMSCRIPTEN__
|
||||
|
@ -81,7 +66,6 @@
|
|||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#define LIBFUZZER_WINDOWS 0
|
||||
#define LIBFUZZER_EMSCRIPTEN 1
|
||||
#else
|
||||
|
@ -101,7 +85,7 @@
|
|||
|
||||
#define LIBFUZZER_POSIX \
|
||||
(LIBFUZZER_APPLE || LIBFUZZER_LINUX || LIBFUZZER_NETBSD || \
|
||||
LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD || LIBFUZZER_EMSCRIPTEN)
|
||||
LIBFUZZER_FREEBSD || LIBFUZZER_EMSCRIPTEN)
|
||||
|
||||
#ifdef __x86_64
|
||||
#if __has_attribute(target)
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
#include "FuzzerPlatform.h"
|
||||
#if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \
|
||||
LIBFUZZER_OPENBSD || LIBFUZZER_EMSCRIPTEN
|
||||
LIBFUZZER_EMSCRIPTEN
|
||||
#include "FuzzerCommand.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
|
|
@ -148,7 +148,7 @@ size_t GetPeakRSSMb() {
|
|||
if (getrusage(RUSAGE_SELF, &usage))
|
||||
return 0;
|
||||
if (LIBFUZZER_LINUX || LIBFUZZER_FREEBSD || LIBFUZZER_NETBSD ||
|
||||
LIBFUZZER_OPENBSD || LIBFUZZER_EMSCRIPTEN) {
|
||||
LIBFUZZER_EMSCRIPTEN) {
|
||||
// ru_maxrss is in KiB
|
||||
return usage.ru_maxrss >> 10;
|
||||
} else if (LIBFUZZER_APPLE) {
|
||||
|
|
|
@ -60,31 +60,21 @@ If 1, close stdout at startup. If 2 close stderr; if 3 close both.
|
|||
#define LIBFUZZER_APPLE 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#elif __APPLE__
|
||||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_APPLE 1
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#elif __NetBSD__
|
||||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_APPLE 0
|
||||
#define LIBFUZZER_NETBSD 1
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#elif __FreeBSD__
|
||||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_APPLE 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 1
|
||||
#define LIBFUZZER_OPENBSD 0
|
||||
#elif __OpenBSD__
|
||||
#define LIBFUZZER_LINUX 0
|
||||
#define LIBFUZZER_APPLE 0
|
||||
#define LIBFUZZER_NETBSD 0
|
||||
#define LIBFUZZER_FREEBSD 0
|
||||
#define LIBFUZZER_OPENBSD 1
|
||||
#else
|
||||
#error "Support for your platform has not been implemented"
|
||||
#endif
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "sanitizer_common/sanitizer_internal_defs.h"
|
||||
|
||||
#if !SANITIZER_LINUX && !SANITIZER_FREEBSD && !SANITIZER_MAC && \
|
||||
!SANITIZER_NETBSD && !SANITIZER_OPENBSD && !SANITIZER_WINDOWS && \
|
||||
!SANITIZER_NETBSD && !SANITIZER_WINDOWS && \
|
||||
!SANITIZER_FUCHSIA && !SANITIZER_RTEMS && !SANITIZER_SOLARIS
|
||||
# error "Interception doesn't work on this operating system."
|
||||
#endif
|
||||
|
@ -281,7 +281,7 @@ typedef unsigned long uptr;
|
|||
#define INCLUDED_FROM_INTERCEPTION_LIB
|
||||
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
|
||||
# include "interception_linux.h"
|
||||
# define INTERCEPT_FUNCTION(func) INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func)
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "interception.h"
|
||||
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
|
||||
#include <dlfcn.h> // for dlsym() and dlvsym()
|
||||
|
||||
|
@ -64,7 +64,7 @@ bool InterceptFunction(const char *name, uptr *ptr_to_real, uptr func,
|
|||
}
|
||||
|
||||
// Android and Solaris do not have dlvsym
|
||||
#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD
|
||||
#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS
|
||||
static void *GetFuncAddr(const char *name, const char *ver) {
|
||||
return dlvsym(RTLD_NEXT, name, ver);
|
||||
}
|
||||
|
@ -80,4 +80,4 @@ bool InterceptFunction(const char *name, const char *ver, uptr *ptr_to_real,
|
|||
} // namespace __interception
|
||||
|
||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
|
||||
// SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
// SANITIZER_SOLARIS
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
|
||||
#if !defined(INCLUDED_FROM_INTERCEPTION_LIB)
|
||||
# error "interception_linux.h should be included from interception library only"
|
||||
|
@ -35,8 +35,8 @@ bool InterceptFunction(const char *name, const char *ver, uptr *ptr_to_real,
|
|||
(::__interception::uptr) & (func), \
|
||||
(::__interception::uptr) & WRAP(func))
|
||||
|
||||
// Android, Solaris and OpenBSD do not have dlvsym
|
||||
#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS && !SANITIZER_OPENBSD
|
||||
// Android and Solaris do not have dlvsym
|
||||
#if !SANITIZER_ANDROID && !SANITIZER_SOLARIS
|
||||
#define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \
|
||||
::__interception::InterceptFunction( \
|
||||
#func, symver, \
|
||||
|
@ -50,4 +50,4 @@ bool InterceptFunction(const char *name, const char *ver, uptr *ptr_to_real,
|
|||
|
||||
#endif // INTERCEPTION_LINUX_H
|
||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
|
||||
// SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
// SANITIZER_SOLARIS
|
||||
|
|
|
@ -17,12 +17,10 @@ set(SANITIZER_SOURCES_NOTERMINATION
|
|||
sanitizer_linux_s390.cpp
|
||||
sanitizer_mac.cpp
|
||||
sanitizer_netbsd.cpp
|
||||
sanitizer_openbsd.cpp
|
||||
sanitizer_persistent_allocator.cpp
|
||||
sanitizer_platform_limits_freebsd.cpp
|
||||
sanitizer_platform_limits_linux.cpp
|
||||
sanitizer_platform_limits_netbsd.cpp
|
||||
sanitizer_platform_limits_openbsd.cpp
|
||||
sanitizer_platform_limits_posix.cpp
|
||||
sanitizer_platform_limits_solaris.cpp
|
||||
sanitizer_posix.cpp
|
||||
|
@ -159,7 +157,6 @@ set(SANITIZER_IMPL_HEADERS
|
|||
sanitizer_platform.h
|
||||
sanitizer_platform_interceptors.h
|
||||
sanitizer_platform_limits_netbsd.h
|
||||
sanitizer_platform_limits_openbsd.h
|
||||
sanitizer_platform_limits_posix.h
|
||||
sanitizer_platform_limits_solaris.h
|
||||
sanitizer_posix.h
|
||||
|
|
|
@ -1864,7 +1864,7 @@ UNUSED static void unpoison_passwd(void *ctx, __sanitizer_passwd *pwd) {
|
|||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, pwd->pw_gecos,
|
||||
REAL(strlen)(pwd->pw_gecos) + 1);
|
||||
#endif
|
||||
#if SANITIZER_MAC || SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_MAC || SANITIZER_FREEBSD || SANITIZER_NETBSD
|
||||
if (pwd->pw_class)
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, pwd->pw_class,
|
||||
REAL(strlen)(pwd->pw_class) + 1);
|
||||
|
@ -3750,7 +3750,7 @@ INTERCEPTOR(char *, strerror, int errnum) {
|
|||
// static storage.
|
||||
#if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) || \
|
||||
SANITIZER_MAC || SANITIZER_ANDROID || SANITIZER_NETBSD || \
|
||||
SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
SANITIZER_FREEBSD
|
||||
// POSIX version. Spec is not clear on whether buf is NULL-terminated.
|
||||
// At least on OSX, buf contents are valid even when the call fails.
|
||||
INTERCEPTOR(int, strerror_r, int errnum, char *buf, SIZE_T buflen) {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_MAC
|
||||
# define __errno_location __error
|
||||
#elif SANITIZER_ANDROID || SANITIZER_NETBSD || SANITIZER_OPENBSD || \
|
||||
#elif SANITIZER_ANDROID || SANITIZER_NETBSD || \
|
||||
SANITIZER_RTEMS
|
||||
# define __errno_location __errno
|
||||
#elif SANITIZER_SOLARIS
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
// TLS is handled differently on different platforms
|
||||
#if SANITIZER_LINUX || SANITIZER_NETBSD || \
|
||||
SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
SANITIZER_FREEBSD
|
||||
# define SANITIZER_TLS_INITIAL_EXEC_ATTRIBUTE \
|
||||
__attribute__((tls_model("initial-exec"))) thread_local
|
||||
#else
|
||||
|
@ -104,7 +104,7 @@
|
|||
//
|
||||
// FIXME: do we have anything like this on Mac?
|
||||
#ifndef SANITIZER_CAN_USE_PREINIT_ARRAY
|
||||
#if ((SANITIZER_LINUX && !SANITIZER_ANDROID) || SANITIZER_OPENBSD || \
|
||||
#if ((SANITIZER_LINUX && !SANITIZER_ANDROID) || \
|
||||
SANITIZER_FUCHSIA || SANITIZER_NETBSD) && !defined(PIC)
|
||||
#define SANITIZER_CAN_USE_PREINIT_ARRAY 1
|
||||
// Before Solaris 11.4, .preinit_array is fully supported only with GNU ld.
|
||||
|
@ -170,7 +170,7 @@ typedef int pid_t;
|
|||
#endif
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_MAC || \
|
||||
SANITIZER_MAC || \
|
||||
(SANITIZER_SOLARIS && (defined(_LP64) || _FILE_OFFSET_BITS == 64)) || \
|
||||
(SANITIZER_LINUX && defined(__x86_64__))
|
||||
typedef u64 OFF_T;
|
||||
|
@ -182,7 +182,7 @@ typedef u64 OFF64_T;
|
|||
#if (SANITIZER_WORDSIZE == 64) || SANITIZER_MAC
|
||||
typedef uptr operator_new_size_type;
|
||||
#else
|
||||
# if SANITIZER_OPENBSD || defined(__s390__) && !defined(__s390x__)
|
||||
# if defined(__s390__) && !defined(__s390x__)
|
||||
// Special case: 31-bit s390 has unsigned long as size_t.
|
||||
typedef unsigned long operator_new_size_type;
|
||||
# else
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "sanitizer_platform.h"
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || \
|
||||
SANITIZER_NETBSD || SANITIZER_OPENBSD
|
||||
SANITIZER_NETBSD
|
||||
|
||||
#include "sanitizer_libignore.h"
|
||||
#include "sanitizer_flags.h"
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "sanitizer_platform.h"
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
|
||||
#include "sanitizer_common.h"
|
||||
#include "sanitizer_flags.h"
|
||||
|
@ -59,13 +59,7 @@
|
|||
#include <sys/syscall.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#if !SANITIZER_OPENBSD
|
||||
#include <ucontext.h>
|
||||
#endif
|
||||
#if SANITIZER_OPENBSD
|
||||
#include <sys/futex.h>
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
|
||||
#if SANITIZER_LINUX
|
||||
|
@ -129,7 +123,7 @@ const int FUTEX_WAKE_PRIVATE = FUTEX_WAKE | FUTEX_PRIVATE_FLAG;
|
|||
#endif
|
||||
|
||||
// Note : FreeBSD had implemented both
|
||||
// Linux and OpenBSD apis, available from
|
||||
// Linux apis, available from
|
||||
// future 12.x version most likely
|
||||
#if SANITIZER_LINUX && defined(__NR_getrandom)
|
||||
# if !defined(GRND_NONBLOCK)
|
||||
|
@ -140,15 +134,11 @@ const int FUTEX_WAKE_PRIVATE = FUTEX_WAKE | FUTEX_PRIVATE_FLAG;
|
|||
# define SANITIZER_USE_GETRANDOM 0
|
||||
#endif // SANITIZER_LINUX && defined(__NR_getrandom)
|
||||
|
||||
#if SANITIZER_OPENBSD
|
||||
# define SANITIZER_USE_GETENTROPY 1
|
||||
#if SANITIZER_FREEBSD && __FreeBSD_version >= 1200000
|
||||
# define SANITIZER_USE_GETENTROPY 1
|
||||
#else
|
||||
# if SANITIZER_FREEBSD && __FreeBSD_version >= 1200000
|
||||
# define SANITIZER_USE_GETENTROPY 1
|
||||
# else
|
||||
# define SANITIZER_USE_GETENTROPY 0
|
||||
# endif
|
||||
#endif // SANITIZER_USE_GETENTROPY
|
||||
# define SANITIZER_USE_GETENTROPY 0
|
||||
#endif
|
||||
|
||||
namespace __sanitizer {
|
||||
|
||||
|
@ -166,7 +156,7 @@ namespace __sanitizer {
|
|||
|
||||
// --------------- sanitizer_libc.h
|
||||
#if !SANITIZER_SOLARIS && !SANITIZER_NETBSD
|
||||
#if !SANITIZER_S390 && !SANITIZER_OPENBSD
|
||||
#if !SANITIZER_S390
|
||||
uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd,
|
||||
u64 offset) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS
|
||||
|
@ -179,9 +169,8 @@ uptr internal_mmap(void *addr, uptr length, int prot, int flags, int fd,
|
|||
offset / 4096);
|
||||
#endif
|
||||
}
|
||||
#endif // !SANITIZER_S390 && !SANITIZER_OPENBSD
|
||||
#endif // !SANITIZER_S390
|
||||
|
||||
#if !SANITIZER_OPENBSD
|
||||
uptr internal_munmap(void *addr, uptr length) {
|
||||
return internal_syscall(SYSCALL(munmap), (uptr)addr, length);
|
||||
}
|
||||
|
@ -193,7 +182,6 @@ int internal_mprotect(void *addr, uptr length, int prot) {
|
|||
int internal_madvise(uptr addr, uptr length, int advice) {
|
||||
return internal_syscall(SYSCALL(madvise), addr, length, advice);
|
||||
}
|
||||
#endif
|
||||
|
||||
uptr internal_close(fd_t fd) {
|
||||
return internal_syscall(SYSCALL(close), fd);
|
||||
|
@ -305,7 +293,7 @@ static void kernel_stat_to_stat(struct kernel_stat *in, struct stat *out) {
|
|||
#endif
|
||||
|
||||
uptr internal_stat(const char *path, void *buf) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD
|
||||
return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, (uptr)buf, 0);
|
||||
#elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
|
||||
return internal_syscall(SYSCALL(newfstatat), AT_FDCWD, (uptr)path, (uptr)buf,
|
||||
|
@ -329,7 +317,7 @@ uptr internal_stat(const char *path, void *buf) {
|
|||
}
|
||||
|
||||
uptr internal_lstat(const char *path, void *buf) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD
|
||||
return internal_syscall(SYSCALL(fstatat), AT_FDCWD, (uptr)path, (uptr)buf,
|
||||
AT_SYMLINK_NOFOLLOW);
|
||||
#elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
|
||||
|
@ -354,9 +342,8 @@ uptr internal_lstat(const char *path, void *buf) {
|
|||
}
|
||||
|
||||
uptr internal_fstat(fd_t fd, void *buf) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD || \
|
||||
SANITIZER_LINUX_USES_64BIT_SYSCALLS
|
||||
#if SANITIZER_MIPS64 && !SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX_USES_64BIT_SYSCALLS
|
||||
#if SANITIZER_MIPS64
|
||||
// For mips64, fstat syscall fills buffer in the format of kernel_stat
|
||||
struct kernel_stat kbuf;
|
||||
int res = internal_syscall(SYSCALL(fstat), fd, &kbuf);
|
||||
|
@ -396,16 +383,13 @@ uptr internal_readlink(const char *path, char *buf, uptr bufsize) {
|
|||
#if SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
|
||||
return internal_syscall(SYSCALL(readlinkat), AT_FDCWD, (uptr)path, (uptr)buf,
|
||||
bufsize);
|
||||
#elif SANITIZER_OPENBSD
|
||||
return internal_syscall(SYSCALL(readlinkat), AT_FDCWD, (uptr)path, (uptr)buf,
|
||||
bufsize);
|
||||
#else
|
||||
return internal_syscall(SYSCALL(readlink), (uptr)path, (uptr)buf, bufsize);
|
||||
#endif
|
||||
}
|
||||
|
||||
uptr internal_unlink(const char *path) {
|
||||
#if SANITIZER_USES_CANONICAL_LINUX_SYSCALLS || SANITIZER_OPENBSD
|
||||
#if SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
|
||||
return internal_syscall(SYSCALL(unlinkat), AT_FDCWD, (uptr)path, 0);
|
||||
#else
|
||||
return internal_syscall(SYSCALL(unlink), (uptr)path);
|
||||
|
@ -416,7 +400,7 @@ uptr internal_rename(const char *oldpath, const char *newpath) {
|
|||
#if defined(__riscv)
|
||||
return internal_syscall(SYSCALL(renameat2), AT_FDCWD, (uptr)oldpath, AT_FDCWD,
|
||||
(uptr)newpath, 0);
|
||||
#elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS || SANITIZER_OPENBSD
|
||||
#elif SANITIZER_USES_CANONICAL_LINUX_SYSCALLS
|
||||
return internal_syscall(SYSCALL(renameat), AT_FDCWD, (uptr)oldpath, AT_FDCWD,
|
||||
(uptr)newpath);
|
||||
#else
|
||||
|
@ -446,7 +430,7 @@ uptr internal_execve(const char *filename, char *const argv[],
|
|||
|
||||
#if !SANITIZER_NETBSD
|
||||
void internal__exit(int exitcode) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
#if SANITIZER_FREEBSD || SANITIZER_SOLARIS
|
||||
internal_syscall(SYSCALL(exit), exitcode);
|
||||
#else
|
||||
internal_syscall(SYSCALL(exit_group), exitcode);
|
||||
|
@ -476,8 +460,6 @@ tid_t GetTid() {
|
|||
long Tid;
|
||||
thr_self(&Tid);
|
||||
return Tid;
|
||||
#elif SANITIZER_OPENBSD
|
||||
return internal_syscall(SYSCALL(getthrid));
|
||||
#elif SANITIZER_SOLARIS
|
||||
return thr_self();
|
||||
#else
|
||||
|
@ -490,9 +472,6 @@ int TgKill(pid_t pid, tid_t tid, int sig) {
|
|||
return internal_syscall(SYSCALL(tgkill), pid, tid, sig);
|
||||
#elif SANITIZER_FREEBSD
|
||||
return internal_syscall(SYSCALL(thr_kill2), pid, tid, sig);
|
||||
#elif SANITIZER_OPENBSD
|
||||
(void)pid;
|
||||
return internal_syscall(SYSCALL(thrkill), tid, sig, nullptr);
|
||||
#elif SANITIZER_SOLARIS
|
||||
(void)pid;
|
||||
return thr_kill(tid, sig);
|
||||
|
@ -502,7 +481,7 @@ int TgKill(pid_t pid, tid_t tid, int sig) {
|
|||
|
||||
#if !SANITIZER_SOLARIS && !SANITIZER_NETBSD
|
||||
u64 NanoTime() {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD
|
||||
timeval tv;
|
||||
#else
|
||||
kernel_timeval tv;
|
||||
|
@ -521,8 +500,7 @@ uptr internal_clock_gettime(__sanitizer_clockid_t clk_id, void *tp) {
|
|||
// 'environ' array (on some others) and does not use libc. This function
|
||||
// should be called first inside __asan_init.
|
||||
const char *GetEnv(const char *name) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD || \
|
||||
SANITIZER_SOLARIS
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_SOLARIS
|
||||
if (::environ != 0) {
|
||||
uptr NameLen = internal_strlen(name);
|
||||
for (char **Env = ::environ; *Env != 0; Env++) {
|
||||
|
@ -560,15 +538,13 @@ const char *GetEnv(const char *name) {
|
|||
#endif
|
||||
}
|
||||
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD && !SANITIZER_OPENBSD && \
|
||||
!SANITIZER_GO
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD && !SANITIZER_GO
|
||||
extern "C" {
|
||||
SANITIZER_WEAK_ATTRIBUTE extern void *__libc_stack_end;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD && \
|
||||
!SANITIZER_OPENBSD
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD
|
||||
static void ReadNullSepFileToArray(const char *path, char ***arr,
|
||||
int arr_size) {
|
||||
char *buff;
|
||||
|
@ -593,7 +569,6 @@ static void ReadNullSepFileToArray(const char *path, char ***arr,
|
|||
}
|
||||
#endif
|
||||
|
||||
#if !SANITIZER_OPENBSD
|
||||
static void GetArgsAndEnv(char ***argv, char ***envp) {
|
||||
#if SANITIZER_FREEBSD
|
||||
// On FreeBSD, retrieving the argument and environment arrays is done via the
|
||||
|
@ -645,8 +620,6 @@ char **GetEnviron() {
|
|||
return envp;
|
||||
}
|
||||
|
||||
#endif // !SANITIZER_OPENBSD
|
||||
|
||||
#if !SANITIZER_SOLARIS
|
||||
enum MutexState {
|
||||
MtxUnlocked = 0,
|
||||
|
@ -702,16 +675,6 @@ void BlockingMutex::CheckLocked() {
|
|||
// 32-bit syscall here.
|
||||
#if SANITIZER_NETBSD
|
||||
// Not used
|
||||
#elif SANITIZER_OPENBSD
|
||||
// struct dirent is different for Linux and us. At this moment, we use only
|
||||
// d_fileno (Linux call this d_ino), d_reclen, and d_name.
|
||||
struct linux_dirent {
|
||||
u64 d_ino; // d_fileno
|
||||
u16 d_reclen;
|
||||
u16 d_namlen; // not used
|
||||
u8 d_type; // not used
|
||||
char d_name[NAME_MAX + 1];
|
||||
};
|
||||
#else
|
||||
struct linux_dirent {
|
||||
#if SANITIZER_X32 || defined(__aarch64__) || SANITIZER_RISCV64
|
||||
|
@ -789,19 +752,13 @@ int internal_fork() {
|
|||
#endif
|
||||
}
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD
|
||||
int internal_sysctl(const int *name, unsigned int namelen, void *oldp,
|
||||
uptr *oldlenp, const void *newp, uptr newlen) {
|
||||
#if SANITIZER_OPENBSD
|
||||
return sysctl(name, namelen, oldp, (size_t *)oldlenp, (void *)newp,
|
||||
(size_t)newlen);
|
||||
#else
|
||||
return internal_syscall(SYSCALL(__sysctl), name, namelen, oldp,
|
||||
(size_t *)oldlenp, newp, (size_t)newlen);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if SANITIZER_FREEBSD
|
||||
int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp,
|
||||
const void *newp, uptr newlen) {
|
||||
// Note: this function can be called during startup, so we need to avoid
|
||||
|
@ -829,7 +786,6 @@ int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp,
|
|||
#endif
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if SANITIZER_LINUX
|
||||
#define SA_RESTORER 0x04000000
|
||||
|
@ -882,7 +838,7 @@ int internal_sigaction_norestorer(int signum, const void *act, void *oldact) {
|
|||
|
||||
uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
|
||||
__sanitizer_sigset_t *oldset) {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD
|
||||
return internal_syscall(SYSCALL(sigprocmask), how, set, oldset);
|
||||
#else
|
||||
__sanitizer_kernel_sigset_t *k_set = (__sanitizer_kernel_sigset_t *)set;
|
||||
|
@ -1059,7 +1015,7 @@ static uptr GetKernelAreaSize() {
|
|||
#endif // SANITIZER_WORDSIZE == 32
|
||||
|
||||
uptr GetMaxVirtualAddress() {
|
||||
#if (SANITIZER_NETBSD || SANITIZER_OPENBSD) && defined(__x86_64__)
|
||||
#if SANITIZER_NETBSD && defined(__x86_64__)
|
||||
return 0x7f7ffffff000ULL; // (0x00007f8000000000 - PAGE_SIZE)
|
||||
#elif SANITIZER_WORDSIZE == 64
|
||||
# if defined(__powerpc64__) || defined(__aarch64__)
|
||||
|
@ -1122,7 +1078,6 @@ uptr GetPageSize() {
|
|||
}
|
||||
#endif // !SANITIZER_ANDROID
|
||||
|
||||
#if !SANITIZER_OPENBSD
|
||||
uptr ReadBinaryName(/*out*/char *buf, uptr buf_len) {
|
||||
#if SANITIZER_SOLARIS
|
||||
const char *default_module_name = getexecname();
|
||||
|
@ -1159,7 +1114,6 @@ uptr ReadBinaryName(/*out*/char *buf, uptr buf_len) {
|
|||
return module_name_len;
|
||||
#endif
|
||||
}
|
||||
#endif // !SANITIZER_OPENBSD
|
||||
|
||||
uptr ReadLongProcessName(/*out*/ char *buf, uptr buf_len) {
|
||||
#if SANITIZER_LINUX
|
||||
|
@ -1192,10 +1146,10 @@ bool LibraryNameIs(const char *full_name, const char *base_name) {
|
|||
// Call cb for each region mapped by map.
|
||||
void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)) {
|
||||
CHECK_NE(map, nullptr);
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
|
||||
#if !SANITIZER_FREEBSD
|
||||
typedef ElfW(Phdr) Elf_Phdr;
|
||||
typedef ElfW(Ehdr) Elf_Ehdr;
|
||||
#endif // !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
|
||||
#endif // !SANITIZER_FREEBSD
|
||||
char *base = (char *)map->l_addr;
|
||||
Elf_Ehdr *ehdr = (Elf_Ehdr *)base;
|
||||
char *phdrs = base + ehdr->e_phoff;
|
||||
|
@ -1845,11 +1799,7 @@ static bool Aarch64GetESR(ucontext_t *ucontext, u64 *esr) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#if SANITIZER_OPENBSD
|
||||
using Context = sigcontext;
|
||||
#else
|
||||
using Context = ucontext_t;
|
||||
#endif
|
||||
|
||||
SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
|
||||
Context *ucontext = (Context *)context;
|
||||
|
@ -1859,8 +1809,6 @@ SignalContext::WriteFlag SignalContext::GetWriteFlag() const {
|
|||
uptr err = ucontext->uc_mcontext.mc_err;
|
||||
#elif SANITIZER_NETBSD
|
||||
uptr err = ucontext->uc_mcontext.__gregs[_REG_ERR];
|
||||
#elif SANITIZER_OPENBSD
|
||||
uptr err = ucontext->sc_err;
|
||||
#elif SANITIZER_SOLARIS && defined(__i386__)
|
||||
const int Err = 13;
|
||||
uptr err = ucontext->uc_mcontext.gregs[Err];
|
||||
|
@ -2086,11 +2034,6 @@ static void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {
|
|||
*pc = ucontext->uc_mcontext.mc_rip;
|
||||
*bp = ucontext->uc_mcontext.mc_rbp;
|
||||
*sp = ucontext->uc_mcontext.mc_rsp;
|
||||
#elif SANITIZER_OPENBSD
|
||||
sigcontext *ucontext = (sigcontext *)context;
|
||||
*pc = ucontext->sc_rip;
|
||||
*bp = ucontext->sc_rbp;
|
||||
*sp = ucontext->sc_rsp;
|
||||
# else
|
||||
ucontext_t *ucontext = (ucontext_t*)context;
|
||||
*pc = ucontext->uc_mcontext.gregs[REG_RIP];
|
||||
|
@ -2103,11 +2046,6 @@ static void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {
|
|||
*pc = ucontext->uc_mcontext.mc_eip;
|
||||
*bp = ucontext->uc_mcontext.mc_ebp;
|
||||
*sp = ucontext->uc_mcontext.mc_esp;
|
||||
#elif SANITIZER_OPENBSD
|
||||
sigcontext *ucontext = (sigcontext *)context;
|
||||
*pc = ucontext->sc_eip;
|
||||
*bp = ucontext->sc_ebp;
|
||||
*sp = ucontext->sc_esp;
|
||||
# else
|
||||
ucontext_t *ucontext = (ucontext_t*)context;
|
||||
# if SANITIZER_SOLARIS
|
||||
|
|
|
@ -14,12 +14,11 @@
|
|||
|
||||
#include "sanitizer_platform.h"
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
#include "sanitizer_common.h"
|
||||
#include "sanitizer_internal_defs.h"
|
||||
#include "sanitizer_platform_limits_freebsd.h"
|
||||
#include "sanitizer_platform_limits_netbsd.h"
|
||||
#include "sanitizer_platform_limits_openbsd.h"
|
||||
#include "sanitizer_platform_limits_posix.h"
|
||||
#include "sanitizer_platform_limits_solaris.h"
|
||||
#include "sanitizer_posix.h"
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "sanitizer_platform.h"
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
|
||||
#include "sanitizer_allocator_internal.h"
|
||||
#include "sanitizer_atomic.h"
|
||||
|
@ -50,11 +50,6 @@
|
|||
#define pthread_getattr_np pthread_attr_get_np
|
||||
#endif
|
||||
|
||||
#if SANITIZER_OPENBSD
|
||||
#include <pthread_np.h>
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
|
||||
#if SANITIZER_NETBSD
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/tls.h>
|
||||
|
@ -142,11 +137,6 @@ void GetThreadStackTopAndBottom(bool at_initialization, uptr *stack_top,
|
|||
CHECK_EQ(thr_stksegment(&ss), 0);
|
||||
stacksize = ss.ss_size;
|
||||
stackaddr = (char *)ss.ss_sp - stacksize;
|
||||
#elif SANITIZER_OPENBSD
|
||||
stack_t sattr;
|
||||
CHECK_EQ(pthread_stackseg_np(pthread_self(), &sattr), 0);
|
||||
stackaddr = sattr.ss_sp;
|
||||
stacksize = sattr.ss_size;
|
||||
#else // !SANITIZER_SOLARIS
|
||||
pthread_attr_t attr;
|
||||
pthread_attr_init(&attr);
|
||||
|
@ -194,7 +184,7 @@ __attribute__((unused)) static bool GetLibcVersion(int *major, int *minor,
|
|||
}
|
||||
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_ANDROID && !SANITIZER_GO && \
|
||||
!SANITIZER_NETBSD && !SANITIZER_OPENBSD && !SANITIZER_SOLARIS
|
||||
!SANITIZER_NETBSD && !SANITIZER_SOLARIS
|
||||
static uptr g_tls_size;
|
||||
|
||||
#ifdef __i386__
|
||||
|
@ -498,9 +488,6 @@ static void GetTls(uptr *addr, uptr *size) {
|
|||
*addr = (uptr)tcb->tcb_dtv[1];
|
||||
}
|
||||
}
|
||||
#elif SANITIZER_OPENBSD
|
||||
*addr = 0;
|
||||
*size = 0;
|
||||
#elif SANITIZER_ANDROID
|
||||
*addr = 0;
|
||||
*size = 0;
|
||||
|
@ -517,7 +504,7 @@ static void GetTls(uptr *addr, uptr *size) {
|
|||
#if !SANITIZER_GO
|
||||
uptr GetTlsSize() {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_ANDROID || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
uptr addr, size;
|
||||
GetTls(&addr, &size);
|
||||
return size;
|
||||
|
@ -554,13 +541,13 @@ void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size,
|
|||
#endif
|
||||
}
|
||||
|
||||
#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
|
||||
#if !SANITIZER_FREEBSD
|
||||
typedef ElfW(Phdr) Elf_Phdr;
|
||||
#elif SANITIZER_WORDSIZE == 32 && __FreeBSD_version <= 902001 // v9.2
|
||||
#define Elf_Phdr XElf32_Phdr
|
||||
#define dl_phdr_info xdl_phdr_info
|
||||
#define dl_iterate_phdr(c, b) xdl_iterate_phdr((c), (b))
|
||||
#endif // !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
|
||||
#endif // !SANITIZER_FREEBSD
|
||||
|
||||
struct DlIteratePhdrData {
|
||||
InternalMmapVectorNoCtor<LoadedModule> *modules;
|
||||
|
@ -680,7 +667,7 @@ uptr GetRSS() {
|
|||
// sysconf(_SC_NPROCESSORS_{CONF,ONLN}) cannot be used on most platforms as
|
||||
// they allocate memory.
|
||||
u32 GetNumberOfCPUs() {
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD
|
||||
u32 ncpu;
|
||||
int req[2];
|
||||
uptr len = sizeof(ncpu);
|
||||
|
@ -837,7 +824,6 @@ u64 MonotonicNanoTime() {
|
|||
}
|
||||
#endif // SANITIZER_LINUX && !SANITIZER_GO
|
||||
|
||||
#if !SANITIZER_OPENBSD
|
||||
void ReExec() {
|
||||
const char *pathname = "/proc/self/exe";
|
||||
|
||||
|
@ -869,7 +855,6 @@ void ReExec() {
|
|||
Printf("execve failed, errno %d\n", rverrno);
|
||||
Die();
|
||||
}
|
||||
#endif // !SANITIZER_OPENBSD
|
||||
|
||||
void UnmapFromTo(uptr from, uptr to) {
|
||||
if (to == from)
|
||||
|
|
|
@ -1,119 +0,0 @@
|
|||
//===-- sanitizer_openbsd.cpp ---------------------------------------------===//
|
||||
//
|
||||
// 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 shared between various sanitizers' runtime libraries and
|
||||
// implements Solaris-specific functions.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "sanitizer_platform.h"
|
||||
#if SANITIZER_OPENBSD
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "sanitizer_common.h"
|
||||
#include "sanitizer_flags.h"
|
||||
#include "sanitizer_internal_defs.h"
|
||||
#include "sanitizer_libc.h"
|
||||
#include "sanitizer_placement_new.h"
|
||||
#include "sanitizer_platform_limits_posix.h"
|
||||
#include "sanitizer_procmaps.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <pthread.h>
|
||||
#include <sched.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/shm.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
extern char **environ;
|
||||
|
||||
namespace __sanitizer {
|
||||
|
||||
uptr internal_mmap(void *addr, size_t length, int prot, int flags, int fd,
|
||||
u64 offset) {
|
||||
return (uptr)mmap(addr, length, prot, flags, fd, offset);
|
||||
}
|
||||
|
||||
uptr internal_munmap(void *addr, uptr length) { return munmap(addr, length); }
|
||||
|
||||
int internal_mprotect(void *addr, uptr length, int prot) {
|
||||
return mprotect(addr, length, prot);
|
||||
}
|
||||
|
||||
int internal_madvise(uptr addr, uptr length, int advice) {
|
||||
return madvise((void *)addr, length, advice);
|
||||
}
|
||||
|
||||
int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp,
|
||||
const void *newp, uptr newlen) {
|
||||
Printf("internal_sysctlbyname not implemented for OpenBSD");
|
||||
Die();
|
||||
return 0;
|
||||
}
|
||||
|
||||
uptr ReadBinaryName(/*out*/char *buf, uptr buf_len) {
|
||||
// On OpenBSD we cannot get the full path
|
||||
struct kinfo_proc kp;
|
||||
uptr kl;
|
||||
const int Mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()};
|
||||
if (internal_sysctl(Mib, ARRAY_SIZE(Mib), &kp, &kl, NULL, 0) != -1)
|
||||
return internal_snprintf(buf,
|
||||
(KI_MAXCOMLEN < buf_len ? KI_MAXCOMLEN : buf_len),
|
||||
"%s", kp.p_comm);
|
||||
return (uptr)0;
|
||||
}
|
||||
|
||||
static void GetArgsAndEnv(char ***argv, char ***envp) {
|
||||
uptr nargv;
|
||||
uptr nenv;
|
||||
int argvmib[4] = {CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV};
|
||||
int envmib[4] = {CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ENV};
|
||||
if (internal_sysctl(argvmib, 4, NULL, &nargv, NULL, 0) == -1) {
|
||||
Printf("sysctl KERN_PROC_NARGV failed\n");
|
||||
Die();
|
||||
}
|
||||
if (internal_sysctl(envmib, 4, NULL, &nenv, NULL, 0) == -1) {
|
||||
Printf("sysctl KERN_PROC_NENV failed\n");
|
||||
Die();
|
||||
}
|
||||
if (internal_sysctl(argvmib, 4, &argv, &nargv, NULL, 0) == -1) {
|
||||
Printf("sysctl KERN_PROC_ARGV failed\n");
|
||||
Die();
|
||||
}
|
||||
if (internal_sysctl(envmib, 4, &envp, &nenv, NULL, 0) == -1) {
|
||||
Printf("sysctl KERN_PROC_ENV failed\n");
|
||||
Die();
|
||||
}
|
||||
}
|
||||
|
||||
char **GetArgv() {
|
||||
char **argv, **envp;
|
||||
GetArgsAndEnv(&argv, &envp);
|
||||
return argv;
|
||||
}
|
||||
|
||||
char **GetEnviron() {
|
||||
char **argv, **envp;
|
||||
GetArgsAndEnv(&argv, &envp);
|
||||
return envp;
|
||||
}
|
||||
|
||||
void ReExec() {
|
||||
UNIMPLEMENTED();
|
||||
}
|
||||
|
||||
} // namespace __sanitizer
|
||||
|
||||
#endif // SANITIZER_OPENBSD
|
|
@ -13,7 +13,7 @@
|
|||
#define SANITIZER_PLATFORM_H
|
||||
|
||||
#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
|
||||
!defined(__OpenBSD__) && !defined(__APPLE__) && !defined(_WIN32) && \
|
||||
!defined(__APPLE__) && !defined(_WIN32) && \
|
||||
!defined(__Fuchsia__) && !defined(__rtems__) && \
|
||||
!(defined(__sun__) && defined(__svr4__))
|
||||
# error "This operating system is not supported"
|
||||
|
@ -37,12 +37,6 @@
|
|||
# define SANITIZER_NETBSD 0
|
||||
#endif
|
||||
|
||||
#if defined(__OpenBSD__)
|
||||
# define SANITIZER_OPENBSD 1
|
||||
#else
|
||||
# define SANITIZER_OPENBSD 0
|
||||
#endif
|
||||
|
||||
#if defined(__sun__) && defined(__svr4__)
|
||||
# define SANITIZER_SOLARIS 1
|
||||
#else
|
||||
|
@ -112,7 +106,7 @@
|
|||
|
||||
#define SANITIZER_POSIX \
|
||||
(SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || \
|
||||
SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_SOLARIS)
|
||||
SANITIZER_NETBSD || SANITIZER_SOLARIS)
|
||||
|
||||
#if __LP64__ || defined(_WIN64)
|
||||
# define SANITIZER_WORDSIZE 64
|
||||
|
@ -339,7 +333,7 @@
|
|||
#endif
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
# define SANITIZER_MADVISE_DONTNEED MADV_FREE
|
||||
#else
|
||||
# define SANITIZER_MADVISE_DONTNEED MADV_DONTNEED
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
#if SI_POSIX
|
||||
# include "sanitizer_platform_limits_freebsd.h"
|
||||
# include "sanitizer_platform_limits_netbsd.h"
|
||||
# include "sanitizer_platform_limits_openbsd.h"
|
||||
# include "sanitizer_platform_limits_posix.h"
|
||||
# include "sanitizer_platform_limits_solaris.h"
|
||||
#endif
|
||||
|
@ -65,12 +64,6 @@
|
|||
# define SI_NETBSD 0
|
||||
#endif
|
||||
|
||||
#if SANITIZER_OPENBSD
|
||||
#define SI_OPENBSD 1
|
||||
#else
|
||||
#define SI_OPENBSD 0
|
||||
#endif
|
||||
|
||||
#if SANITIZER_LINUX
|
||||
# define SI_LINUX 1
|
||||
#else
|
||||
|
@ -164,7 +157,7 @@
|
|||
#define SANITIZER_INTERCEPT_MEMCMP SI_NOT_FUCHSIA
|
||||
#define SANITIZER_INTERCEPT_BCMP \
|
||||
SANITIZER_INTERCEPT_MEMCMP && \
|
||||
((SI_POSIX && _GNU_SOURCE) || SI_NETBSD || SI_OPENBSD || SI_FREEBSD)
|
||||
((SI_POSIX && _GNU_SOURCE) || SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_STRNDUP SI_POSIX
|
||||
#define SANITIZER_INTERCEPT___STRNDUP SI_LINUX_NOT_FREEBSD
|
||||
#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
|
||||
|
@ -178,7 +171,7 @@
|
|||
#define SANITIZER_INTERCEPT_MEMMEM (SI_POSIX && !SI_MAC_DEPLOYMENT_BELOW_10_7)
|
||||
#define SANITIZER_INTERCEPT_MEMCHR SI_NOT_FUCHSIA
|
||||
#define SANITIZER_INTERCEPT_MEMRCHR \
|
||||
(SI_FREEBSD || SI_LINUX || SI_NETBSD || SI_OPENBSD)
|
||||
(SI_FREEBSD || SI_LINUX || SI_NETBSD)
|
||||
|
||||
#define SANITIZER_INTERCEPT_READ SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_PREAD SI_POSIX
|
||||
|
@ -198,7 +191,7 @@
|
|||
#define SANITIZER_INTERCEPT_WRITEV SI_POSIX
|
||||
|
||||
#define SANITIZER_INTERCEPT_PREADV \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID)
|
||||
#define SANITIZER_INTERCEPT_PWRITEV SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_PREADV64 SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_PWRITEV64 SI_LINUX_NOT_ANDROID
|
||||
|
@ -225,22 +218,22 @@
|
|||
|
||||
#define SANITIZER_INTERCEPT_GETPWNAM_AND_FRIENDS SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_GETPWNAM_R_AND_FRIENDS \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_GETPWENT \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_FGETGRENT_R \
|
||||
(SI_FREEBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_FGETPWENT SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||
#define SANITIZER_INTERCEPT_GETPWENT_R \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_FGETPWENT_R \
|
||||
(SI_FREEBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_SETPWENT \
|
||||
(SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_CLOCK_GETTIME \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_CLOCK_GETCPUCLOCKID SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_GETITIMER SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_TIME SI_POSIX
|
||||
|
@ -248,7 +241,7 @@
|
|||
#define SANITIZER_INTERCEPT_GLOB64 SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_WAIT SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_INET SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_GETSCHEDPARAM (SI_POSIX && !SI_OPENBSD)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_GETSCHEDPARAM SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_GETADDRINFO SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_GETNAMEINFO SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_GETSOCKNAME SI_POSIX
|
||||
|
@ -265,7 +258,7 @@
|
|||
#define SANITIZER_INTERCEPT_GETSOCKOPT SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_ACCEPT SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_ACCEPT4 \
|
||||
(SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_OPENBSD)
|
||||
(SI_LINUX_NOT_ANDROID || SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_PACCEPT SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_MODF SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_RECVMSG SI_POSIX
|
||||
|
@ -300,20 +293,20 @@
|
|||
#define SANITIZER_INTERCEPT_WCSXFRM SI_POSIX
|
||||
#define SANITIZER_INTERCEPT___WCSXFRM_L SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_WCSNRTOMBS \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_WCRTOMB \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_WCTOMB \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_TCGETATTR SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||
#define SANITIZER_INTERCEPT_REALPATH SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_CANONICALIZE_FILE_NAME \
|
||||
(SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_CONFSTR \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_SCHED_GETAFFINITY SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_SCHED_GETPARAM SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||
|
@ -321,7 +314,7 @@
|
|||
#define SANITIZER_INTERCEPT_STRERROR_R SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_XPG_STRERROR_R SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_SCANDIR \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_SCANDIR64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32
|
||||
#define SANITIZER_INTERCEPT_GETGROUPS SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_POLL SI_POSIX
|
||||
|
@ -339,7 +332,7 @@
|
|||
#define SANITIZER_INTERCEPT_SIGPROCMASK SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_SIGMASK SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_BACKTRACE \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_GETMNTENT SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_STATFS \
|
||||
|
@ -347,25 +340,25 @@
|
|||
#define SANITIZER_INTERCEPT_STATFS64 \
|
||||
(((SI_MAC && !TARGET_CPU_ARM64) && !SI_IOS) || SI_LINUX_NOT_ANDROID)
|
||||
#define SANITIZER_INTERCEPT_STATVFS \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID)
|
||||
#define SANITIZER_INTERCEPT_STATVFS64 SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_INITGROUPS SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_ETHER_NTOA_ATON (SI_POSIX && !SI_OPENBSD)
|
||||
#define SANITIZER_INTERCEPT_ETHER_NTOA_ATON SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_ETHER_HOST \
|
||||
(SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID)
|
||||
#define SANITIZER_INTERCEPT_ETHER_R (SI_FREEBSD || SI_LINUX_NOT_ANDROID)
|
||||
#define SANITIZER_INTERCEPT_SHMCTL \
|
||||
(((SI_FREEBSD || SI_LINUX_NOT_ANDROID) && SANITIZER_WORDSIZE == 64) || \
|
||||
SI_NETBSD || SI_OPENBSD || SI_SOLARIS) // NOLINT
|
||||
SI_NETBSD || SI_SOLARIS) // NOLINT
|
||||
#define SANITIZER_INTERCEPT_RANDOM_R SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETINHERITSCHED \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GETAFFINITY_NP SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET_SCHED (SI_POSIX && !SI_OPENBSD)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_ATTR_GET_SCHED SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETPSHARED \
|
||||
(SI_POSIX && !SI_NETBSD && !SI_OPENBSD)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETTYPE (SI_POSIX && !SI_OPENBSD)
|
||||
(SI_POSIX && !SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETTYPE SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETPROTOCOL \
|
||||
(SI_MAC || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETPRIOCEILING \
|
||||
|
@ -374,14 +367,14 @@
|
|||
(SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEXATTR_GETROBUST_NP SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_RWLOCKATTR_GETPSHARED \
|
||||
(SI_POSIX && !SI_NETBSD && !SI_OPENBSD)
|
||||
(SI_POSIX && !SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_RWLOCKATTR_GETKIND_NP SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_CONDATTR_GETPSHARED \
|
||||
(SI_POSIX && !SI_NETBSD && !SI_OPENBSD)
|
||||
(SI_POSIX && !SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_CONDATTR_GETCLOCK \
|
||||
(SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_BARRIERATTR_GETPSHARED \
|
||||
(SI_LINUX_NOT_ANDROID && !SI_NETBSD && !SI_OPENBSD)
|
||||
(SI_LINUX_NOT_ANDROID && !SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_THR_EXIT SI_FREEBSD
|
||||
#define SANITIZER_INTERCEPT_TMPNAM SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_TMPNAM_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||
|
@ -399,38 +392,38 @@
|
|||
#define SANITIZER_INTERCEPT_LGAMMAL_R SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||
#define SANITIZER_INTERCEPT_DRAND48_R SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_RAND_R \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_MAC || SI_LINUX_NOT_ANDROID || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_ICONV \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_TIMES SI_POSIX
|
||||
|
||||
// FIXME: getline seems to be available on OSX 10.7
|
||||
#define SANITIZER_INTERCEPT_GETLINE \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
|
||||
#define SANITIZER_INTERCEPT__EXIT \
|
||||
(SI_LINUX || SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_MAC || SI_SOLARIS)
|
||||
(SI_LINUX || SI_FREEBSD || SI_NETBSD || SI_MAC || SI_SOLARIS)
|
||||
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_MUTEX SI_POSIX
|
||||
#define SANITIZER_INTERCEPT___PTHREAD_MUTEX SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT___LIBC_MUTEX SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_SETNAME_NP \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_GETNAME_NP \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
|
||||
#define SANITIZER_INTERCEPT_TLS_GET_ADDR \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_SOLARIS)
|
||||
|
||||
#define SANITIZER_INTERCEPT_LISTXATTR SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_GETXATTR SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_GETRESID SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_GETIFADDRS \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_IF_INDEXTONAME \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \
|
||||
SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_CAPGET SI_LINUX_NOT_ANDROID
|
||||
#if SI_LINUX && defined(__arm__)
|
||||
|
@ -441,28 +434,28 @@
|
|||
#define SANITIZER_INTERCEPT___BZERO SI_MAC || SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_BZERO SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_FTIME \
|
||||
(!SI_FREEBSD && !SI_NETBSD && !SI_OPENBSD && SI_POSIX)
|
||||
(!SI_FREEBSD && !SI_NETBSD && SI_POSIX)
|
||||
#define SANITIZER_INTERCEPT_XDR SI_LINUX_NOT_ANDROID || SI_SOLARIS
|
||||
#define SANITIZER_INTERCEPT_XDRREC SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_TSEARCH \
|
||||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD || SI_OPENBSD || SI_SOLARIS)
|
||||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_LIBIO_INTERNALS SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_FOPEN SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_FOPEN64 SI_LINUX_NOT_ANDROID || SI_SOLARIS32
|
||||
#define SANITIZER_INTERCEPT_OPEN_MEMSTREAM \
|
||||
(SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_OPENBSD || SI_SOLARIS)
|
||||
(SI_LINUX_NOT_ANDROID || SI_NETBSD || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_OBSTACK SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_FFLUSH SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_FCLOSE SI_POSIX
|
||||
|
||||
#ifndef SANITIZER_INTERCEPT_DLOPEN_DLCLOSE
|
||||
#define SANITIZER_INTERCEPT_DLOPEN_DLCLOSE \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \
|
||||
(SI_FREEBSD || SI_NETBSD || SI_LINUX_NOT_ANDROID || SI_MAC || \
|
||||
SI_SOLARIS)
|
||||
#endif
|
||||
|
||||
#define SANITIZER_INTERCEPT_GETPASS \
|
||||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD || SI_OPENBSD)
|
||||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_TIMERFD SI_LINUX_NOT_ANDROID
|
||||
|
||||
#define SANITIZER_INTERCEPT_MLOCKX SI_POSIX
|
||||
|
@ -471,10 +464,10 @@
|
|||
(SI_LINUX || SI_FREEBSD || SI_NETBSD || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PTHREAD_SETCANCEL SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_MINCORE \
|
||||
(SI_LINUX || SI_NETBSD || SI_OPENBSD || SI_SOLARIS)
|
||||
(SI_LINUX || SI_NETBSD || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_PROCESS_VM_READV SI_LINUX
|
||||
#define SANITIZER_INTERCEPT_CTERMID \
|
||||
(SI_LINUX || SI_MAC || SI_FREEBSD || SI_NETBSD || SI_OPENBSD || SI_SOLARIS)
|
||||
(SI_LINUX || SI_MAC || SI_FREEBSD || SI_NETBSD || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_CTERMID_R (SI_MAC || SI_FREEBSD || SI_SOLARIS)
|
||||
|
||||
#define SANITIZER_INTERCEPTOR_HOOKS \
|
||||
|
@ -484,7 +477,7 @@
|
|||
#define SANITIZER_INTERCEPT_EVENTFD_READ_WRITE SI_LINUX
|
||||
|
||||
#define SANITIZER_INTERCEPT_STAT \
|
||||
(SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_OPENBSD || SI_SOLARIS)
|
||||
(SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS)
|
||||
#define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT___XSTAT (!SANITIZER_INTERCEPT_STAT && SI_POSIX)
|
||||
#define SANITIZER_INTERCEPT___XSTAT64 SI_LINUX_NOT_ANDROID
|
||||
|
@ -497,41 +490,41 @@
|
|||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_FREEBSD || SI_NETBSD)
|
||||
|
||||
#define SANITIZER_INTERCEPT_GETLOADAVG \
|
||||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_FREEBSD || SI_NETBSD || SI_OPENBSD)
|
||||
(SI_LINUX_NOT_ANDROID || SI_MAC || SI_FREEBSD || SI_NETBSD)
|
||||
|
||||
#define SANITIZER_INTERCEPT_MMAP SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_MMAP64 SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_MALLOPT_AND_MALLINFO \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_FUCHSIA && \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && SI_NOT_FUCHSIA && \
|
||||
SI_NOT_RTEMS && !SI_SOLARIS) // NOLINT
|
||||
#define SANITIZER_INTERCEPT_MEMALIGN \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_RTEMS)
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && SI_NOT_RTEMS)
|
||||
#define SANITIZER_INTERCEPT_PVALLOC \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_FUCHSIA && \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && SI_NOT_FUCHSIA && \
|
||||
SI_NOT_RTEMS && !SI_SOLARIS) // NOLINT
|
||||
#define SANITIZER_INTERCEPT_CFREE \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && !SI_OPENBSD && SI_NOT_FUCHSIA && \
|
||||
(!SI_FREEBSD && !SI_MAC && !SI_NETBSD && SI_NOT_FUCHSIA && \
|
||||
SI_NOT_RTEMS && !SI_SOLARIS) // NOLINT
|
||||
#define SANITIZER_INTERCEPT_REALLOCARRAY SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_ALIGNED_ALLOC (!SI_MAC && SI_NOT_RTEMS)
|
||||
#define SANITIZER_INTERCEPT_MALLOC_USABLE_SIZE \
|
||||
(!SI_MAC && !SI_OPENBSD && !SI_NETBSD)
|
||||
(!SI_MAC && !SI_NETBSD)
|
||||
#define SANITIZER_INTERCEPT_MCHECK_MPROBE SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_WCSCAT SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_WCSDUP SI_POSIX
|
||||
#define SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION (!SI_WINDOWS && SI_NOT_FUCHSIA)
|
||||
#define SANITIZER_INTERCEPT_BSD_SIGNAL SI_ANDROID
|
||||
|
||||
#define SANITIZER_INTERCEPT_ACCT (SI_NETBSD || SI_OPENBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_ACCT (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_USER_FROM_UID SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_UID_FROM_USER SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_GROUP_FROM_GID SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_GID_FROM_GROUP SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_ACCESS (SI_NETBSD || SI_OPENBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_FACCESSAT (SI_NETBSD || SI_OPENBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_GETGROUPLIST (SI_NETBSD || SI_OPENBSD)
|
||||
#define SANITIZER_INTERCEPT_ACCESS (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_FACCESSAT (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_GETGROUPLIST SI_NETBSD
|
||||
#define SANITIZER_INTERCEPT_STRLCPY \
|
||||
(SI_NETBSD || SI_FREEBSD || SI_OPENBSD || SI_MAC || SI_ANDROID)
|
||||
(SI_NETBSD || SI_FREEBSD || SI_MAC || SI_ANDROID)
|
||||
|
||||
#define SANITIZER_INTERCEPT_NAME_TO_HANDLE_AT SI_LINUX_NOT_ANDROID
|
||||
#define SANITIZER_INTERCEPT_OPEN_BY_HANDLE_AT SI_LINUX_NOT_ANDROID
|
||||
|
@ -546,7 +539,7 @@
|
|||
#define SANITIZER_INTERCEPT_READLINKAT \
|
||||
(SI_POSIX && !SI_MAC_DEPLOYMENT_BELOW_10_10)
|
||||
|
||||
#define SANITIZER_INTERCEPT_DEVNAME (SI_NETBSD || SI_OPENBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_DEVNAME (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_DEVNAME_R (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_FGETLN (SI_NETBSD || SI_FREEBSD)
|
||||
#define SANITIZER_INTERCEPT_STRMODE (SI_NETBSD || SI_FREEBSD)
|
||||
|
|
|
@ -1,279 +0,0 @@
|
|||
//===-- sanitizer_platform_limits_openbsd.cpp -----------------------------===//
|
||||
//
|
||||
// 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 common code.
|
||||
//
|
||||
// Sizes and layouts of platform-specific NetBSD data structures.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "sanitizer_platform.h"
|
||||
|
||||
#if SANITIZER_OPENBSD
|
||||
#include <arpa/inet.h>
|
||||
#include <dirent.h>
|
||||
#include <glob.h>
|
||||
#include <grp.h>
|
||||
#include <ifaddrs.h>
|
||||
#include <limits.h>
|
||||
#include <link_elf.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <net/ppp_defs.h>
|
||||
#include <net/route.h>
|
||||
#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/ip_mroute.h>
|
||||
#include <poll.h>
|
||||
#include <pthread.h>
|
||||
#include <pwd.h>
|
||||
#include <semaphore.h>
|
||||
#include <signal.h>
|
||||
#include <soundcard.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/filio.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/mount.h>
|
||||
#include <sys/msg.h>
|
||||
#include <sys/mtio.h>
|
||||
#include <sys/ptrace.h>
|
||||
#include <sys/resource.h>
|
||||
#include <sys/shm.h>
|
||||
#include <sys/signal.h>
|
||||
#include <sys/sockio.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/statvfs.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/times.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/utsname.h>
|
||||
#include <term.h>
|
||||
#include <time.h>
|
||||
#include <utime.h>
|
||||
#include <utmp.h>
|
||||
#include <wchar.h>
|
||||
|
||||
// Include these after system headers to avoid name clashes and ambiguities.
|
||||
#include "sanitizer_internal_defs.h"
|
||||
#include "sanitizer_platform_limits_openbsd.h"
|
||||
|
||||
namespace __sanitizer {
|
||||
unsigned struct_utsname_sz = sizeof(struct utsname);
|
||||
unsigned struct_stat_sz = sizeof(struct stat);
|
||||
unsigned struct_rusage_sz = sizeof(struct rusage);
|
||||
unsigned struct_tm_sz = sizeof(struct tm);
|
||||
unsigned struct_passwd_sz = sizeof(struct passwd);
|
||||
unsigned struct_group_sz = sizeof(struct group);
|
||||
unsigned siginfo_t_sz = sizeof(siginfo_t);
|
||||
unsigned struct_sigaction_sz = sizeof(struct sigaction);
|
||||
unsigned struct_stack_t_sz = sizeof(stack_t);
|
||||
unsigned struct_itimerval_sz = sizeof(struct itimerval);
|
||||
unsigned pthread_t_sz = sizeof(pthread_t);
|
||||
unsigned pthread_mutex_t_sz = sizeof(pthread_mutex_t);
|
||||
unsigned pthread_cond_t_sz = sizeof(pthread_cond_t);
|
||||
unsigned pid_t_sz = sizeof(pid_t);
|
||||
unsigned timeval_sz = sizeof(timeval);
|
||||
unsigned uid_t_sz = sizeof(uid_t);
|
||||
unsigned gid_t_sz = sizeof(gid_t);
|
||||
unsigned mbstate_t_sz = sizeof(mbstate_t);
|
||||
unsigned sigset_t_sz = sizeof(sigset_t);
|
||||
unsigned struct_timezone_sz = sizeof(struct timezone);
|
||||
unsigned struct_tms_sz = sizeof(struct tms);
|
||||
unsigned struct_sched_param_sz = sizeof(struct sched_param);
|
||||
unsigned struct_sockaddr_sz = sizeof(struct sockaddr);
|
||||
unsigned struct_rlimit_sz = sizeof(struct rlimit);
|
||||
unsigned struct_timespec_sz = sizeof(struct timespec);
|
||||
unsigned struct_utimbuf_sz = sizeof(struct utimbuf);
|
||||
unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
|
||||
unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds);
|
||||
unsigned struct_statvfs_sz = sizeof(struct statvfs);
|
||||
|
||||
const uptr sig_ign = (uptr)SIG_IGN;
|
||||
const uptr sig_dfl = (uptr)SIG_DFL;
|
||||
const uptr sig_err = (uptr)SIG_ERR;
|
||||
const uptr sa_siginfo = (uptr)SA_SIGINFO;
|
||||
|
||||
int shmctl_ipc_stat = (int)IPC_STAT;
|
||||
|
||||
unsigned struct_utmp_sz = sizeof(struct utmp);
|
||||
|
||||
int map_fixed = MAP_FIXED;
|
||||
|
||||
int af_inet = (int)AF_INET;
|
||||
int af_inet6 = (int)AF_INET6;
|
||||
|
||||
uptr __sanitizer_in_addr_sz(int af) {
|
||||
if (af == AF_INET)
|
||||
return sizeof(struct in_addr);
|
||||
else if (af == AF_INET6)
|
||||
return sizeof(struct in6_addr);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
|
||||
|
||||
int glob_nomatch = GLOB_NOMATCH;
|
||||
int glob_altdirfunc = GLOB_ALTDIRFUNC;
|
||||
|
||||
unsigned path_max = PATH_MAX;
|
||||
|
||||
const int si_SEGV_MAPERR = SEGV_MAPERR;
|
||||
const int si_SEGV_ACCERR = SEGV_ACCERR;
|
||||
} // namespace __sanitizer
|
||||
|
||||
using namespace __sanitizer;
|
||||
|
||||
COMPILER_CHECK(sizeof(__sanitizer_pthread_attr_t) >= sizeof(pthread_attr_t));
|
||||
|
||||
COMPILER_CHECK(sizeof(socklen_t) == sizeof(unsigned));
|
||||
CHECK_TYPE_SIZE(pthread_key_t);
|
||||
|
||||
CHECK_TYPE_SIZE(dl_phdr_info);
|
||||
CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_addr);
|
||||
CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_name);
|
||||
CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phdr);
|
||||
CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum);
|
||||
|
||||
CHECK_TYPE_SIZE(glob_t);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_offs);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_flags);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_closedir);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_readdir);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_opendir);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_lstat);
|
||||
CHECK_SIZE_AND_OFFSET(glob_t, gl_stat);
|
||||
|
||||
CHECK_TYPE_SIZE(addrinfo);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_flags);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_family);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_socktype);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_addrlen);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_addr);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_canonname);
|
||||
CHECK_SIZE_AND_OFFSET(addrinfo, ai_next);
|
||||
|
||||
CHECK_TYPE_SIZE(hostent);
|
||||
CHECK_SIZE_AND_OFFSET(hostent, h_name);
|
||||
CHECK_SIZE_AND_OFFSET(hostent, h_aliases);
|
||||
CHECK_SIZE_AND_OFFSET(hostent, h_addrtype);
|
||||
CHECK_SIZE_AND_OFFSET(hostent, h_length);
|
||||
CHECK_SIZE_AND_OFFSET(hostent, h_addr_list);
|
||||
|
||||
CHECK_TYPE_SIZE(iovec);
|
||||
CHECK_SIZE_AND_OFFSET(iovec, iov_base);
|
||||
CHECK_SIZE_AND_OFFSET(iovec, iov_len);
|
||||
|
||||
CHECK_TYPE_SIZE(msghdr);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_name);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_namelen);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_iov);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_iovlen);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_control);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_controllen);
|
||||
CHECK_SIZE_AND_OFFSET(msghdr, msg_flags);
|
||||
|
||||
CHECK_TYPE_SIZE(cmsghdr);
|
||||
CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len);
|
||||
CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);
|
||||
CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);
|
||||
|
||||
COMPILER_CHECK(sizeof(__sanitizer_dirent) <= sizeof(dirent));
|
||||
CHECK_SIZE_AND_OFFSET(dirent, d_fileno);
|
||||
CHECK_SIZE_AND_OFFSET(dirent, d_off);
|
||||
CHECK_SIZE_AND_OFFSET(dirent, d_reclen);
|
||||
|
||||
CHECK_TYPE_SIZE(ifconf);
|
||||
CHECK_SIZE_AND_OFFSET(ifconf, ifc_len);
|
||||
CHECK_SIZE_AND_OFFSET(ifconf, ifc_ifcu);
|
||||
|
||||
CHECK_TYPE_SIZE(pollfd);
|
||||
CHECK_SIZE_AND_OFFSET(pollfd, fd);
|
||||
CHECK_SIZE_AND_OFFSET(pollfd, events);
|
||||
CHECK_SIZE_AND_OFFSET(pollfd, revents);
|
||||
|
||||
CHECK_TYPE_SIZE(nfds_t);
|
||||
|
||||
CHECK_TYPE_SIZE(sigset_t);
|
||||
|
||||
COMPILER_CHECK(sizeof(__sanitizer_sigaction) == sizeof(struct sigaction));
|
||||
// Can't write checks for sa_handler and sa_sigaction due to them being
|
||||
// preprocessor macros.
|
||||
CHECK_STRUCT_SIZE_AND_OFFSET(sigaction, sa_mask);
|
||||
|
||||
CHECK_TYPE_SIZE(tm);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_sec);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_min);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_hour);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_mday);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_mon);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_year);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_wday);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_yday);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_isdst);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_gmtoff);
|
||||
CHECK_SIZE_AND_OFFSET(tm, tm_zone);
|
||||
|
||||
CHECK_TYPE_SIZE(ipc_perm);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, seq);
|
||||
CHECK_SIZE_AND_OFFSET(ipc_perm, key);
|
||||
|
||||
CHECK_TYPE_SIZE(shmid_ds);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_perm);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_segsz);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_atime);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, __shm_atimensec);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_dtime);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, __shm_dtimensec);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_ctime);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, __shm_ctimensec);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_cpid);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_lpid);
|
||||
CHECK_SIZE_AND_OFFSET(shmid_ds, shm_nattch);
|
||||
|
||||
CHECK_TYPE_SIZE(clock_t);
|
||||
|
||||
CHECK_TYPE_SIZE(ifaddrs);
|
||||
CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_next);
|
||||
CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_name);
|
||||
CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_addr);
|
||||
CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_netmask);
|
||||
// Compare against the union, because we can't reach into the union in a
|
||||
// compliant way.
|
||||
#ifdef ifa_dstaddr
|
||||
#undef ifa_dstaddr
|
||||
#endif
|
||||
CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr);
|
||||
CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_data);
|
||||
|
||||
CHECK_TYPE_SIZE(passwd);
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_name);
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_passwd);
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_uid);
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_gid);
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_dir);
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_shell);
|
||||
|
||||
CHECK_SIZE_AND_OFFSET(passwd, pw_gecos);
|
||||
|
||||
CHECK_TYPE_SIZE(group);
|
||||
CHECK_SIZE_AND_OFFSET(group, gr_name);
|
||||
CHECK_SIZE_AND_OFFSET(group, gr_passwd);
|
||||
CHECK_SIZE_AND_OFFSET(group, gr_gid);
|
||||
CHECK_SIZE_AND_OFFSET(group, gr_mem);
|
||||
|
||||
#endif // SANITIZER_OPENBSD
|
|
@ -1,382 +0,0 @@
|
|||
//===-- sanitizer_platform_limits_openbsd.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 Sanitizer common code.
|
||||
//
|
||||
// Sizes and layouts of platform-specific OpenBSD data structures.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef SANITIZER_PLATFORM_LIMITS_OPENBSD_H
|
||||
#define SANITIZER_PLATFORM_LIMITS_OPENBSD_H
|
||||
|
||||
#if SANITIZER_OPENBSD
|
||||
|
||||
#include "sanitizer_internal_defs.h"
|
||||
#include "sanitizer_platform.h"
|
||||
|
||||
#define _GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, shift) \
|
||||
((link_map *)((handle) == nullptr ? nullptr : ((char *)(handle) + (shift))))
|
||||
|
||||
#if defined(__x86_64__)
|
||||
#define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \
|
||||
_GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, 312)
|
||||
#elif defined(__i386__)
|
||||
#define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \
|
||||
_GET_LINK_MAP_BY_DLOPEN_HANDLE(handle, 164)
|
||||
#endif
|
||||
|
||||
#define RLIMIT_AS RLIMIT_DATA
|
||||
|
||||
namespace __sanitizer {
|
||||
extern unsigned struct_utsname_sz;
|
||||
extern unsigned struct_stat_sz;
|
||||
extern unsigned struct_rusage_sz;
|
||||
extern unsigned siginfo_t_sz;
|
||||
extern unsigned struct_itimerval_sz;
|
||||
extern unsigned pthread_t_sz;
|
||||
extern unsigned pthread_mutex_t_sz;
|
||||
extern unsigned pthread_cond_t_sz;
|
||||
extern unsigned pid_t_sz;
|
||||
extern unsigned timeval_sz;
|
||||
extern unsigned uid_t_sz;
|
||||
extern unsigned gid_t_sz;
|
||||
extern unsigned mbstate_t_sz;
|
||||
extern unsigned struct_timezone_sz;
|
||||
extern unsigned struct_tms_sz;
|
||||
extern unsigned struct_itimerspec_sz;
|
||||
extern unsigned struct_sigevent_sz;
|
||||
extern unsigned struct_stack_t_sz;
|
||||
extern unsigned struct_statfs_sz;
|
||||
extern unsigned struct_sockaddr_sz;
|
||||
|
||||
extern unsigned struct_rlimit_sz;
|
||||
extern unsigned struct_utimbuf_sz;
|
||||
extern unsigned struct_timespec_sz;
|
||||
|
||||
struct __sanitizer_iocb {
|
||||
u64 aio_offset;
|
||||
uptr aio_buf;
|
||||
long aio_nbytes;
|
||||
u32 aio_fildes;
|
||||
u32 aio_lio_opcode;
|
||||
long aio_reqprio;
|
||||
#if SANITIZER_WORDSIZE == 64
|
||||
u8 aio_sigevent[32];
|
||||
#else
|
||||
u8 aio_sigevent[20];
|
||||
#endif
|
||||
u32 _state;
|
||||
u32 _errno;
|
||||
long _retval;
|
||||
};
|
||||
|
||||
struct __sanitizer___sysctl_args {
|
||||
int *name;
|
||||
int nlen;
|
||||
void *oldval;
|
||||
uptr *oldlenp;
|
||||
void *newval;
|
||||
uptr newlen;
|
||||
};
|
||||
|
||||
struct __sanitizer_sem_t {
|
||||
uptr data[5];
|
||||
};
|
||||
|
||||
struct __sanitizer_ipc_perm {
|
||||
u32 cuid;
|
||||
u32 cgid;
|
||||
u32 uid;
|
||||
u32 gid;
|
||||
u32 mode;
|
||||
unsigned short seq;
|
||||
long key;
|
||||
};
|
||||
|
||||
struct __sanitizer_shmid_ds {
|
||||
__sanitizer_ipc_perm shm_perm;
|
||||
int shm_segsz;
|
||||
u32 shm_lpid;
|
||||
u32 shm_cpid;
|
||||
short shm_nattch;
|
||||
u64 shm_atime;
|
||||
long __shm_atimensec;
|
||||
u64 shm_dtime;
|
||||
long __shm_dtimensec;
|
||||
u64 shm_ctime;
|
||||
long __shm_ctimensec;
|
||||
void *_shm_internal;
|
||||
};
|
||||
|
||||
extern unsigned struct_msqid_ds_sz;
|
||||
extern unsigned struct_mq_attr_sz;
|
||||
extern unsigned struct_timex_sz;
|
||||
extern unsigned struct_statvfs_sz;
|
||||
|
||||
struct __sanitizer_iovec {
|
||||
void *iov_base;
|
||||
uptr iov_len;
|
||||
};
|
||||
|
||||
struct __sanitizer_ifaddrs {
|
||||
struct __sanitizer_ifaddrs *ifa_next;
|
||||
char *ifa_name;
|
||||
unsigned int ifa_flags;
|
||||
struct __sanitizer_sockaddr *ifa_addr; // (struct sockaddr *)
|
||||
struct __sanitizer_sockaddr *ifa_netmask; // (struct sockaddr *)
|
||||
struct __sanitizer_sockaddr *ifa_dstaddr; // (struct sockaddr *)
|
||||
void *ifa_data;
|
||||
};
|
||||
|
||||
typedef unsigned __sanitizer_pthread_key_t;
|
||||
|
||||
typedef long long __sanitizer_time_t;
|
||||
typedef int __sanitizer_suseconds_t;
|
||||
|
||||
struct __sanitizer_timeval {
|
||||
__sanitizer_time_t tv_sec;
|
||||
__sanitizer_suseconds_t tv_usec;
|
||||
};
|
||||
|
||||
struct __sanitizer_itimerval {
|
||||
struct __sanitizer_timeval it_interval;
|
||||
struct __sanitizer_timeval it_value;
|
||||
};
|
||||
|
||||
struct __sanitizer_passwd {
|
||||
char *pw_name;
|
||||
char *pw_passwd;
|
||||
int pw_uid;
|
||||
int pw_gid;
|
||||
__sanitizer_time_t pw_change;
|
||||
char *pw_class;
|
||||
char *pw_gecos;
|
||||
char *pw_dir;
|
||||
char *pw_shell;
|
||||
__sanitizer_time_t pw_expire;
|
||||
};
|
||||
|
||||
struct __sanitizer_group {
|
||||
char *gr_name;
|
||||
char *gr_passwd;
|
||||
int gr_gid;
|
||||
char **gr_mem;
|
||||
};
|
||||
|
||||
struct __sanitizer_ether_addr {
|
||||
u8 octet[6];
|
||||
};
|
||||
|
||||
struct __sanitizer_tm {
|
||||
int tm_sec;
|
||||
int tm_min;
|
||||
int tm_hour;
|
||||
int tm_mday;
|
||||
int tm_mon;
|
||||
int tm_year;
|
||||
int tm_wday;
|
||||
int tm_yday;
|
||||
int tm_isdst;
|
||||
long int tm_gmtoff;
|
||||
const char *tm_zone;
|
||||
};
|
||||
|
||||
struct __sanitizer_msghdr {
|
||||
void *msg_name;
|
||||
unsigned msg_namelen;
|
||||
struct __sanitizer_iovec *msg_iov;
|
||||
unsigned msg_iovlen;
|
||||
void *msg_control;
|
||||
unsigned msg_controllen;
|
||||
int msg_flags;
|
||||
};
|
||||
struct __sanitizer_cmsghdr {
|
||||
unsigned cmsg_len;
|
||||
int cmsg_level;
|
||||
int cmsg_type;
|
||||
};
|
||||
|
||||
struct __sanitizer_dirent {
|
||||
u64 d_fileno;
|
||||
u64 d_off;
|
||||
u16 d_reclen;
|
||||
};
|
||||
|
||||
typedef u64 __sanitizer_clock_t;
|
||||
typedef u32 __sanitizer_clockid_t;
|
||||
|
||||
typedef u32 __sanitizer___kernel_uid_t;
|
||||
typedef u32 __sanitizer___kernel_gid_t;
|
||||
typedef u64 __sanitizer___kernel_off_t;
|
||||
typedef struct {
|
||||
u32 fds_bits[8];
|
||||
} __sanitizer___kernel_fd_set;
|
||||
|
||||
typedef struct {
|
||||
unsigned int pta_magic;
|
||||
int pta_flags;
|
||||
void *pta_private;
|
||||
} __sanitizer_pthread_attr_t;
|
||||
|
||||
typedef unsigned int __sanitizer_sigset_t;
|
||||
|
||||
struct __sanitizer_siginfo {
|
||||
// The size is determined by looking at sizeof of real siginfo_t on linux.
|
||||
u64 opaque[128 / sizeof(u64)];
|
||||
};
|
||||
|
||||
using __sanitizer_sighandler_ptr = void (*)(int sig);
|
||||
using __sanitizer_sigactionhandler_ptr = void (*)(int sig,
|
||||
__sanitizer_siginfo *siginfo,
|
||||
void *uctx);
|
||||
|
||||
struct __sanitizer_sigaction {
|
||||
union {
|
||||
__sanitizer_sighandler_ptr handler;
|
||||
__sanitizer_sigactionhandler_ptr sigaction;
|
||||
};
|
||||
__sanitizer_sigset_t sa_mask;
|
||||
int sa_flags;
|
||||
};
|
||||
|
||||
typedef __sanitizer_sigset_t __sanitizer_kernel_sigset_t;
|
||||
|
||||
struct __sanitizer_kernel_sigaction_t {
|
||||
union {
|
||||
void (*handler)(int signo);
|
||||
void (*sigaction)(int signo, void *info, void *ctx);
|
||||
};
|
||||
unsigned long sa_flags;
|
||||
void (*sa_restorer)(void);
|
||||
__sanitizer_kernel_sigset_t sa_mask;
|
||||
};
|
||||
|
||||
extern const uptr sig_ign;
|
||||
extern const uptr sig_dfl;
|
||||
extern const uptr sig_err;
|
||||
extern const uptr sa_siginfo;
|
||||
|
||||
extern int af_inet;
|
||||
extern int af_inet6;
|
||||
uptr __sanitizer_in_addr_sz(int af);
|
||||
|
||||
struct __sanitizer_dl_phdr_info {
|
||||
#if SANITIZER_WORDSIZE == 64
|
||||
u64 dlpi_addr;
|
||||
#else
|
||||
u32 dlpi_addr;
|
||||
#endif
|
||||
const char *dlpi_name;
|
||||
const void *dlpi_phdr;
|
||||
#if SANITIZER_WORDSIZE == 64
|
||||
u32 dlpi_phnum;
|
||||
#else
|
||||
u16 dlpi_phnum;
|
||||
#endif
|
||||
};
|
||||
|
||||
extern unsigned struct_ElfW_Phdr_sz;
|
||||
|
||||
struct __sanitizer_addrinfo {
|
||||
int ai_flags;
|
||||
int ai_family;
|
||||
int ai_socktype;
|
||||
int ai_protocol;
|
||||
unsigned ai_addrlen;
|
||||
struct __sanitizer_sockaddr *ai_addr;
|
||||
char *ai_canonname;
|
||||
struct __sanitizer_addrinfo *ai_next;
|
||||
};
|
||||
|
||||
struct __sanitizer_hostent {
|
||||
char *h_name;
|
||||
char **h_aliases;
|
||||
int h_addrtype;
|
||||
int h_length;
|
||||
char **h_addr_list;
|
||||
};
|
||||
|
||||
struct __sanitizer_pollfd {
|
||||
int fd;
|
||||
short events;
|
||||
short revents;
|
||||
};
|
||||
|
||||
typedef unsigned __sanitizer_nfds_t;
|
||||
|
||||
struct __sanitizer_glob_t {
|
||||
int gl_pathc;
|
||||
int gl_matchc;
|
||||
int gl_offs;
|
||||
int gl_flags;
|
||||
char **gl_pathv;
|
||||
void **gl_statv;
|
||||
int (*gl_errfunc)(const char *, int);
|
||||
void (*gl_closedir)(void *dirp);
|
||||
struct dirent *(*gl_readdir)(void *dirp);
|
||||
void *(*gl_opendir)(const char *);
|
||||
int (*gl_lstat)(const char *, void * /* struct stat* */);
|
||||
int (*gl_stat)(const char *, void * /* struct stat* */);
|
||||
};
|
||||
|
||||
extern int glob_nomatch;
|
||||
extern int glob_altdirfunc;
|
||||
|
||||
extern unsigned path_max;
|
||||
|
||||
typedef char __sanitizer_FILE;
|
||||
#define SANITIZER_HAS_STRUCT_FILE 0
|
||||
|
||||
extern int shmctl_ipc_stat;
|
||||
|
||||
// This simplifies generic code
|
||||
#define struct_shminfo_sz -1
|
||||
#define struct_shm_info_sz -1
|
||||
#define shmctl_shm_stat -1
|
||||
#define shmctl_ipc_info -1
|
||||
#define shmctl_shm_info -1
|
||||
|
||||
extern unsigned struct_utmp_sz;
|
||||
extern unsigned struct_utmpx_sz;
|
||||
|
||||
extern int map_fixed;
|
||||
|
||||
// ioctl arguments
|
||||
struct __sanitizer_ifconf {
|
||||
int ifc_len;
|
||||
union {
|
||||
void *ifcu_req;
|
||||
} ifc_ifcu;
|
||||
};
|
||||
|
||||
extern const int si_SEGV_MAPERR;
|
||||
extern const int si_SEGV_ACCERR;
|
||||
} // namespace __sanitizer
|
||||
|
||||
#define CHECK_TYPE_SIZE(TYPE) \
|
||||
COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
|
||||
|
||||
#define CHECK_SIZE_AND_OFFSET(CLASS, MEMBER) \
|
||||
COMPILER_CHECK(sizeof(((__sanitizer_##CLASS *)NULL)->MEMBER) == \
|
||||
sizeof(((CLASS *)NULL)->MEMBER)); \
|
||||
COMPILER_CHECK(offsetof(__sanitizer_##CLASS, MEMBER) == \
|
||||
offsetof(CLASS, MEMBER))
|
||||
|
||||
// For sigaction, which is a function and struct at the same time,
|
||||
// and thus requires explicit "struct" in sizeof() expression.
|
||||
#define CHECK_STRUCT_SIZE_AND_OFFSET(CLASS, MEMBER) \
|
||||
COMPILER_CHECK(sizeof(((struct __sanitizer_##CLASS *)NULL)->MEMBER) == \
|
||||
sizeof(((struct CLASS *)NULL)->MEMBER)); \
|
||||
COMPILER_CHECK(offsetof(struct __sanitizer_##CLASS, MEMBER) == \
|
||||
offsetof(struct CLASS, MEMBER))
|
||||
|
||||
#define SIGACTION_SYMNAME __sigaction14
|
||||
|
||||
#endif // SANITIZER_OPENBSD
|
||||
|
||||
#endif
|
|
@ -17,7 +17,6 @@
|
|||
#include "sanitizer_internal_defs.h"
|
||||
#include "sanitizer_platform_limits_freebsd.h"
|
||||
#include "sanitizer_platform_limits_netbsd.h"
|
||||
#include "sanitizer_platform_limits_openbsd.h"
|
||||
#include "sanitizer_platform_limits_posix.h"
|
||||
#include "sanitizer_platform_limits_solaris.h"
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "sanitizer_common.h"
|
||||
#include "sanitizer_flags.h"
|
||||
#include "sanitizer_platform_limits_netbsd.h"
|
||||
#include "sanitizer_platform_limits_openbsd.h"
|
||||
#include "sanitizer_platform_limits_posix.h"
|
||||
#include "sanitizer_platform_limits_solaris.h"
|
||||
#include "sanitizer_posix.h"
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#include "sanitizer_platform.h"
|
||||
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_MAC || SANITIZER_SOLARIS || \
|
||||
SANITIZER_MAC || SANITIZER_SOLARIS || \
|
||||
SANITIZER_FUCHSIA
|
||||
|
||||
#include "sanitizer_common.h"
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Information about the process mappings
|
||||
// (FreeBSD, OpenBSD and NetBSD-specific parts).
|
||||
// (FreeBSD and NetBSD-specific parts).
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "sanitizer_platform.h"
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD
|
||||
#include "sanitizer_common.h"
|
||||
#if SANITIZER_FREEBSD
|
||||
#include "sanitizer_freebsd.h"
|
||||
|
@ -28,11 +28,6 @@
|
|||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#if SANITIZER_OPENBSD
|
||||
#define KVME_PROT_READ KVE_PROT_READ
|
||||
#define KVME_PROT_WRITE KVE_PROT_WRITE
|
||||
#define KVME_PROT_EXEC KVE_PROT_EXEC
|
||||
#endif
|
||||
|
||||
// Fix 'kinfo_vmentry' definition on FreeBSD prior v9.2 in 32-bit mode.
|
||||
#if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32)
|
||||
|
@ -51,10 +46,6 @@ void ReadProcMaps(ProcSelfMapsBuff *proc_maps) {
|
|||
KERN_PROC,
|
||||
KERN_PROC_VMMAP,
|
||||
getpid()
|
||||
#elif SANITIZER_OPENBSD
|
||||
CTL_KERN,
|
||||
KERN_PROC_VMMAP,
|
||||
getpid()
|
||||
#elif SANITIZER_NETBSD
|
||||
CTL_VM,
|
||||
VM_PROC,
|
||||
|
@ -71,28 +62,12 @@ void ReadProcMaps(ProcSelfMapsBuff *proc_maps) {
|
|||
CHECK_EQ(Err, 0);
|
||||
CHECK_GT(Size, 0);
|
||||
|
||||
#if !SANITIZER_OPENBSD
|
||||
size_t MmapedSize = Size * 4 / 3;
|
||||
void *VmMap = MmapOrDie(MmapedSize, "ReadProcMaps()");
|
||||
Size = MmapedSize;
|
||||
Err = internal_sysctl(Mib, ARRAY_SIZE(Mib), VmMap, &Size, NULL, 0);
|
||||
CHECK_EQ(Err, 0);
|
||||
proc_maps->data = (char *)VmMap;
|
||||
#else
|
||||
size_t PageSize = GetPageSize();
|
||||
size_t MmapedSize = Size;
|
||||
MmapedSize = ((MmapedSize - 1) / PageSize + 1) * PageSize;
|
||||
char *Mem = (char *)MmapOrDie(MmapedSize, "ReadProcMaps()");
|
||||
Size = 2 * Size + 10 * sizeof(struct kinfo_vmentry);
|
||||
if (Size > 0x10000)
|
||||
Size = 0x10000;
|
||||
Size = (Size / sizeof(struct kinfo_vmentry)) * sizeof(struct kinfo_vmentry);
|
||||
Err = internal_sysctl(Mib, ARRAY_SIZE(Mib), Mem, &Size, NULL, 0);
|
||||
CHECK_EQ(Err, 0);
|
||||
MmapedSize = Size;
|
||||
proc_maps->data = Mem;
|
||||
#endif
|
||||
|
||||
proc_maps->mmaped_size = MmapedSize;
|
||||
proc_maps->len = Size;
|
||||
}
|
||||
|
@ -117,13 +92,11 @@ bool MemoryMappingLayout::Next(MemoryMappedSegment *segment) {
|
|||
if ((VmEntry->kve_protection & KVME_PROT_EXEC) != 0)
|
||||
segment->protection |= kProtectionExecute;
|
||||
|
||||
#if !SANITIZER_OPENBSD
|
||||
if (segment->filename != NULL && segment->filename_size > 0) {
|
||||
internal_snprintf(segment->filename,
|
||||
Min(segment->filename_size, (uptr)PATH_MAX), "%s",
|
||||
VmEntry->kve_path);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if SANITIZER_FREEBSD
|
||||
data_.current += VmEntry->kve_structsize;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include "sanitizer_platform.h"
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
SANITIZER_SOLARIS
|
||||
|
||||
#include "sanitizer_common.h"
|
||||
#include "sanitizer_placement_new.h"
|
||||
|
|
|
@ -25,8 +25,6 @@ static const u32 kStackTraceMax = 256;
|
|||
# define SANITIZER_CAN_FAST_UNWIND 0
|
||||
#elif SANITIZER_WINDOWS
|
||||
# define SANITIZER_CAN_FAST_UNWIND 0
|
||||
#elif SANITIZER_OPENBSD
|
||||
# define SANITIZER_CAN_FAST_UNWIND 0
|
||||
#else
|
||||
# define SANITIZER_CAN_FAST_UNWIND 1
|
||||
#endif
|
||||
|
@ -34,7 +32,7 @@ static const u32 kStackTraceMax = 256;
|
|||
// Fast unwind is the only option on Mac for now; we will need to
|
||||
// revisit this macro when slow unwind works on Mac, see
|
||||
// https://github.com/google/sanitizers/issues/137
|
||||
#if SANITIZER_MAC || SANITIZER_OPENBSD || SANITIZER_RTEMS
|
||||
#if SANITIZER_MAC || SANITIZER_RTEMS
|
||||
# define SANITIZER_CAN_SLOW_UNWIND 0
|
||||
#else
|
||||
# define SANITIZER_CAN_SLOW_UNWIND 1
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// NetBSD uses libc calls directly
|
||||
#if !SANITIZER_NETBSD
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_OPENBSD || SANITIZER_SOLARIS
|
||||
#if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_SOLARIS
|
||||
# define SYSCALL(name) SYS_ ## name
|
||||
#else
|
||||
# define SYSCALL(name) __NR_ ## name
|
||||
|
|
|
@ -354,7 +354,7 @@ TEST(SanitizerCommon, InternalScopedString) {
|
|||
}
|
||||
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || \
|
||||
SANITIZER_OPENBSD || SANITIZER_MAC || SANITIZER_IOS
|
||||
SANITIZER_MAC || SANITIZER_IOS
|
||||
TEST(SanitizerCommon, GetRandom) {
|
||||
u8 buffer_1[32], buffer_2[32];
|
||||
for (bool blocking : { false, true }) {
|
||||
|
|
|
@ -108,27 +108,6 @@ elif [ "`uname -a | grep NetBSD`" != "" ]; then
|
|||
../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
|
||||
../../sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
|
||||
"
|
||||
elif [ "`uname -a | grep OpenBSD`" != "" ]; then
|
||||
# The resulting object still depends on libc.
|
||||
# We removed this dependency for Go runtime for other OSes,
|
||||
# and we should remove it for OpenBSD as well, but there is no pressing need.
|
||||
DEPENDS_ON_LIBC=1
|
||||
SUFFIX="openbsd_amd64"
|
||||
OSCFLAGS="-fno-strict-aliasing -fPIC -Werror"
|
||||
ARCHCFLAGS="-m64"
|
||||
OSLDFLAGS="-pthread -fPIC -fpie"
|
||||
SRCS="
|
||||
$SRCS
|
||||
../rtl/tsan_platform_linux.cpp
|
||||
../../sanitizer_common/sanitizer_posix.cpp
|
||||
../../sanitizer_common/sanitizer_posix_libcdep.cpp
|
||||
../../sanitizer_common/sanitizer_procmaps_bsd.cpp
|
||||
../../sanitizer_common/sanitizer_procmaps_common.cpp
|
||||
../../sanitizer_common/sanitizer_linux.cpp
|
||||
../../sanitizer_common/sanitizer_linux_libcdep.cpp
|
||||
../../sanitizer_common/sanitizer_openbsd.cpp
|
||||
../../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
|
||||
"
|
||||
elif [ "`uname -a | grep Darwin`" != "" ]; then
|
||||
SUFFIX="darwin_amd64"
|
||||
OSCFLAGS="-fPIC -Wno-unused-const-variable -Wno-unknown-warning-option -mmacosx-version-min=10.7"
|
||||
|
|
|
@ -12,14 +12,12 @@
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "sanitizer_common/sanitizer_platform.h"
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD || \
|
||||
SANITIZER_OPENBSD
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD
|
||||
|
||||
#include "sanitizer_common/sanitizer_common.h"
|
||||
#include "sanitizer_common/sanitizer_libc.h"
|
||||
#include "sanitizer_common/sanitizer_linux.h"
|
||||
#include "sanitizer_common/sanitizer_platform_limits_netbsd.h"
|
||||
#include "sanitizer_common/sanitizer_platform_limits_openbsd.h"
|
||||
#include "sanitizer_common/sanitizer_platform_limits_posix.h"
|
||||
#include "sanitizer_common/sanitizer_posix.h"
|
||||
#include "sanitizer_common/sanitizer_procmaps.h"
|
||||
|
@ -517,5 +515,4 @@ void cur_thread_finalize() {
|
|||
|
||||
} // namespace __tsan
|
||||
|
||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD ||
|
||||
// SANITIZER_OPENBSD
|
||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD || SANITIZER_NETBSD
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
// Other platforms should be easy to add, and probably work as-is.
|
||||
#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) || \
|
||||
defined(__NetBSD__) || defined(__OpenBSD__) || \
|
||||
defined(__NetBSD__) || \
|
||||
(defined(__sun__) && defined(__svr4__)) || \
|
||||
defined(_WIN32) || defined(__Fuchsia__) || defined(__rtems__)
|
||||
# define CAN_SANITIZE_UB 1
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include <fcntl.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/stat.h>
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_MAC
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_MAC
|
||||
#include <sys/syscall.h>
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
|
|
|
@ -6,12 +6,8 @@
|
|||
#include "xray_defs.h"
|
||||
#include "xray_interface_internal.h"
|
||||
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_MAC
|
||||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_MAC
|
||||
#include <sys/types.h>
|
||||
#if SANITIZER_OPENBSD
|
||||
#include <sys/time.h>
|
||||
#include <machine/cpu.h>
|
||||
#endif
|
||||
#include <sys/sysctl.h>
|
||||
#elif SANITIZER_FUCHSIA
|
||||
#include <zircon/syscalls.h>
|
||||
|
@ -86,14 +82,11 @@ uint64_t getTSCFrequency() XRAY_NEVER_INSTRUMENT {
|
|||
}
|
||||
return TSCFrequency == -1 ? 0 : static_cast<uint64_t>(TSCFrequency);
|
||||
}
|
||||
#elif SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_MAC
|
||||
#elif SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_MAC
|
||||
uint64_t getTSCFrequency() XRAY_NEVER_INSTRUMENT {
|
||||
long long TSCFrequency = -1;
|
||||
size_t tscfreqsz = sizeof(TSCFrequency);
|
||||
#if SANITIZER_OPENBSD
|
||||
int Mib[2] = { CTL_MACHDEP, CPU_TSCFREQ };
|
||||
if (internal_sysctl(Mib, 2, &TSCFrequency, &tscfreqsz, NULL, 0) != -1) {
|
||||
#elif SANITIZER_MAC
|
||||
#if SANITIZER_MAC
|
||||
if (internal_sysctlbyname("machdep.tsc.frequency", &TSCFrequency,
|
||||
&tscfreqsz, NULL, 0) != -1) {
|
||||
|
||||
|
|
Loading…
Reference in New Issue