summaryrefslogtreecommitdiff
path: root/debian/patches/kfreebsd/compiler-rt_lib.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/kfreebsd/compiler-rt_lib.diff')
-rw-r--r--debian/patches/kfreebsd/compiler-rt_lib.diff349
1 files changed, 349 insertions, 0 deletions
diff --git a/debian/patches/kfreebsd/compiler-rt_lib.diff b/debian/patches/kfreebsd/compiler-rt_lib.diff
new file mode 100644
index 0000000..726f182
--- /dev/null
+++ b/debian/patches/kfreebsd/compiler-rt_lib.diff
@@ -0,0 +1,349 @@
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc
+@@ -84,9 +84,14 @@
+ extern "C" {
+ // <sys/umtx.h> must be included after <errno.h> and <sys/types.h> on
+ // FreeBSD 9.2 and 10.0.
++#if SANITIZER_KFREEBSD
++#include <bsd/sys/cdefs.h>
++#endif
+ #include <sys/umtx.h>
+ }
++#if !SANITIZER_KFREEBSD
+ #include <sys/thr.h>
++#endif
+ #endif // SANITIZER_FREEBSD
+
+ #if SANITIZER_NETBSD
+@@ -468,10 +473,12 @@ bool FileExists(const char *filename) {
+
+ #if !SANITIZER_NETBSD
+ tid_t GetTid() {
+-#if SANITIZER_FREEBSD
++#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD
+ long Tid;
+ thr_self(&Tid);
+ return Tid;
++#elif SANITIZER_KFREEBSD
++ return (uptr)pthread_self();
+ #elif SANITIZER_OPENBSD
+ return internal_syscall(SYSCALL(getthrid));
+ #elif SANITIZER_SOLARIS
+@@ -1167,10 +1174,10 @@ bool LibraryNameIs(const char *full_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 && !SANITIZER_OPENBSD || SANITIZER_KFREEBSD
+ typedef ElfW(Phdr) Elf_Phdr;
+ typedef ElfW(Ehdr) Elf_Ehdr;
+-#endif // !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
++#endif // !SANITIZER_FREEBSD && !SANITIZER_OPENBSD || SANITIZER_KFREEBSD
+ char *base = (char *)map->l_addr;
+ Elf_Ehdr *ehdr = (Elf_Ehdr *)base;
+ char *phdrs = base + ehdr->e_phoff;
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc
+@@ -36,10 +36,12 @@
+ #include <syslog.h>
+
+ #if SANITIZER_FREEBSD
+-#include <pthread_np.h>
++# if !SANITIZER_KFREEBSD
++# include <pthread_np.h>
++# define pthread_getattr_np pthread_attr_get_np
++# endif
+ #include <osreldate.h>
+ #include <sys/sysctl.h>
+-#define pthread_getattr_np pthread_attr_get_np
+ #endif
+
+ #if SANITIZER_OPENBSD
+@@ -528,9 +530,9 @@ void GetThreadStackAndTls(bool main, upt
+ #endif
+ }
+
+-#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD
++#if !SANITIZER_FREEBSD && !SANITIZER_OPENBSD || SANITIZER_KFREEBSD
+ typedef ElfW(Phdr) Elf_Phdr;
+-#elif SANITIZER_WORDSIZE == 32 && __FreeBSD_version <= 902001 // v9.2
++#elif SANITIZER_WORDSIZE == 32 && !SANITIZER_KFREEBSD && __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))
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_platform.h
+@@ -16,7 +16,7 @@
+ #if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
+ !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(_WIN32) && \
+ !defined(__Fuchsia__) && !defined(__rtems__) && \
+- !(defined(__sun__) && defined(__svr4__))
++ !(defined(__sun__) && defined(__svr4__)) && !defined(__FreeBSD_kernel__)
+ # error "This operating system is not supported"
+ #endif
+
+@@ -26,12 +26,18 @@
+ # define SANITIZER_LINUX 0
+ #endif
+
+-#if defined(__FreeBSD__)
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ # define SANITIZER_FREEBSD 1
+ #else
+ # define SANITIZER_FREEBSD 0
+ #endif
+
++#if defined(__FreeBSD_kernel__)
++# define SANITIZER_KFREEBSD 1
++#else
++# define SANITIZER_KFREEBSD 0
++#endif
++
+ #if defined(__NetBSD__)
+ # define SANITIZER_NETBSD 1
+ #else
+@@ -113,7 +119,8 @@
+
+ #define SANITIZER_POSIX \
+ (SANITIZER_FREEBSD || SANITIZER_LINUX || SANITIZER_MAC || \
+- SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_SOLARIS)
++ SANITIZER_NETBSD || SANITIZER_OPENBSD || SANITIZER_SOLARIS || \
++ SANITIZER_KFREEBSD)
+
+ #if __LP64__ || defined(_WIN64)
+ # define SANITIZER_WORDSIZE 64
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/asan/asan_linux.cc
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/asan/asan_linux.cc
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/asan/asan_linux.cc
+@@ -38,7 +38,7 @@
+ #include <unistd.h>
+ #include <unwind.h>
+
+-#if SANITIZER_FREEBSD
++#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD
+ #include <sys/link_elf.h>
+ #endif
+
+@@ -48,7 +48,11 @@
+
+ #if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS
+ #include <ucontext.h>
++#if SANITIZER_KFREEBSD
++#include <link.h>
++#else
+ extern "C" void* _DYNAMIC;
++#endif
+ #elif SANITIZER_NETBSD
+ #include <link_elf.h>
+ #include <ucontext.h>
+@@ -61,7 +65,7 @@ extern Elf_Dyn _DYNAMIC;
+ // x86-64 FreeBSD 9.2 and older define 'ucontext_t' incorrectly in
+ // 32-bit mode.
+ #if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32) && \
+- __FreeBSD_version <= 902001 // v9.2
++ !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
+ #define ucontext_t xucontext_t
+ #endif
+
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/ubsan/ubsan_platform.h
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/ubsan/ubsan_platform.h
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/ubsan/ubsan_platform.h
+@@ -15,7 +15,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(__OpenBSD__) || defined(__FreeBSD_kernel__) || \
+ (defined(__sun__) && defined(__svr4__)) || \
+ defined(_WIN32) || defined(__Fuchsia__) || defined(__rtems__)
+ # define CAN_SANITIZE_UB 1
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S
+@@ -197,7 +197,7 @@ ASM_SYMBOL_INTERCEPTOR(setjmp):
+ lea 16(%rsp), %rdi
+ mov %rdi, %rsi
+ xorq ___tsan_darwin_setjmp_xor_key(%rip), %rsi
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD_kernel__)
+ lea 16(%rsp), %rdi
+ mov %rdi, %rsi
+ xor %fs:0x30, %rsi // magic mangling of rsp (see libc setjmp)
+@@ -246,7 +246,7 @@ ASM_SYMBOL_INTERCEPTOR(_setjmp):
+ lea 16(%rsp), %rdi
+ mov %rdi, %rsi
+ xorq ___tsan_darwin_setjmp_xor_key(%rip), %rsi
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD_kernel__)
+ lea 16(%rsp), %rdi
+ mov %rdi, %rsi
+ xor %fs:0x30, %rsi // magic mangling of rsp (see libc setjmp)
+@@ -302,7 +302,7 @@ ASM_SYMBOL_INTERCEPTOR(sigsetjmp):
+ lea 32(%rsp), %rdi
+ mov %rdi, %rsi
+ xorq ___tsan_darwin_setjmp_xor_key(%rip), %rsi
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD_kernel__)
+ lea 32(%rsp), %rdi
+ mov %rdi, %rsi
+ xor %fs:0x30, %rsi // magic mangling of rsp (see libc setjmp)
+@@ -389,7 +389,7 @@ ASM_SYMBOL_INTERCEPTOR(__sigsetjmp):
+ ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp))
+ #endif // !defined(__APPLE__) && !defined(__NetBSD__)
+
+-#if defined(__FreeBSD__) || defined(__linux__)
++#if defined(__FreeBSD__) || defined(__linux__) || defined(__FreeBSD_kernel__)
+ /* We do not need executable stack. */
+ /* This note is not needed on NetBSD. */
+ .section .note.GNU-stack,"",@progbits
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerDefs.h
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/fuzzer/FuzzerDefs.h
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerDefs.h
+@@ -28,6 +28,7 @@
+ #define LIBFUZZER_LINUX 1
+ #define LIBFUZZER_NETBSD 0
+ #define LIBFUZZER_FREEBSD 0
++#define LIBFUZZER_KFREEBSD 1
+ #define LIBFUZZER_OPENBSD 0
+ #define LIBFUZZER_WINDOWS 0
+ #elif __APPLE__
+@@ -54,6 +55,15 @@
+ #define LIBFUZZER_FREEBSD 1
+ #define LIBFUZZER_OPENBSD 0
+ #define LIBFUZZER_WINDOWS 0
++#elif __FreeBSD_kernel__
++#define LIBFUZZER_APPLE 0
++#define LIBFUZZER_FUCHSIA 0
++#define LIBFUZZER_LINUX 0
++#define LIBFUZZER_NETBSD 0
++#define LIBFUZZER_FREEBSD 0
++#define LIBFUZZER_KFREEBSD 1
++#define LIBFUZZER_OPENBSD 0
++#define LIBFUZZER_WINDOWS 0
+ #elif __OpenBSD__
+ #define LIBFUZZER_APPLE 0
+ #define LIBFUZZER_FUCHSIA 0
+@@ -95,7 +105,7 @@
+
+ #define LIBFUZZER_POSIX \
+ (LIBFUZZER_APPLE || LIBFUZZER_LINUX || LIBFUZZER_NETBSD || \
+- LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD)
++ LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD)
+
+ #ifdef __x86_64
+ # if __has_attribute(target)
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp
+@@ -119,7 +119,7 @@ size_t GetPeakRSSMb() {
+ if (getrusage(RUSAGE_SELF, &usage))
+ return 0;
+ if (LIBFUZZER_LINUX || LIBFUZZER_FREEBSD || LIBFUZZER_NETBSD ||
+- LIBFUZZER_OPENBSD) {
++ LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD) {
+ // ru_maxrss is in KiB
+ return usage.ru_maxrss >> 10;
+ } else if (LIBFUZZER_APPLE) {
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp
+@@ -12,7 +12,7 @@
+ #include "FuzzerDefs.h"
+
+ #if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \
+- LIBFUZZER_OPENBSD
++ LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD
+ __attribute__((weak)) extern uint8_t __start___libfuzzer_extra_counters;
+ __attribute__((weak)) extern uint8_t __stop___libfuzzer_extra_counters;
+
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp
+@@ -14,7 +14,7 @@
+ //===----------------------------------------------------------------------===//
+ #include "FuzzerDefs.h"
+ #if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FUCHSIA || \
+- LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD
++ LIBFUZZER_FREEBSD || LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD
+
+ #include "FuzzerExtFunctions.h"
+ #include "FuzzerIO.h"
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp
+@@ -10,7 +10,7 @@
+ //===----------------------------------------------------------------------===//
+ #include "FuzzerDefs.h"
+ #if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \
+- LIBFUZZER_OPENBSD
++ LIBFUZZER_OPENBSD || LIBFUZZER_KFREEBSD
+ #include "FuzzerCommand.h"
+
+ #include <stdlib.h>
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h
+@@ -21,7 +21,7 @@
+ // 32-bit mode.
+ #if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32)
+ # include <osreldate.h>
+-# if __FreeBSD_version <= 902001 // v9.2
++# if !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
+ # include <link.h>
+ # include <sys/param.h>
+ # include <ucontext.h>
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc
+@@ -38,7 +38,7 @@
+ // Fix 'kinfo_vmentry' definition on FreeBSD prior v9.2 in 32-bit mode.
+ #if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32)
+ #include <osreldate.h>
+-#if __FreeBSD_version <= 902001 // v9.2
++#if !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2
+ #define kinfo_vmentry xkinfo_vmentry
+ #endif
+ #endif
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -20,7 +20,9 @@
+ #include "sanitizer_internal_defs.h"
+ #include "sanitizer_platform.h"
+
++#if !SANITIZER_KFREEBSD
+ # define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) ((link_map*)(handle))
++#endif
+
+ #ifndef __GLIBC_PREREQ
+ #define __GLIBC_PREREQ(x, y) 0
+Index: llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc
+===================================================================
+--- llvm-toolchain-8_8~+rc2.orig/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc
++++ llvm-toolchain-8_8~+rc2/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc
+@@ -20,7 +20,7 @@
+ # define SYSCALL(name) __NR_ ## name
+ #endif
+
+-#if defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC)
++#if defined(__x86_64__) && ((SANITIZER_FREEBSD && !SANITIZER_KFREEBSD) || SANITIZER_MAC)
+ # define internal_syscall __syscall
+ # else
+ # define internal_syscall syscall