From bd3578a334484defaedb8c188db50a35895a8dc5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 24 Jan 2019 08:53:24 +0100 Subject: [PATCH 01/13] New snapshot release --- debian/changelog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index db1e63b0..00eb322e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ -llvm-toolchain-8 (1:8~svn351401-1~exp3) experimental; urgency=medium +llvm-toolchain-8 (1:8~+rc1-1~exp1) experimental; urgency=medium + * New snapshot release * Remove 'Multi-Arch: same' in libclang (Closes: #874248) From 493fb2e10fc4440ee0c026f085e730dc8701200e Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 28 Jan 2019 23:18:55 +0100 Subject: [PATCH 02/13] Document a regression --- debian/TODO | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/debian/TODO b/debian/TODO index 0ce53dbd..bd5d2479 100644 --- a/debian/TODO +++ b/debian/TODO @@ -3,4 +3,10 @@ called libclang1-3.3.so) * move the header at the right place in libclang-dev -* bootstrap of clang with itself +* In 1:7.0.1~+rc2-5, we did: + * Fix a baseline violation on armhf (Closes: #914268) + clang-arm-default-vfp3-on-armv7a.patch has been updated to disable + neon in another place +It caused 200+ tests to fail on arm: +https://buildd.debian.org/status/fetch.php?pkg=llvm-toolchain-7&arch=amd64&ver=1%3A7.0.1%7E%2Brc2-4&stamp=1542503855&raw=0 +https://buildd.debian.org/status/fetch.php?pkg=llvm-toolchain-7&arch=amd64&ver=1%3A7.0.1%7E%2Brc2-5&stamp=1542863723&raw=0 From 7e6d375356f4e833ceb116d549750c79a3083566 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 30 Jan 2019 08:58:40 +0100 Subject: [PATCH 03/13] rebase of the patch --- debian/patches/fix-llvm-config.diff | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/debian/patches/fix-llvm-config.diff b/debian/patches/fix-llvm-config.diff index 32feaadf..22fd59c3 100644 --- a/debian/patches/fix-llvm-config.diff +++ b/debian/patches/fix-llvm-config.diff @@ -1,6 +1,8 @@ ---- llvm-toolchain-7-7~+rc3.orig/tools/llvm-config/CMakeLists.txt -+++ llvm-toolchain-7-7~+rc3/tools/llvm-config/CMakeLists.txt -@@ -32,9 +32,9 @@ +Index: llvm-toolchain-7_7.0.1~svn347285/tools/llvm-config/CMakeLists.txt +=================================================================== +--- llvm-toolchain-7_7.0.1~svn347285.orig/tools/llvm-config/CMakeLists.txt ++++ llvm-toolchain-7_7.0.1~svn347285/tools/llvm-config/CMakeLists.txt +@@ -32,9 +32,9 @@ get_property(COMPILE_FLAGS TARGET llvm-c # Use configure_file to create BuildVariables.inc. set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR}) From 8d2542f6a98993c2ba2b9af95a843f17dd821b5d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 30 Jan 2019 09:22:20 +0100 Subject: [PATCH 04/13] * experimental New snapshot release * Remove pr39427-misscompile.diff as it has been applied upstream --- debian/changelog | 7 ++++++ debian/patches/pr39427-misscompile.diff | 29 ------------------------- debian/patches/series | 1 - 3 files changed, 7 insertions(+), 30 deletions(-) delete mode 100644 debian/patches/pr39427-misscompile.diff diff --git a/debian/changelog b/debian/changelog index bb76327d..4b46fe27 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-7 (1:7.0.1~svn352582-1~exp1) UNRELEASED; urgency=medium + + * experimental New snapshot release + * Remove pr39427-misscompile.diff as it has been applied upstream + + -- Sylvestre Ledru Wed, 30 Jan 2019 08:53:14 +0100 + llvm-toolchain-7 (1:7.0.1-5) unstable; urgency=medium * Add 'Rules-Requires-Root: no' in debian/control diff --git a/debian/patches/pr39427-misscompile.diff b/debian/patches/pr39427-misscompile.diff deleted file mode 100644 index 797e02b1..00000000 --- a/debian/patches/pr39427-misscompile.diff +++ /dev/null @@ -1,29 +0,0 @@ -Index: llvm-toolchain-7-7/include/llvm/ADT/Optional.h -=================================================================== ---- llvm-toolchain-7-7.orig/include/llvm/ADT/Optional.h -+++ llvm-toolchain-7-7/include/llvm/ADT/Optional.h -@@ -108,24 +108,6 @@ template st - } - }; - --#if !defined(__GNUC__) || defined(__clang__) // GCC up to GCC7 miscompiles this. --/// Storage for trivially copyable types only. --template struct OptionalStorage { -- AlignedCharArrayUnion storage; -- bool hasVal = false; -- -- OptionalStorage() = default; -- -- OptionalStorage(const T &y) : hasVal(true) { new (storage.buffer) T(y); } -- OptionalStorage &operator=(const T &y) { -- *reinterpret_cast(storage.buffer) = y; -- hasVal = true; -- return *this; -- } -- -- void reset() { hasVal = false; } --}; --#endif - } // namespace optional_detail - - template class Optional { diff --git a/debian/patches/series b/debian/patches/series index f189a676..be214d4e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -99,7 +99,6 @@ clang-arm-default-vfp3-on-armv7a.patch # For the bootstrap bootstrap-fix-include-next.diff clangd-atomic-cmake.patch -pr39427-misscompile.diff # Rustc rustc-aarch64-test-failure.diff From 7afb79bc7c0ec8c9b7ccfcefe301c611da4951ed Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 30 Jan 2019 09:22:56 +0100 Subject: [PATCH 05/13] rebase of the patch --- debian/patches/fix-llvm-config.diff | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/patches/fix-llvm-config.diff b/debian/patches/fix-llvm-config.diff index 22fd59c3..b2241550 100644 --- a/debian/patches/fix-llvm-config.diff +++ b/debian/patches/fix-llvm-config.diff @@ -1,7 +1,7 @@ -Index: llvm-toolchain-7_7.0.1~svn347285/tools/llvm-config/CMakeLists.txt +Index: llvm-toolchain-7_7.0.1~svn352582/tools/llvm-config/CMakeLists.txt =================================================================== ---- llvm-toolchain-7_7.0.1~svn347285.orig/tools/llvm-config/CMakeLists.txt -+++ llvm-toolchain-7_7.0.1~svn347285/tools/llvm-config/CMakeLists.txt +--- llvm-toolchain-7_7.0.1~svn352582.orig/tools/llvm-config/CMakeLists.txt ++++ llvm-toolchain-7_7.0.1~svn352582/tools/llvm-config/CMakeLists.txt @@ -32,9 +32,9 @@ get_property(COMPILE_FLAGS TARGET llvm-c # Use configure_file to create BuildVariables.inc. set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) @@ -14,4 +14,4 @@ Index: llvm-toolchain-7_7.0.1~svn347285/tools/llvm-config/CMakeLists.txt +set(LLVM_CXXFLAGS "${COMPILE_FLAGS} ${LLVM_DEFINITIONS}") set(LLVM_BUILD_SYSTEM cmake) set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI}) - set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}") + set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}") From 0d62419943c9b8ab22dc81a74921272a708c98dc Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 3 Feb 2019 17:24:33 +0100 Subject: [PATCH 06/13] dumpversion test --- debian/qualify-clang.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 5b6765fb..46a84d0c 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -76,7 +76,12 @@ clang-$VERSION foo.c echo '#include ' > foo.c clang-$VERSION -c foo.c - +# https://bugs.launchpad.net/bugs/1810860 +clang-$VERSION -dumpversion &> foo.log +if grep 4.2.1 foo.log; then + echo "dumpversion still returns 4.2.1" +# exit 1 +fi # bug 903709 echo '#include From d25bfbfc05114f067ecc0a307794a2deddd75082 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 3 Feb 2019 17:27:16 +0100 Subject: [PATCH 07/13] Revert "* experimental New snapshot release" This reverts commit 8d2542f6a98993c2ba2b9af95a843f17dd821b5d. --- debian/changelog | 7 ------ debian/patches/pr39427-misscompile.diff | 29 +++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 debian/patches/pr39427-misscompile.diff diff --git a/debian/changelog b/debian/changelog index 4b46fe27..bb76327d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,3 @@ -llvm-toolchain-7 (1:7.0.1~svn352582-1~exp1) UNRELEASED; urgency=medium - - * experimental New snapshot release - * Remove pr39427-misscompile.diff as it has been applied upstream - - -- Sylvestre Ledru Wed, 30 Jan 2019 08:53:14 +0100 - llvm-toolchain-7 (1:7.0.1-5) unstable; urgency=medium * Add 'Rules-Requires-Root: no' in debian/control diff --git a/debian/patches/pr39427-misscompile.diff b/debian/patches/pr39427-misscompile.diff new file mode 100644 index 00000000..797e02b1 --- /dev/null +++ b/debian/patches/pr39427-misscompile.diff @@ -0,0 +1,29 @@ +Index: llvm-toolchain-7-7/include/llvm/ADT/Optional.h +=================================================================== +--- llvm-toolchain-7-7.orig/include/llvm/ADT/Optional.h ++++ llvm-toolchain-7-7/include/llvm/ADT/Optional.h +@@ -108,24 +108,6 @@ template st + } + }; + +-#if !defined(__GNUC__) || defined(__clang__) // GCC up to GCC7 miscompiles this. +-/// Storage for trivially copyable types only. +-template struct OptionalStorage { +- AlignedCharArrayUnion storage; +- bool hasVal = false; +- +- OptionalStorage() = default; +- +- OptionalStorage(const T &y) : hasVal(true) { new (storage.buffer) T(y); } +- OptionalStorage &operator=(const T &y) { +- *reinterpret_cast(storage.buffer) = y; +- hasVal = true; +- return *this; +- } +- +- void reset() { hasVal = false; } +-}; +-#endif + } // namespace optional_detail + + template class Optional { diff --git a/debian/patches/series b/debian/patches/series index be214d4e..f189a676 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -99,6 +99,7 @@ clang-arm-default-vfp3-on-armv7a.patch # For the bootstrap bootstrap-fix-include-next.diff clangd-atomic-cmake.patch +pr39427-misscompile.diff # Rustc rustc-aarch64-test-failure.diff From de8350eea4269a1548bf4d73bc640d6e516841ce Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 3 Feb 2019 17:26:40 +0100 Subject: [PATCH 08/13] kfreebsd support --- debian/changelog | 7 + debian/patches/kfreebsd/CMakeLists.txt.diff | 13 + .../kfreebsd/clang_lib_Basic_Targets.diff | 48 ++ debian/patches/kfreebsd/compiler-rt_lib.diff | 520 +++++++++++++++ .../kfreebsd/include_llvm_ADT_Triple.h.diff | 33 + .../kfreebsd-libcxx-threads-detection.diff | 12 + debian/patches/kfreebsd/kfreebsd-openmp.diff | 128 ++++ .../kfreebsd/kfreebsd-threads-build.diff | 13 + .../kfreebsd/kfreebsd-triple-clang.diff | 615 ++++++++++++++++++ debian/patches/kfreebsd/kfreebsd-triple.diff | 23 + debian/patches/kfreebsd/lib_Support.diff | 42 ++ debian/patches/kfreebsd/lib_Target_X86.diff | 26 + .../kfreebsd/liblldb-7.install.kfreebsd | 2 + .../lldb_source_Host_freebsd_Host.cpp.diff | 18 + .../lldb_source_Plugins_Process_FreeBSD.diff | 28 + .../tools_llvm-shlib_CMakeLists.txt.diff | 12 + debian/patches/series | 16 + 17 files changed, 1556 insertions(+) create mode 100644 debian/patches/kfreebsd/CMakeLists.txt.diff create mode 100644 debian/patches/kfreebsd/clang_lib_Basic_Targets.diff create mode 100644 debian/patches/kfreebsd/compiler-rt_lib.diff create mode 100644 debian/patches/kfreebsd/include_llvm_ADT_Triple.h.diff create mode 100644 debian/patches/kfreebsd/kfreebsd-libcxx-threads-detection.diff create mode 100644 debian/patches/kfreebsd/kfreebsd-openmp.diff create mode 100644 debian/patches/kfreebsd/kfreebsd-threads-build.diff create mode 100644 debian/patches/kfreebsd/kfreebsd-triple-clang.diff create mode 100644 debian/patches/kfreebsd/kfreebsd-triple.diff create mode 100644 debian/patches/kfreebsd/lib_Support.diff create mode 100644 debian/patches/kfreebsd/lib_Target_X86.diff create mode 100644 debian/patches/kfreebsd/liblldb-7.install.kfreebsd create mode 100644 debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff create mode 100644 debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff create mode 100644 debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff diff --git a/debian/changelog b/debian/changelog index bb76327d..0ed55629 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-7 (1:7.0.1-6) unstable; urgency=medium + + * Add support for kfreebsd (Closes: #921246) + Many thanks to Svante Signell for all patches + + -- Sylvestre Ledru Sun, 03 Feb 2019 17:27:51 +0100 + llvm-toolchain-7 (1:7.0.1-5) unstable; urgency=medium * Add 'Rules-Requires-Root: no' in debian/control diff --git a/debian/patches/kfreebsd/CMakeLists.txt.diff b/debian/patches/kfreebsd/CMakeLists.txt.diff new file mode 100644 index 00000000..30ec60e8 --- /dev/null +++ b/debian/patches/kfreebsd/CMakeLists.txt.diff @@ -0,0 +1,13 @@ +Index: llvm-toolchain-7-7.0.1/CMakeLists.txt +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/CMakeLists.txt ++++ llvm-toolchain-7-7.0.1/CMakeLists.txt +@@ -821,7 +821,7 @@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) + # (this is a variable that CrossCompile sets on recursive invocations) + endif() + +-if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") ++if( ${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)" AND NOT "kFreeBSD" ) + # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM + # with libxml2, iconv.h, etc., we must add /usr/local paths. + include_directories(SYSTEM "/usr/local/include") diff --git a/debian/patches/kfreebsd/clang_lib_Basic_Targets.diff b/debian/patches/kfreebsd/clang_lib_Basic_Targets.diff new file mode 100644 index 00000000..8361b819 --- /dev/null +++ b/debian/patches/kfreebsd/clang_lib_Basic_Targets.diff @@ -0,0 +1,48 @@ +Index: llvm-toolchain-7-7.0.1/clang/lib/Basic/Targets.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/clang/lib/Basic/Targets.cpp ++++ llvm-toolchain-7-7.0.1/clang/lib/Basic/Targets.cpp +@@ -469,8 +469,8 @@ TargetInfo *AllocateTarget(const llvm::T + return new OpenBSDI386TargetInfo(Triple, Opts); + case llvm::Triple::FreeBSD: + return new FreeBSDTargetInfo(Triple, Opts); +- case llvm::Triple::KFreeBSD: +- return new KFreeBSDTargetInfo(Triple, Opts); ++ case llvm::Triple::kFreeBSD: ++ return new kFreeBSDTargetInfo(Triple, Opts); + case llvm::Triple::Minix: + return new MinixTargetInfo(Triple, Opts); + case llvm::Triple::Solaris: +@@ -528,8 +528,8 @@ TargetInfo *AllocateTarget(const llvm::T + return new FreeBSDTargetInfo(Triple, Opts); + case llvm::Triple::Fuchsia: + return new FuchsiaTargetInfo(Triple, Opts); +- case llvm::Triple::KFreeBSD: +- return new KFreeBSDTargetInfo(Triple, Opts); ++ case llvm::Triple::kFreeBSD: ++ return new kFreeBSDTargetInfo(Triple, Opts); + case llvm::Triple::Solaris: + return new SolarisTargetInfo(Triple, Opts); + case llvm::Triple::Win32: { +Index: llvm-toolchain-7-7.0.1/clang/lib/Basic/Targets/OSTargets.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/clang/lib/Basic/Targets/OSTargets.h ++++ llvm-toolchain-7-7.0.1/clang/lib/Basic/Targets/OSTargets.h +@@ -226,7 +226,7 @@ public: + + // GNU/kFreeBSD Target + template +-class LLVM_LIBRARY_VISIBILITY KFreeBSDTargetInfo : public OSTargetInfo { ++class LLVM_LIBRARY_VISIBILITY kFreeBSDTargetInfo : public OSTargetInfo { + protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, + MacroBuilder &Builder) const override { +@@ -243,7 +243,7 @@ protected: + } + + public: +- KFreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) ++ kFreeBSDTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : OSTargetInfo(Triple, Opts) {} + }; + diff --git a/debian/patches/kfreebsd/compiler-rt_lib.diff b/debian/patches/kfreebsd/compiler-rt_lib.diff new file mode 100644 index 00000000..2f08eef2 --- /dev/null +++ b/debian/patches/kfreebsd/compiler-rt_lib.diff @@ -0,0 +1,520 @@ +Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc +@@ -86,9 +86,14 @@ + extern "C" { + // must be included after and on + // FreeBSD 9.2 and 10.0. ++#if SANITIZER_KFREEBSD ++#include ++#endif + #include + } ++#if !SANITIZER_KFREEBSD + #include ++#endif + #endif // SANITIZER_FREEBSD + + #if SANITIZER_NETBSD +@@ -466,10 +471,12 @@ bool FileExists(const char *filename) { + } + + 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_NETBSD +@@ -1143,10 +1150,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-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +@@ -35,10 +35,12 @@ + #include + + #if SANITIZER_FREEBSD +-#include ++# if !SANITIZER_KFREEBSD ++# include ++# define pthread_getattr_np pthread_attr_get_np ++# endif + #include + #include +-#define pthread_getattr_np pthread_attr_get_np + #endif + + #if SANITIZER_OPENBSD +@@ -523,9 +525,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-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform.h ++++ llvm-toolchain-7-7.0.1/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-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -49,7 +49,7 @@ + #include + #endif + +-#if !SANITIZER_IOS ++#if !SANITIZER_IOS && !SANITIZER_KFREEBSD + #include + #endif + +@@ -86,7 +86,11 @@ + # include + # include + # include ++#if SANITIZER_KFREEBSD ++# include ++#else + # include ++#endif + # include + # include + # include +@@ -95,7 +99,11 @@ + # include + # include + # include ++#if SANITIZER_KFREEBSD ++# include ++#else + # include ++#endif + # include + # include + # include +@@ -286,7 +294,7 @@ namespace __sanitizer { + #endif + + +-#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID ++#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD + unsigned struct_shminfo_sz = sizeof(struct shminfo); + unsigned struct_shm_info_sz = sizeof(struct shm_info); + int shmctl_ipc_stat = (int)IPC_STAT; +@@ -316,7 +324,7 @@ namespace __sanitizer { + return 0; + } + +-#if SANITIZER_LINUX ++#if SANITIZER_LINUX || SANITIZER_KFREEBSD + unsigned struct_ElfW_Phdr_sz = sizeof(ElfW(Phdr)); + #elif SANITIZER_FREEBSD + unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); +@@ -496,7 +504,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El + unsigned struct_ppp_stats_sz = sizeof(struct ppp_stats); + #endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID + +-#if !SANITIZER_ANDROID && !SANITIZER_MAC ++#if !SANITIZER_ANDROID && !SANITIZER_MAC && !SANITIZER_KFREEBSD + unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req); + unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req); + #endif +@@ -547,7 +555,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El + unsigned IOCTL_TIOCSPGRP = TIOCSPGRP; + unsigned IOCTL_TIOCSTI = TIOCSTI; + unsigned IOCTL_TIOCSWINSZ = TIOCSWINSZ; +-#if ((SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID) ++#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD + unsigned IOCTL_SIOCGETSGCNT = SIOCGETSGCNT; + unsigned IOCTL_SIOCGETVIFCNT = SIOCGETVIFCNT; + #endif +@@ -989,7 +997,7 @@ CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi + CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum); + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + +-#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID ++#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD + CHECK_TYPE_SIZE(glob_t); + CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc); + CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv); +@@ -1009,8 +1017,10 @@ CHECK_SIZE_AND_OFFSET(addrinfo, ai_sockt + CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol); + CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol); + CHECK_SIZE_AND_OFFSET(addrinfo, ai_addrlen); ++#if !SANITIZER_KFREEBSD + CHECK_SIZE_AND_OFFSET(addrinfo, ai_canonname); + CHECK_SIZE_AND_OFFSET(addrinfo, ai_addr); ++#endif + + CHECK_TYPE_SIZE(hostent); + CHECK_SIZE_AND_OFFSET(hostent, h_name); +@@ -1032,7 +1042,9 @@ CHECK_SIZE_AND_OFFSET(msghdr, msg_contro + CHECK_SIZE_AND_OFFSET(msghdr, msg_controllen); + CHECK_SIZE_AND_OFFSET(msghdr, msg_flags); + ++#if !SANITIZER_KFREEBSD + CHECK_TYPE_SIZE(cmsghdr); ++#endif + CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len); + CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level); + CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type); +@@ -1074,7 +1086,9 @@ CHECK_SIZE_AND_OFFSET(pollfd, fd); + CHECK_SIZE_AND_OFFSET(pollfd, events); + CHECK_SIZE_AND_OFFSET(pollfd, revents); + ++#if !SANITIZER_KFREEBSD + CHECK_TYPE_SIZE(nfds_t); ++#endif + + CHECK_TYPE_SIZE(sigset_t); + +@@ -1114,7 +1128,9 @@ CHECK_TYPE_SIZE(__kernel_fd_set); + #endif + + #if !SANITIZER_ANDROID ++# if !SANITIZER_KFREEBSD + CHECK_TYPE_SIZE(wordexp_t); ++# endif + CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordc); + CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordv); + CHECK_SIZE_AND_OFFSET(wordexp_t, we_offs); +@@ -1147,13 +1163,14 @@ CHECK_TYPE_SIZE(ether_addr); + + #if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID + CHECK_TYPE_SIZE(ipc_perm); +-# if SANITIZER_FREEBSD ++#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD + CHECK_SIZE_AND_OFFSET(ipc_perm, key); + CHECK_SIZE_AND_OFFSET(ipc_perm, seq); +-# else ++#endif ++#if !SANITIZER_FREEBSD && !SANITIZER_KFREEBSD + CHECK_SIZE_AND_OFFSET(ipc_perm, __key); + CHECK_SIZE_AND_OFFSET(ipc_perm, __seq); +-# endif ++#endif + CHECK_SIZE_AND_OFFSET(ipc_perm, uid); + CHECK_SIZE_AND_OFFSET(ipc_perm, gid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); +@@ -1192,7 +1209,7 @@ CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_netma + #ifdef ifa_dstaddr + #undef ifa_dstaddr + #endif +-# if SANITIZER_FREEBSD ++# if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD + CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr); + # else + COMPILER_CHECK(sizeof(((__sanitizer_ifaddrs *)nullptr)->ifa_dstaddr) == +@@ -1218,15 +1235,19 @@ CHECK_SIZE_AND_OFFSET(timeb, timezone); + CHECK_SIZE_AND_OFFSET(timeb, dstflag); + #endif + ++#if !SANITIZER_KFREEBSD + CHECK_TYPE_SIZE(passwd); ++#endif + 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); ++#if !SANITIZER_KFREEBSD + CHECK_SIZE_AND_OFFSET(passwd, pw_dir); + CHECK_SIZE_AND_OFFSET(passwd, pw_shell); ++#endif + +-#if !SANITIZER_ANDROID ++#if !SANITIZER_ANDROID && !SANITIZER_KFREEBSD + CHECK_SIZE_AND_OFFSET(passwd, pw_gecos); + #endif + +@@ -1292,7 +1313,7 @@ CHECK_SIZE_AND_OFFSET(cookie_io_function + CHECK_SIZE_AND_OFFSET(cookie_io_functions_t, close); + #endif + +-#if SANITIZER_LINUX || SANITIZER_FREEBSD ++#if SANITIZER_LINUX || (SANITIZER_FREEBSD && !SANITIZER_KFREEBSD) + CHECK_TYPE_SIZE(sem_t); + #endif + +Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -20,7 +20,7 @@ + #include "sanitizer_internal_defs.h" + #include "sanitizer_platform.h" + +-#if SANITIZER_FREEBSD ++#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD + // FreeBSD's dlopen() returns a pointer to an Obj_Entry structure that + // incorporates the map structure. + # define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \ +Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc +@@ -43,7 +43,7 @@ + # else + # define internal_syscall_ptr syscall + # endif +-#elif defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC) ++#elif defined(__x86_64__) && ((SANITIZER_FREEBSD && !SANITIZER_KFREEBSD) || SANITIZER_MAC) + # define internal_syscall __syscall + # define internal_syscall64 __syscall + # define internal_syscall_ptr __syscall +Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/asan/asan_linux.cc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/asan/asan_linux.cc ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/asan/asan_linux.cc +@@ -38,7 +38,7 @@ + #include + #include + +-#if SANITIZER_FREEBSD ++#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD + #include + #endif + +@@ -48,7 +48,11 @@ + + #if SANITIZER_ANDROID || SANITIZER_FREEBSD || SANITIZER_SOLARIS + #include ++#if SANITIZER_KFREEBSD ++#include ++#else + extern "C" void* _DYNAMIC; ++#endif + #elif SANITIZER_NETBSD + #include + #include +@@ -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-7-7.0.1/compiler-rt/lib/ubsan/ubsan_platform.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/ubsan/ubsan_platform.h ++++ llvm-toolchain-7-7.0.1/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-7-7.0.1/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S +@@ -196,7 +196,7 @@ ASM_SYMBOL_INTERCEPTOR(setjmp): + #elif defined(__APPLE__) + lea 16(%rsp), %rdi + mov %rdi, %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) +@@ -244,7 +244,7 @@ ASM_SYMBOL_INTERCEPTOR(_setjmp): + #elif defined(__APPLE__) + lea 16(%rsp), %rdi + mov %rdi, %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) +@@ -299,7 +299,7 @@ ASM_SYMBOL_INTERCEPTOR(sigsetjmp): + #elif defined(__APPLE__) + lea 32(%rsp), %rdi + mov %rdi, %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) +@@ -386,7 +386,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-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerDefs.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerDefs.h ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerDefs.h +@@ -54,6 +54,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 +@@ -88,7 +97,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-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp ++++ llvm-toolchain-7-7.0.1/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-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp ++++ llvm-toolchain-7-7.0.1/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-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp ++++ llvm-toolchain-7-7.0.1/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-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp ++++ llvm-toolchain-7-7.0.1/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 +Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h ++++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h +@@ -21,7 +21,7 @@ + // 32-bit mode. + #if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32) + # include +-# if __FreeBSD_version <= 902001 // v9.2 ++# if !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2 + # include + # include + # include +Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc ++++ llvm-toolchain-7-7.0.1/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 +-#if __FreeBSD_version <= 902001 // v9.2 ++#if !SANITIZER_KFREEBSD && __FreeBSD_version <= 902001 // v9.2 + #define kinfo_vmentry xkinfo_vmentry + #endif + #endif diff --git a/debian/patches/kfreebsd/include_llvm_ADT_Triple.h.diff b/debian/patches/kfreebsd/include_llvm_ADT_Triple.h.diff new file mode 100644 index 00000000..219c7a2e --- /dev/null +++ b/debian/patches/kfreebsd/include_llvm_ADT_Triple.h.diff @@ -0,0 +1,33 @@ +Index: llvm-toolchain-7-7.0.1/include/llvm/ADT/Triple.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/include/llvm/ADT/Triple.h ++++ llvm-toolchain-7-7.0.1/include/llvm/ADT/Triple.h +@@ -158,7 +158,7 @@ public: + FreeBSD, + Fuchsia, + IOS, +- KFreeBSD, ++ kFreeBSD, + Linux, + Lv2, // PS3 + MacOSX, +@@ -575,8 +575,8 @@ public: + } + + /// Tests whether the OS is kFreeBSD. +- bool isOSKFreeBSD() const { +- return getOS() == Triple::KFreeBSD; ++ bool isOSkFreeBSD() const { ++ return getOS() == Triple::kFreeBSD; + } + + /// Tests whether the OS is Hurd. +@@ -586,7 +586,7 @@ public: + + /// Tests whether the OS uses glibc. + bool isOSGlibc() const { +- return (getOS() == Triple::Linux || getOS() == Triple::KFreeBSD || ++ return (getOS() == Triple::Linux || getOS() == Triple::kFreeBSD || + getOS() == Triple::Hurd) && + !isAndroid(); + } diff --git a/debian/patches/kfreebsd/kfreebsd-libcxx-threads-detection.diff b/debian/patches/kfreebsd/kfreebsd-libcxx-threads-detection.diff new file mode 100644 index 00000000..ae37db23 --- /dev/null +++ b/debian/patches/kfreebsd/kfreebsd-libcxx-threads-detection.diff @@ -0,0 +1,12 @@ +Index: llvm-toolchain-7-7.0.1/libcxx/include/__config +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/libcxx/include/__config ++++ llvm-toolchain-7-7.0.1/libcxx/include/__config +@@ -1107,6 +1107,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit + !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \ + !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) + # if defined(__FreeBSD__) || \ ++ defined(__FreeBSD_kernel__) || \ + defined(__Fuchsia__) || \ + defined(__NetBSD__) || \ + defined(__linux__) || \ diff --git a/debian/patches/kfreebsd/kfreebsd-openmp.diff b/debian/patches/kfreebsd/kfreebsd-openmp.diff new file mode 100644 index 00000000..2ca72e1d --- /dev/null +++ b/debian/patches/kfreebsd/kfreebsd-openmp.diff @@ -0,0 +1,128 @@ +Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp.h ++++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp.h +@@ -1052,6 +1052,10 @@ extern kmp_uint64 __kmp_now_nsec(); + /* TODO: tune for KMP_OS_HURD */ + #define KMP_INIT_WAIT 1024U /* initial number of spin-tests */ + #define KMP_NEXT_WAIT 512U /* susequent number of spin-tests */ ++#elif KMP_OS_KFREEBSD ++/* TODO: tune for KMP_OS_KFREEBSD */ ++#define KMP_INIT_WAIT 1024U /* initial number of spin-tests */ ++#define KMP_NEXT_WAIT 512U /* susequent number of spin-tests */ + #endif + + #if KMP_ARCH_X86 || KMP_ARCH_X86_64 +Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_ftn_entry.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp_ftn_entry.h ++++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_ftn_entry.h +@@ -369,7 +369,7 @@ int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_ + #else + int gtid; + +-#if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD ++#if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + gtid = __kmp_entry_gtid(); + #elif KMP_OS_WINDOWS + if (!__kmp_init_parallel || +Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_platform.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp_platform.h ++++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_platform.h +@@ -18,6 +18,7 @@ + + #define KMP_OS_LINUX 0 + #define KMP_OS_FREEBSD 0 ++#define KMP_OS_KFREEBSD 0 + #define KMP_OS_NETBSD 0 + #define KMP_OS_DARWIN 0 + #define KMP_OS_WINDOWS 0 +@@ -50,6 +51,11 @@ + #define KMP_OS_FREEBSD 1 + #endif + ++#if (defined __FreeBSD_kernel__) ++#undef KMP_OS_KFREEBSD ++#define KMP_OS_KFREEBSD 1 ++#endif ++ + #if (defined __NetBSD__) + #undef KMP_OS_NETBSD + #define KMP_OS_NETBSD 1 +@@ -67,11 +73,11 @@ + + #if (1 != \ + KMP_OS_LINUX + KMP_OS_FREEBSD + KMP_OS_NETBSD + KMP_OS_DARWIN + \ +- KMP_OS_WINDOWS + KMP_OS_HURD) ++ KMP_OS_WINDOWS + KMP_OS_HURD + KMP_OS_KFREEBSD) + #error Unknown OS + #endif + +-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_DARWIN || KMP_OS_HURD ++#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_KFREEBSD || KMP_OS_NETBSD || KMP_OS_DARWIN || KMP_OS_HURD + #undef KMP_OS_UNIX + #define KMP_OS_UNIX 1 + #endif +Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_runtime.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp_runtime.cpp ++++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_runtime.cpp +@@ -7643,7 +7643,7 @@ __kmp_determine_reduction_method( + #if KMP_ARCH_X86_64 || KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 || KMP_ARCH_MIPS64 + + #if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_WINDOWS || \ +- KMP_OS_DARWIN || KMP_OS_HURD ++ KMP_OS_DARWIN || KMP_OS_HURD || KMP_OS_KFREEBSD + + int teamsize_cutoff = 4; + +@@ -7670,7 +7670,7 @@ __kmp_determine_reduction_method( + + #elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS + +-#if KMP_OS_LINUX || KMP_OS_WINDOWS || KMP_OS_HURD ++#if KMP_OS_LINUX || KMP_OS_WINDOWS || KMP_OS_HURD || KMP_OS_KFREEBSD + + // basic tuning + +Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/z_Linux_util.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/z_Linux_util.cpp ++++ llvm-toolchain-7-7.0.1/openmp/runtime/src/z_Linux_util.cpp +@@ -444,7 +444,7 @@ void __kmp_terminate_thread(int gtid) { + determined exactly, FALSE if incremental refinement is necessary. */ + static kmp_int32 __kmp_set_stack_info(int gtid, kmp_info_t *th) { + int stack_data; +-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD ++#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + pthread_attr_t attr; + int status; + size_t size = 0; +@@ -496,7 +496,7 @@ static void *__kmp_launch_worker(void *t + sigset_t new_set, old_set; + #endif /* KMP_BLOCK_SIGNALS */ + void *exit_val; +-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD ++#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + void *volatile padding = 0; + #endif + int gtid; +@@ -1764,7 +1764,7 @@ static int __kmp_get_xproc(void) { + + int r = 0; + +-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD ++#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + + r = sysconf(_SC_NPROCESSORS_ONLN); + +@@ -1952,7 +1952,7 @@ int __kmp_is_address_mapped(void *addr) + int found = 0; + int rc; + +-#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_HURD ++#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + + /* On GNUish OSes, read the /proc//maps pseudo-file to get all the address + ranges mapped into the address space. */ diff --git a/debian/patches/kfreebsd/kfreebsd-threads-build.diff b/debian/patches/kfreebsd/kfreebsd-threads-build.diff new file mode 100644 index 00000000..7ed8ed6f --- /dev/null +++ b/debian/patches/kfreebsd/kfreebsd-threads-build.diff @@ -0,0 +1,13 @@ +Index: llvm-toolchain-7-7.0.1/libcxx/src/thread.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/libcxx/src/thread.cpp ++++ llvm-toolchain-7-7.0.1/libcxx/src/thread.cpp +@@ -19,7 +19,7 @@ + + #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) + # include +-# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) ++# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) + # include + # endif + #endif // defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) diff --git a/debian/patches/kfreebsd/kfreebsd-triple-clang.diff b/debian/patches/kfreebsd/kfreebsd-triple-clang.diff new file mode 100644 index 00000000..1462a1f9 --- /dev/null +++ b/debian/patches/kfreebsd/kfreebsd-triple-clang.diff @@ -0,0 +1,615 @@ +Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/CMakeLists.txt +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/CMakeLists.txt ++++ llvm-toolchain-7-7.0.1/clang/lib/Driver/CMakeLists.txt +@@ -48,6 +48,7 @@ add_clang_library(clangDriver + ToolChains/HIP.cpp + ToolChains/Hexagon.cpp + ToolChains/Hurd.cpp ++ ToolChains/KFreeBSD.cpp + ToolChains/Linux.cpp + ToolChains/MipsLinux.cpp + ToolChains/MinGW.cpp +Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/Driver.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/Driver.cpp ++++ llvm-toolchain-7-7.0.1/clang/lib/Driver/Driver.cpp +@@ -27,6 +27,7 @@ + #include "ToolChains/Haiku.h" + #include "ToolChains/Hexagon.h" + #include "ToolChains/Hurd.h" ++#include "ToolChains/KFreeBSD.h" + #include "ToolChains/Lanai.h" + #include "ToolChains/Linux.h" + #include "ToolChains/MSVC.h" +@@ -4320,6 +4321,9 @@ const ToolChain &Driver::getToolChain(co + case llvm::Triple::FreeBSD: + TC = llvm::make_unique(*this, Target, Args); + break; ++ case llvm::Triple::kFreeBSD: ++ TC = llvm::make_unique(*this, Target, Args); ++ break; + case llvm::Triple::Minix: + TC = llvm::make_unique(*this, Target, Args); + break; +Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Clang.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/ToolChains/Clang.cpp ++++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Clang.cpp +@@ -528,7 +528,7 @@ static bool useFramePointerForTargetByDe + return !areOptimizationsEnabled(Args); + } + +- if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI || Triple.isOSHurd()) { ++ if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI || Triple.isOSHurd() || Triple.isOSkFreeBSD()) { + switch (Triple.getArch()) { + // Don't use a frame pointer on linux if optimizing for certain targets. + case llvm::Triple::mips64: +Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Gnu.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/ToolChains/Gnu.cpp ++++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -499,6 +499,18 @@ void tools::gnutools::Linker::ConstructJ + CmdArgs.push_back("--wrap=pthread_create"); + + CmdArgs.push_back("-lc"); ++ if (getToolChain().getTriple().isOSkFreeBSD()) { ++ switch (getToolChain().getArch()) { ++ case llvm::Triple::x86_64: ++ CmdArgs.push_back("-rpath-link=/lib/x86_64-kfreebsd-gnu"); ++ break; ++ case llvm::Triple::x86: ++ CmdArgs.push_back("-rpath-link=/lib/i386-kfreebsd-gnu"); ++ break; ++ default: ++ break; ++ } ++ } + + // Add IAMCU specific libs, if needed. + if (IsIAMCU) +@@ -1836,7 +1848,8 @@ void Generic_GCC::GCCInstallationDetecto + "x86_64-redhat-linux", "x86_64-suse-linux", + "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", + "x86_64-slackware-linux", "x86_64-unknown-linux", +- "x86_64-amazon-linux"}; ++ "x86_64-amazon-linux", "x86_64-kfreebsd-gnu", ++ "x86_64-pc-kfreebsd-gnu"}; + static const char *const X32LibDirs[] = {"/libx32", "/lib"}; + static const char *const X32Triples[] = { + "x86_64-linux-gnux32", "x86_64-unknown-linux-gnux32", +@@ -1847,8 +1860,9 @@ void Generic_GCC::GCCInstallationDetecto + "i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux", + "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", + "i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu", +- "i386-gnu", "i486-gnu", "i586-gnu", +- "i686-gnu"}; ++ "i686-kfreebsd-gnu", "i686-pc-kfreebsd-gnu", "i486-kfreebsd-gnu", ++ "i386-kfreebsd-gnu", "i386-gnu", "i486-gnu", ++ "i586-gnu", "i686-gnu"}; + + static const char *const MIPSLibDirs[] = {"/lib"}; + static const char *const MIPSTriples[] = {"mips-linux-gnu", "mips-mti-linux", +Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.cpp +=================================================================== +--- /dev/null ++++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.cpp +@@ -0,0 +1,459 @@ ++//===--- KFreeBSD.cpp - kFreeBSD ToolChain Implementations --------*- C++ -*-===// ++// ++// The LLVM Compiler Infrastructure ++// ++// This file is distributed under the University of Illinois Open Source ++// License. See LICENSE.TXT for details. ++// ++//===----------------------------------------------------------------------===// ++ ++#include "KFreeBSD.h" ++#include "CommonArgs.h" ++#include "clang/Basic/VirtualFileSystem.h" ++#include "clang/Config/config.h" ++#include "clang/Driver/Driver.h" ++#include "clang/Driver/Options.h" ++#include "clang/Driver/SanitizerArgs.h" ++#include "llvm/Option/ArgList.h" ++#include "llvm/ProfileData/InstrProf.h" ++#include "llvm/Support/Path.h" ++ ++using namespace clang::driver; ++using namespace clang::driver::toolchains; ++using namespace clang; ++using namespace llvm::opt; ++ ++using tools::addPathIfExists; ++ ++/// Get our best guess at the multiarch triple for a target. ++/// ++/// Debian-based systems are starting to use a multiarch setup where they use ++/// a target-triple directory in the library and header search paths. ++/// Unfortunately, this triple does not align with the vanilla target triple, ++/// so we provide a rough mapping here. ++static std::string getMultiarchTriple(const Driver &D, ++ const llvm::Triple &TargetTriple, ++ StringRef SysRoot) { ++ // For most architectures, just use whatever we have rather than trying to be ++ // clever. ++ switch (TargetTriple.getArch()) { ++ default: ++ break; ++ ++ // We use the existence of '/lib/' as a directory to detect ++ // some common kfreebsd triples that don't quite match the Clang ++ // triple for both 32-bit and 64-bit targets. Multiarch fixes its ++ // install triples to these regardless of what the actual target ++ // triple is. ++ case llvm::Triple::x86_64: ++ if (D.getVFS().exists(SysRoot + "/lib/x86_64-kfreebsd-gnu")) ++ return "x86_64-kfreebsd-gnu"; ++ break; ++ case llvm::Triple::x86: ++ if (D.getVFS().exists(SysRoot + "/lib/i386-kfreebsd-gnu")) ++ return "i386-kfreebsd-gnu"; ++ break; ++ } ++ ++ return TargetTriple.str(); ++} ++ ++static StringRef getOSLibDir(const llvm::Triple &Triple, const ArgList &Args) { ++ // It happens that only x86 and PPC use the 'lib32' variant of oslibdir, and ++ // using that variant while targeting other architectures causes problems ++ // because the libraries are laid out in shared system roots that can't cope ++ // with a 'lib32' library search path being considered. So we only enable ++ // them when we know we may need it. ++ // ++ // FIXME: This is a bit of a hack. We should really unify this code for ++ // reasoning about oslibdir spellings with the lib dir spellings in the ++ // GCCInstallationDetector, but that is a more significant refactoring. ++ ++ if (Triple.getArch() == llvm::Triple::x86) ++ return "lib"; ++ ++ if (Triple.getArch() == llvm::Triple::x86_64) ++ return "lib"; ++ ++ return Triple.isArch32Bit() ? "lib" : "lib64"; ++} ++ ++static void addMultilibsFilePaths(const Driver &D, const MultilibSet &Multilibs, ++ const Multilib &Multilib, ++ StringRef InstallPath, ++ ToolChain::path_list &Paths) { ++ if (const auto &PathsCallback = Multilibs.filePathsCallback()) ++ for (const auto &Path : PathsCallback(Multilib)) ++ addPathIfExists(D, InstallPath + Path, Paths); ++} ++ ++kFreeBSD::kFreeBSD(const Driver &D, const llvm::Triple &Triple, ++ const ArgList &Args) ++ : Generic_ELF(D, Triple, Args) { ++ GCCInstallation.init(Triple, Args); ++ Multilibs = GCCInstallation.getMultilibs(); ++ std::string SysRoot = computeSysRoot(); ++ ++ // Cross-compiling binutils and GCC installations (vanilla and openSUSE at ++ // least) put various tools in a triple-prefixed directory off of the parent ++ // of the GCC installation. We use the GCC triple here to ensure that we end ++ // up with tools that support the same amount of cross compiling as the ++ // detected GCC installation. For example, if we find a GCC installation ++ // targeting x86_64, but it is a bi-arch GCC installation, it can also be ++ // used to target i386. ++ // FIXME: This seems unlikely to be Linux-, kFreeBSD- or Hurd-specific. ++ ToolChain::path_list &PPaths = getProgramPaths(); ++ PPaths.push_back(Twine(GCCInstallation.getParentLibPath() + "/../" + ++ GCCInstallation.getTriple().str() + "/bin") ++ .str()); ++ ++#ifdef ENABLE_LINKER_BUILD_ID ++ ExtraOpts.push_back("--build-id"); ++#endif ++ ++ // The selection of paths to try here is designed to match the patterns which ++ // the GCC driver itself uses, as this is part of the GCC-compatible driver. ++ // This was determined by running GCC in a fake filesystem, creating all ++ // possible permutations of these directories, and seeing which ones it added ++ // to the link paths. ++ path_list &Paths = getFilePaths(); ++ ++ const std::string OSLibDir = getOSLibDir(Triple, Args); ++ const std::string MultiarchTriple = getMultiarchTriple(D, Triple, SysRoot); ++ ++ // Add the multilib suffixed paths where they are available. ++ if (GCCInstallation.isValid()) { ++ const llvm::Triple &GCCTriple = GCCInstallation.getTriple(); ++ const std::string &LibPath = GCCInstallation.getParentLibPath(); ++ const Multilib &Multilib = GCCInstallation.getMultilib(); ++ const MultilibSet &Multilibs = GCCInstallation.getMultilibs(); ++ ++ // Add toolchain / multilib specific file paths. ++ addMultilibsFilePaths(D, Multilibs, Multilib, ++ GCCInstallation.getInstallPath(), Paths); ++ ++ // Sourcery CodeBench MIPS toolchain holds some libraries under ++ // a biarch-like suffix of the GCC installation. ++ addPathIfExists(D, GCCInstallation.getInstallPath() + Multilib.gccSuffix(), ++ Paths); ++ ++ // GCC cross compiling toolchains will install target libraries which ship ++ // as part of the toolchain under // rather than as ++ // any part of the GCC installation in ++ // //gcc//. This decision is somewhat ++ // debatable, but is the reality today. We need to search this tree even ++ // when we have a sysroot somewhere else. It is the responsibility of ++ // whomever is doing the cross build targeting a sysroot using a GCC ++ // installation that is *not* within the system root to ensure two things: ++ // ++ // 1) Any DSOs that are linked in from this tree or from the install path ++ // above must be present on the system root and found via an ++ // appropriate rpath. ++ // 2) There must not be libraries installed into ++ // // unless they should be preferred over ++ // those within the system root. ++ // ++ // Note that this matches the GCC behavior. See the below comment for where ++ // Clang diverges from GCC's behavior. ++ addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib/../" + ++ OSLibDir + Multilib.osSuffix(), ++ Paths); ++ ++ // If the GCC installation we found is inside of the sysroot, we want to ++ // prefer libraries installed in the parent prefix of the GCC installation. ++ // It is important to *not* use these paths when the GCC installation is ++ // outside of the system root as that can pick up unintended libraries. ++ // This usually happens when there is an external cross compiler on the ++ // host system, and a more minimal sysroot available that is the target of ++ // the cross. Note that GCC does include some of these directories in some ++ // configurations but this seems somewhere between questionable and simply ++ // a bug. ++ if (StringRef(LibPath).startswith(SysRoot)) { ++ addPathIfExists(D, LibPath + "/" + MultiarchTriple, Paths); ++ addPathIfExists(D, LibPath + "/../" + OSLibDir, Paths); ++ } ++ } ++ ++ // Similar to the logic for GCC above, if we currently running Clang inside ++ // of the requested system root, add its parent library paths to ++ // those searched. ++ // FIXME: It's not clear whether we should use the driver's installed ++ // directory ('Dir' below) or the ResourceDir. ++ if (StringRef(D.Dir).startswith(SysRoot)) { ++ addPathIfExists(D, D.Dir + "/../lib/" + MultiarchTriple, Paths); ++ addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths); ++ } ++ ++ addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths); ++ addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths); ++ ++ addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths); ++ addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths); ++ ++ // Try walking via the GCC triple path in case of biarch or multiarch GCC ++ // installations with strange symlinks. ++ if (GCCInstallation.isValid()) { ++ addPathIfExists(D, ++ SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() + ++ "/../../" + OSLibDir, ++ Paths); ++ ++ // Add the 'other' biarch variant path ++ Multilib BiarchSibling; ++ if (GCCInstallation.getBiarchSibling(BiarchSibling)) { ++ addPathIfExists(D, GCCInstallation.getInstallPath() + ++ BiarchSibling.gccSuffix(), ++ Paths); ++ } ++ ++ // See comments above on the multilib variant for details of why this is ++ // included even from outside the sysroot. ++ const std::string &LibPath = GCCInstallation.getParentLibPath(); ++ const llvm::Triple &GCCTriple = GCCInstallation.getTriple(); ++ const Multilib &Multilib = GCCInstallation.getMultilib(); ++ addPathIfExists(D, LibPath + "/../" + GCCTriple.str() + "/lib" + ++ Multilib.osSuffix(), ++ Paths); ++ ++ // See comments above on the multilib variant for details of why this is ++ // only included from within the sysroot. ++ if (StringRef(LibPath).startswith(SysRoot)) ++ addPathIfExists(D, LibPath, Paths); ++ } ++ ++ // Similar to the logic for GCC above, if we are currently running Clang ++ // inside of the requested system root, add its parent library path to those ++ // searched. ++ // FIXME: It's not clear whether we should use the driver's installed ++ // directory ('Dir' below) or the ResourceDir. ++ if (StringRef(D.Dir).startswith(SysRoot)) ++ addPathIfExists(D, D.Dir + "/../lib", Paths); ++ ++ addPathIfExists(D, SysRoot + "/lib", Paths); ++ addPathIfExists(D, SysRoot + "/usr/lib", Paths); ++} ++ ++bool kFreeBSD::HasNativeLLVMSupport() const { return true; } ++ ++Tool *kFreeBSD::buildLinker() const { return new tools::gnutools::Linker(*this); } ++ ++Tool *kFreeBSD::buildAssembler() const { ++ return new tools::gnutools::Assembler(*this); ++} ++ ++std::string kFreeBSD::computeSysRoot() const { ++ if (!getDriver().SysRoot.empty()) ++ return getDriver().SysRoot; ++ ++ return std::string(); ++} ++ ++std::string kFreeBSD::getDynamicLinker(const ArgList &Args) const { ++ const llvm::Triple::ArchType Arch = getArch(); ++ ++ if (Arch == llvm::Triple::x86_64) ++ return "/lib/ld-kfreebsd-x86-64.so.1"; ++ ++ if (Arch == llvm::Triple::x86) ++ return "/lib/ld.so.1"; ++ ++ llvm_unreachable("unsupported architecture"); ++} ++ ++void kFreeBSD::AddClangSystemIncludeArgs(const ArgList &DriverArgs, ++ ArgStringList &CC1Args) const { ++ const Driver &D = getDriver(); ++ std::string SysRoot = computeSysRoot(); ++ ++ if (DriverArgs.hasArg(clang::driver::options::OPT_nostdinc)) ++ return; ++ ++ if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) ++ addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include"); ++ ++ if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { ++ SmallString<128> P(D.ResourceDir); ++ llvm::sys::path::append(P, "include"); ++ addSystemInclude(DriverArgs, CC1Args, P); ++ } ++ ++ if (DriverArgs.hasArg(options::OPT_nostdlibinc)) ++ return; ++ ++ // Check for configure-time C include directories. ++ StringRef CIncludeDirs(C_INCLUDE_DIRS); ++ if (CIncludeDirs != "") { ++ SmallVector dirs; ++ CIncludeDirs.split(dirs, ":"); ++ for (StringRef dir : dirs) { ++ StringRef Prefix = ++ llvm::sys::path::is_absolute(dir) ? StringRef(SysRoot) : ""; ++ addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir); ++ } ++ // addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include"); ++ return; ++ } ++ ++ // Lacking those, try to detect the correct set of system includes for the ++ // target triple. ++ ++ // Add include directories specific to the selected multilib set and multilib. ++ if (GCCInstallation.isValid()) { ++ const auto &Callback = Multilibs.includeDirsCallback(); ++ if (Callback) { ++ for (const auto &Path : Callback(GCCInstallation.getMultilib())) ++ addExternCSystemIncludeIfExists( ++ DriverArgs, CC1Args, GCCInstallation.getInstallPath() + Path); ++ } ++ } ++ ++ // Implement generic Debian multiarch support. ++ const StringRef X86_64MultiarchIncludeDirs[] = { ++ "/usr/include/x86_64-kfreebsd-gnu"}; ++ ++ // CHECK ++ const StringRef X86MultiarchIncludeDirs[] = { ++ "/usr/include/i386-kfreebsd-gnu"}; ++ ++ ArrayRef MultiarchIncludeDirs; ++ switch (getTriple().getArch()) { ++ case llvm::Triple::x86: ++ MultiarchIncludeDirs = X86MultiarchIncludeDirs; ++ break; ++ case llvm::Triple::x86_64: ++ MultiarchIncludeDirs = X86_64MultiarchIncludeDirs; ++ break; ++ default: ++ break; ++ } ++ ++ for (StringRef Dir : MultiarchIncludeDirs) { ++ if (D.getVFS().exists(SysRoot + Dir)) { ++ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + Dir); ++ break; ++ } ++ } ++ ++ // Add an include of '/include' directly. This isn't provided by default by ++ // system GCCs, but is often used with cross-compiling GCCs, and harmless to ++ // add even when Clang is acting as-if it were a system compiler. ++ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/include"); ++ ++ addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include"); ++} ++ ++static std::string DetectLibcxxIncludePath(StringRef base) { ++ std::error_code EC; ++ int MaxVersion = 0; ++ std::string MaxVersionString = ""; ++ for (llvm::sys::fs::directory_iterator LI(base, EC), LE; !EC && LI != LE; ++ LI = LI.increment(EC)) { ++ StringRef VersionText = llvm::sys::path::filename(LI->path()); ++ int Version; ++ if (VersionText[0] == 'v' && ++ !VersionText.slice(1, StringRef::npos).getAsInteger(10, Version)) { ++ if (Version > MaxVersion) { ++ MaxVersion = Version; ++ MaxVersionString = VersionText; ++ } ++ } ++ } ++ return MaxVersion ? (base + "/" + MaxVersionString).str() : ""; ++} ++ ++void kFreeBSD::addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, ++ llvm::opt::ArgStringList &CC1Args) const { ++ const std::string& SysRoot = computeSysRoot(); ++ const std::string LibCXXIncludePathCandidates[] = { ++ DetectLibcxxIncludePath(getDriver().ResourceDir + "/include/c++"), ++ DetectLibcxxIncludePath(getDriver().Dir + "/../include/c++"), ++ // If this is a development, non-installed, clang, libcxx will ++ // not be found at ../include/c++ but it likely to be found at ++ // one of the following two locations: ++ DetectLibcxxIncludePath(SysRoot + "/usr/local/include/c++"), ++ DetectLibcxxIncludePath(SysRoot + "/usr/include/c++") }; ++ for (const auto &IncludePath : LibCXXIncludePathCandidates) { ++ if (IncludePath.empty() || !getVFS().exists(IncludePath)) ++ continue; ++ // Use the first candidate that exists. ++ addSystemInclude(DriverArgs, CC1Args, IncludePath); ++ return; ++ } ++} ++ ++void kFreeBSD::addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, ++ llvm::opt::ArgStringList &CC1Args) const { ++ // We need a detected GCC installation on kFreeBSD to provide libstdc++'s ++ // headers. ++ if (!GCCInstallation.isValid()) ++ return; ++ ++ // By default, look for the C++ headers in an include directory adjacent to ++ // the lib directory of the GCC installation. Note that this is expect to be ++ // equivalent to '/usr/include/c++/X.Y' in almost all cases. ++ StringRef LibDir = GCCInstallation.getParentLibPath(); ++ StringRef InstallDir = GCCInstallation.getInstallPath(); ++ StringRef TripleStr = GCCInstallation.getTriple().str(); ++ const Multilib &Multilib = GCCInstallation.getMultilib(); ++ const std::string GCCMultiarchTriple = getMultiarchTriple( ++ getDriver(), GCCInstallation.getTriple(), getDriver().SysRoot); ++ const std::string TargetMultiarchTriple = ++ getMultiarchTriple(getDriver(), getTriple(), getDriver().SysRoot); ++ const GCCVersion &Version = GCCInstallation.getVersion(); ++ ++ // The primary search for libstdc++ supports multiarch variants. ++ if (addLibStdCXXIncludePaths(LibDir.str() + "/../include", ++ "/c++/" + Version.Text, TripleStr, ++ GCCMultiarchTriple, TargetMultiarchTriple, ++ Multilib.includeSuffix(), DriverArgs, CC1Args)) ++ return; ++ ++ // Otherwise, fall back on a bunch of options which don't use multiarch ++ // layouts for simplicity. ++ const std::string LibStdCXXIncludePathCandidates[] = { ++ // Gentoo is weird and places its headers inside the GCC install, ++ // so if the first attempt to find the headers fails, try these patterns. ++ InstallDir.str() + "/include/g++-v" + Version.Text, ++ InstallDir.str() + "/include/g++-v" + Version.MajorStr + "." + ++ Version.MinorStr, ++ InstallDir.str() + "/include/g++-v" + Version.MajorStr, ++ // Android standalone toolchain has C++ headers in yet another place. ++ LibDir.str() + "/../" + TripleStr.str() + "/include/c++/" + Version.Text, ++ // Freescale SDK C++ headers are directly in /usr/include/c++, ++ // without a subdirectory corresponding to the gcc version. ++ LibDir.str() + "/../include/c++", ++ }; ++ ++ for (const auto &IncludePath : LibStdCXXIncludePathCandidates) { ++ if (addLibStdCXXIncludePaths(IncludePath, /*Suffix*/ "", TripleStr, ++ /*GCCMultiarchTriple*/ "", ++ /*TargetMultiarchTriple*/ "", ++ Multilib.includeSuffix(), DriverArgs, CC1Args)) ++ break; ++ } ++} ++ ++/* FIXME: ++/home/srs/DEBs/llvm-toolchain-7/llvm-toolchain-7-7.0.1~+rc2-7/tools/clang/lib/Driver/ToolChains/KFreeBSD.cpp:431:15: error: no declaration matches ‘clang::SanitizerMask clang::driver::toolchains::kFreeBSD::getSupportedSanitizers() const’ ++ SanitizerMask kFreeBSD::getSupportedSanitizers() const { ++*/ ++SanitizerMask kFreeBSD::getSupportedSanitizers() const { ++ const bool IsX86 = getTriple().getArch() == llvm::Triple::x86; ++ const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64; ++ SanitizerMask Res = ToolChain::getSupportedSanitizers(); ++ // FIXME: Add here!! ++ if (IsX86_64) { ++ Res |= SanitizerKind::DataFlow; ++ Res |= SanitizerKind::Leak; ++ Res |= SanitizerKind::Thread; ++ Res |= SanitizerKind::Efficiency; ++ Res |= SanitizerKind::Scudo; ++ Res |= SanitizerKind::HWAddress; ++ Res |= SanitizerKind::KernelHWAddress; ++ } ++ if (IsX86 || IsX86_64) ++ Res |= SanitizerKind::Function; ++ ++ return Res; ++} ++ +Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.h +=================================================================== +--- /dev/null ++++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.h +@@ -0,0 +1,54 @@ ++//===--- KFreeBSD.h - kFreeBSD ToolChain Implementations ----------*- C++ -*-===// ++// ++// The LLVM Compiler Infrastructure ++// ++// This file is distributed under the University of Illinois Open Source ++// License. See LICENSE.TXT for details. ++// ++//===----------------------------------------------------------------------===// ++ ++#ifndef LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_KFreeBSD_H ++#define LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_KFreeBSD_H ++ ++#include "Gnu.h" ++#include "clang/Driver/ToolChain.h" ++ ++namespace clang { ++namespace driver { ++namespace toolchains { ++ ++class LLVM_LIBRARY_VISIBILITY kFreeBSD : public Generic_ELF { ++public: ++ kFreeBSD(const Driver &D, const llvm::Triple &Triple, ++ const llvm::opt::ArgList &Args); ++ ++ bool HasNativeLLVMSupport() const override; ++ ++ void ++ AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, ++ llvm::opt::ArgStringList &CC1Args) const override; ++ void addLibCxxIncludePaths( ++ const llvm::opt::ArgList &DriverArgs, ++ llvm::opt::ArgStringList &CC1Args) const override; ++ void addLibStdCxxIncludePaths( ++ const llvm::opt::ArgList &DriverArgs, ++ llvm::opt::ArgStringList &CC1Args) const override; ++ ++ SanitizerMask getSupportedSanitizers() const override; ++ ++ virtual std::string computeSysRoot() const; ++ ++ virtual std::string getDynamicLinker(const llvm::opt::ArgList &Args) const; ++ ++ std::vector ExtraOpts; ++ ++protected: ++ Tool *buildAssembler() const override; ++ Tool *buildLinker() const override; ++}; ++ ++} // end namespace toolchains ++} // end namespace driver ++} // end namespace clang ++ ++#endif // LLVM_CLANG_LIB_DRIVER_TOOLCHAINS_KFreeBSD_H diff --git a/debian/patches/kfreebsd/kfreebsd-triple.diff b/debian/patches/kfreebsd/kfreebsd-triple.diff new file mode 100644 index 00000000..227fbde1 --- /dev/null +++ b/debian/patches/kfreebsd/kfreebsd-triple.diff @@ -0,0 +1,23 @@ +Index: llvm-toolchain-7-7.0.1/unittests/ADT/TripleTest.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/unittests/ADT/TripleTest.cpp ++++ llvm-toolchain-7-7.0.1/unittests/ADT/TripleTest.cpp +@@ -99,6 +99,18 @@ TEST(TripleTest, ParsedIDs) { + EXPECT_EQ(Triple::Hurd, T.getOS()); + EXPECT_EQ(Triple::GNU, T.getEnvironment()); + ++ T = Triple("i386-pc-kfreebsd-gnu"); ++ EXPECT_EQ(Triple::x86, T.getArch()); ++ EXPECT_EQ(Triple::PC, T.getVendor()); ++ EXPECT_EQ(Triple::kFreeBSD, T.getOS()); ++ EXPECT_EQ(Triple::GNU, T.getEnvironment()); ++ ++ T = Triple("x86_64-pc-kfreebsd-gnu"); ++ EXPECT_EQ(Triple::x86_64, T.getArch()); ++ EXPECT_EQ(Triple::PC, T.getVendor()); ++ EXPECT_EQ(Triple::kFreeBSD, T.getOS()); ++ EXPECT_EQ(Triple::GNU, T.getEnvironment()); ++ + T = Triple("x86_64-pc-linux-gnu"); + EXPECT_EQ(Triple::x86_64, T.getArch()); + EXPECT_EQ(Triple::PC, T.getVendor()); diff --git a/debian/patches/kfreebsd/lib_Support.diff b/debian/patches/kfreebsd/lib_Support.diff new file mode 100644 index 00000000..16ba7016 --- /dev/null +++ b/debian/patches/kfreebsd/lib_Support.diff @@ -0,0 +1,42 @@ +Index: llvm-toolchain-7-7.0.1/lib/Support/Triple.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lib/Support/Triple.cpp ++++ llvm-toolchain-7-7.0.1/lib/Support/Triple.cpp +@@ -185,7 +185,7 @@ StringRef Triple::getOSTypeName(OSType K + case FreeBSD: return "freebsd"; + case Fuchsia: return "fuchsia"; + case IOS: return "ios"; +- case KFreeBSD: return "kfreebsd"; ++ case kFreeBSD: return "kfreebsd"; + case Linux: return "linux"; + case Lv2: return "lv2"; + case MacOSX: return "macosx"; +@@ -478,7 +478,7 @@ static Triple::OSType parseOS(StringRef + .StartsWith("freebsd", Triple::FreeBSD) + .StartsWith("fuchsia", Triple::Fuchsia) + .StartsWith("ios", Triple::IOS) +- .StartsWith("kfreebsd", Triple::KFreeBSD) ++ .StartsWith("kfreebsd", Triple::kFreeBSD) + .StartsWith("linux", Triple::Linux) + .StartsWith("lv2", Triple::Lv2) + .StartsWith("macos", Triple::MacOSX) +Index: llvm-toolchain-7-7.0.1/lib/Support/Unix/Path.inc +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lib/Support/Unix/Path.inc ++++ llvm-toolchain-7-7.0.1/lib/Support/Unix/Path.inc +@@ -54,13 +54,13 @@ + + #include + #if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && \ +- !defined(__linux__) ++ !defined(__linux__) && !defined(__FreeBSD_kernel__) + #include + #define STATVFS statvfs + #define FSTATVFS fstatvfs + #define STATVFS_F_FRSIZE(vfs) vfs.f_frsize + #else +-#if defined(__OpenBSD__) || defined(__FreeBSD__) ++#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + #include + #include + #elif defined(__linux__) diff --git a/debian/patches/kfreebsd/lib_Target_X86.diff b/debian/patches/kfreebsd/lib_Target_X86.diff new file mode 100644 index 00000000..4cb954e1 --- /dev/null +++ b/debian/patches/kfreebsd/lib_Target_X86.diff @@ -0,0 +1,26 @@ +Index: llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lib/Target/X86/X86Subtarget.cpp ++++ llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.cpp +@@ -270,7 +270,7 @@ void X86Subtarget::initSubtargetFeatures + if (StackAlignOverride) + stackAlignment = StackAlignOverride; + else if (isTargetDarwin() || isTargetLinux() || isTargetSolaris() || +- isTargetKFreeBSD() || In64BitMode) ++ isTargetkFreeBSD() || In64BitMode) + stackAlignment = 16; + + // Some CPUs have more overhead for gather. The specified overhead is relative +Index: llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.h +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lib/Target/X86/X86Subtarget.h ++++ llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.h +@@ -708,7 +708,7 @@ public: + bool isTargetMachO() const { return TargetTriple.isOSBinFormatMachO(); } + + bool isTargetLinux() const { return TargetTriple.isOSLinux(); } +- bool isTargetKFreeBSD() const { return TargetTriple.isOSKFreeBSD(); } ++ bool isTargetkFreeBSD() const { return TargetTriple.isOSkFreeBSD(); } + bool isTargetGlibc() const { return TargetTriple.isOSGlibc(); } + bool isTargetAndroid() const { return TargetTriple.isAndroid(); } + bool isTargetNaCl() const { return TargetTriple.isOSNaCl(); } diff --git a/debian/patches/kfreebsd/liblldb-7.install.kfreebsd b/debian/patches/kfreebsd/liblldb-7.install.kfreebsd new file mode 100644 index 00000000..8ae5cf7b --- /dev/null +++ b/debian/patches/kfreebsd/liblldb-7.install.kfreebsd @@ -0,0 +1,2 @@ +usr/lib/llvm-7/lib/liblldb-7.so.1 /usr/lib/i386-kfreebsd-gnu/ +usr/lib/llvm-7/lib/python2.7/site-packages/readline.so diff --git a/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff b/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff new file mode 100644 index 00000000..013f92e5 --- /dev/null +++ b/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff @@ -0,0 +1,18 @@ +Index: llvm-toolchain-7-7.0.1/lldb/source/Host/freebsd/Host.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lldb/source/Host/freebsd/Host.cpp ++++ llvm-toolchain-7-7.0.1/lldb/source/Host/freebsd/Host.cpp +@@ -12,6 +12,13 @@ + #include + + #include ++#ifdef __FreeBSD_kernel__ ++# ifdef __amd64__ ++# include ++# else ++# include ++# endif ++#endif + #include + #include + #include diff --git a/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff b/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff new file mode 100644 index 00000000..e7d11451 --- /dev/null +++ b/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff @@ -0,0 +1,28 @@ +Index: llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp ++++ llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp +@@ -10,7 +10,9 @@ + // C Includes + #include + #include ++#ifndef __FreeBSD_kernel__ + #include ++#endif + #include + #include + #include +Index: llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp ++++ llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp +@@ -11,7 +11,9 @@ + // C Includes + #include + #include ++#ifndef __FreeBSD_kernel__ + #include ++#endif + #include + #include + #include diff --git a/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff b/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff new file mode 100644 index 00000000..73e4051f --- /dev/null +++ b/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff @@ -0,0 +1,12 @@ +Index: llvm-toolchain-7-7.0.1/tools/llvm-shlib/CMakeLists.txt +=================================================================== +--- llvm-toolchain-7-7.0.1.orig/tools/llvm-shlib/CMakeLists.txt ++++ llvm-toolchain-7-7.0.1/tools/llvm-shlib/CMakeLists.txt +@@ -40,6 +40,7 @@ set_property(TARGET LLVM PROPERTY VERSIO + list(REMOVE_DUPLICATES LIB_NAMES) + if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") ++ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "GNU") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") diff --git a/debian/patches/series b/debian/patches/series index f189a676..76349c2a 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -135,3 +135,19 @@ D54409-powerpcspe-register-spilling.diff D54584-powerpcspe-double-parameter.diff D52340-rustc-debuginfo.diff +# kfreebsd +kfreebsd/clang_lib_Basic_Targets.diff +kfreebsd/CMakeLists.txt.diff +kfreebsd/compiler-rt_lib.diff +kfreebsd/include_llvm_ADT_Triple.h.diff +kfreebsd/kfreebsd-libcxx-threads-detection.diff +kfreebsd/kfreebsd-openmp.diff +kfreebsd/kfreebsd-threads-build.diff +kfreebsd/kfreebsd-triple-clang.diff +kfreebsd/kfreebsd-triple.diff +kfreebsd/liblldb-7.install.kfreebsd +kfreebsd/lib_Support.diff +kfreebsd/lib_Target_X86.diff +kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff +kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff +kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff From 0eec553f40d1a4b8eb70fb13dbd9481a92824a23 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 3 Feb 2019 17:39:00 +0100 Subject: [PATCH 09/13] fix the install lldb for kfreebsd --- debian/{patches/kfreebsd => }/liblldb-7.install.kfreebsd | 0 debian/patches/series | 1 - 2 files changed, 1 deletion(-) rename debian/{patches/kfreebsd => }/liblldb-7.install.kfreebsd (100%) diff --git a/debian/patches/kfreebsd/liblldb-7.install.kfreebsd b/debian/liblldb-7.install.kfreebsd similarity index 100% rename from debian/patches/kfreebsd/liblldb-7.install.kfreebsd rename to debian/liblldb-7.install.kfreebsd diff --git a/debian/patches/series b/debian/patches/series index 76349c2a..91c7dc8d 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -145,7 +145,6 @@ kfreebsd/kfreebsd-openmp.diff kfreebsd/kfreebsd-threads-build.diff kfreebsd/kfreebsd-triple-clang.diff kfreebsd/kfreebsd-triple.diff -kfreebsd/liblldb-7.install.kfreebsd kfreebsd/lib_Support.diff kfreebsd/lib_Target_X86.diff kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff From 19c58edc6de054de1b5a2b3c31a03b48a6545b6b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sun, 3 Feb 2019 17:45:43 +0100 Subject: [PATCH 10/13] rebase of the patch --- debian/patches/fix-llvm-config.diff | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/patches/fix-llvm-config.diff b/debian/patches/fix-llvm-config.diff index b2241550..4f0fa182 100644 --- a/debian/patches/fix-llvm-config.diff +++ b/debian/patches/fix-llvm-config.diff @@ -1,7 +1,7 @@ -Index: llvm-toolchain-7_7.0.1~svn352582/tools/llvm-config/CMakeLists.txt +Index: llvm-toolchain-7-7.0.1/tools/llvm-config/CMakeLists.txt =================================================================== ---- llvm-toolchain-7_7.0.1~svn352582.orig/tools/llvm-config/CMakeLists.txt -+++ llvm-toolchain-7_7.0.1~svn352582/tools/llvm-config/CMakeLists.txt +--- llvm-toolchain-7-7.0.1.orig/tools/llvm-config/CMakeLists.txt ++++ llvm-toolchain-7-7.0.1/tools/llvm-config/CMakeLists.txt @@ -32,9 +32,9 @@ get_property(COMPILE_FLAGS TARGET llvm-c # Use configure_file to create BuildVariables.inc. set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR}) @@ -14,4 +14,4 @@ Index: llvm-toolchain-7_7.0.1~svn352582/tools/llvm-config/CMakeLists.txt +set(LLVM_CXXFLAGS "${COMPILE_FLAGS} ${LLVM_DEFINITIONS}") set(LLVM_BUILD_SYSTEM cmake) set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI}) - set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}${LLVM_VERSION_SUFFIX}") + set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}") From 6de1dbd14a4187b59ae79a6f79182614f9ffbb24 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 4 Feb 2019 09:00:18 +0100 Subject: [PATCH 11/13] rebase of the patch for v8 --- debian/patches/kfreebsd/compiler-rt_lib.diff | 237 +++++++++--------- debian/patches/kfreebsd/kfreebsd-openmp.diff | 99 ++++---- .../kfreebsd/kfreebsd-triple-clang.diff | 75 +++--- debian/patches/kfreebsd/lib_Support.diff | 25 +- debian/patches/kfreebsd/lib_Target_X86.diff | 16 +- .../lldb_source_Host_freebsd_Host.cpp.diff | 8 +- .../lldb_source_Plugins_Process_FreeBSD.diff | 36 +-- .../tools_llvm-shlib_CMakeLists.txt.diff | 22 +- 8 files changed, 256 insertions(+), 262 deletions(-) diff --git a/debian/patches/kfreebsd/compiler-rt_lib.diff b/debian/patches/kfreebsd/compiler-rt_lib.diff index 2f08eef2..de233c9c 100644 --- a/debian/patches/kfreebsd/compiler-rt_lib.diff +++ b/debian/patches/kfreebsd/compiler-rt_lib.diff @@ -1,8 +1,8 @@ -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc -@@ -86,9 +86,14 @@ +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc +@@ -84,9 +84,14 @@ extern "C" { // must be included after and on // FreeBSD 9.2 and 10.0. @@ -17,9 +17,9 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.c #endif // SANITIZER_FREEBSD #if SANITIZER_NETBSD -@@ -466,10 +471,12 @@ bool FileExists(const char *filename) { - } +@@ -468,10 +473,12 @@ bool FileExists(const char *filename) { + #if !SANITIZER_NETBSD tid_t GetTid() { -#if SANITIZER_FREEBSD +#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD @@ -30,8 +30,8 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.c + return (uptr)pthread_self(); #elif SANITIZER_OPENBSD return internal_syscall(SYSCALL(getthrid)); - #elif SANITIZER_NETBSD -@@ -1143,10 +1150,10 @@ bool LibraryNameIs(const char *full_name + #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); @@ -44,11 +44,11 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux.c char *base = (char *)map->l_addr; Elf_Ehdr *ehdr = (Elf_Ehdr *)base; char *phdrs = base + ehdr->e_phoff; -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc -@@ -35,10 +35,12 @@ +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cc +@@ -36,10 +36,12 @@ #include #if SANITIZER_FREEBSD @@ -63,7 +63,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux_l #endif #if SANITIZER_OPENBSD -@@ -523,9 +525,9 @@ void GetThreadStackAndTls(bool main, upt +@@ -528,9 +530,9 @@ void GetThreadStackAndTls(bool main, upt #endif } @@ -75,10 +75,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_linux_l #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-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_platform.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform.h -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform.h +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform.h ++++ llvm-toolchain-8-8~+rc1/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) && \ @@ -118,11 +118,11 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor #if __LP64__ || defined(_WIN64) # define SANITIZER_WORDSIZE 64 -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc -@@ -49,7 +49,7 @@ +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -50,7 +50,7 @@ #include #endif @@ -131,40 +131,42 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor #include #endif -@@ -86,7 +86,11 @@ - # include - # include - # include +@@ -109,7 +109,11 @@ typedef struct user_fpregs elf_fpregset_ + #if SANITIZER_LINUX && !SANITIZER_ANDROID + #include + #include +-#include +#if SANITIZER_KFREEBSD +# include +#else - # include ++# include +#endif - # include - # include - # include -@@ -95,7 +99,11 @@ - # include - # include - # include + #include + #include + #include +@@ -146,6 +150,12 @@ typedef struct user_fpregs elf_fpregset_ + #include + #endif + +#if SANITIZER_KFREEBSD +# include +#else - # include ++# include +#endif - # include - # include - # include -@@ -286,7 +294,7 @@ namespace __sanitizer { ++ + #if SANITIZER_LINUX + #include + #include +@@ -256,7 +266,7 @@ namespace __sanitizer { #endif --#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID -+#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD +-#if SANITIZER_LINUX && !SANITIZER_ANDROID ++#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD unsigned struct_shminfo_sz = sizeof(struct shminfo); unsigned struct_shm_info_sz = sizeof(struct shm_info); int shmctl_ipc_stat = (int)IPC_STAT; -@@ -316,7 +324,7 @@ namespace __sanitizer { +@@ -286,7 +296,7 @@ namespace __sanitizer { return 0; } @@ -173,7 +175,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor unsigned struct_ElfW_Phdr_sz = sizeof(ElfW(Phdr)); #elif SANITIZER_FREEBSD unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); -@@ -496,7 +504,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El +@@ -466,7 +476,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El unsigned struct_ppp_stats_sz = sizeof(struct ppp_stats); #endif // (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID @@ -182,16 +184,16 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor unsigned struct_sioc_sg_req_sz = sizeof(struct sioc_sg_req); unsigned struct_sioc_vif_req_sz = sizeof(struct sioc_vif_req); #endif -@@ -547,7 +555,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El +@@ -519,7 +529,7 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El unsigned IOCTL_TIOCSPGRP = TIOCSPGRP; unsigned IOCTL_TIOCSTI = TIOCSTI; unsigned IOCTL_TIOCSWINSZ = TIOCSWINSZ; --#if ((SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID) -+#if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD +-#if SANITIZER_LINUX && !SANITIZER_ANDROID ++#if SANITIZER_LINUX && !SANITIZER_ANDROID && !SANITIZER_KFREEBSD unsigned IOCTL_SIOCGETSGCNT = SIOCGETSGCNT; unsigned IOCTL_SIOCGETVIFCNT = SIOCGETVIFCNT; #endif -@@ -989,7 +997,7 @@ CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi +@@ -958,7 +968,7 @@ CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi CHECK_SIZE_AND_OFFSET(dl_phdr_info, dlpi_phnum); #endif // SANITIZER_LINUX || SANITIZER_FREEBSD @@ -200,7 +202,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_TYPE_SIZE(glob_t); CHECK_SIZE_AND_OFFSET(glob_t, gl_pathc); CHECK_SIZE_AND_OFFSET(glob_t, gl_pathv); -@@ -1009,8 +1017,10 @@ CHECK_SIZE_AND_OFFSET(addrinfo, ai_sockt +@@ -978,8 +988,10 @@ CHECK_SIZE_AND_OFFSET(addrinfo, ai_sockt CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol); CHECK_SIZE_AND_OFFSET(addrinfo, ai_protocol); CHECK_SIZE_AND_OFFSET(addrinfo, ai_addrlen); @@ -211,7 +213,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_TYPE_SIZE(hostent); CHECK_SIZE_AND_OFFSET(hostent, h_name); -@@ -1032,7 +1042,9 @@ CHECK_SIZE_AND_OFFSET(msghdr, msg_contro +@@ -1001,7 +1013,9 @@ CHECK_SIZE_AND_OFFSET(msghdr, msg_contro CHECK_SIZE_AND_OFFSET(msghdr, msg_controllen); CHECK_SIZE_AND_OFFSET(msghdr, msg_flags); @@ -221,7 +223,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len); CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level); CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type); -@@ -1074,7 +1086,9 @@ CHECK_SIZE_AND_OFFSET(pollfd, fd); +@@ -1043,7 +1057,9 @@ CHECK_SIZE_AND_OFFSET(pollfd, fd); CHECK_SIZE_AND_OFFSET(pollfd, events); CHECK_SIZE_AND_OFFSET(pollfd, revents); @@ -231,7 +233,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_TYPE_SIZE(sigset_t); -@@ -1114,7 +1128,9 @@ CHECK_TYPE_SIZE(__kernel_fd_set); +@@ -1083,7 +1099,9 @@ CHECK_TYPE_SIZE(__kernel_fd_set); #endif #if !SANITIZER_ANDROID @@ -241,7 +243,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordc); CHECK_SIZE_AND_OFFSET(wordexp_t, we_wordv); CHECK_SIZE_AND_OFFSET(wordexp_t, we_offs); -@@ -1147,13 +1163,14 @@ CHECK_TYPE_SIZE(ether_addr); +@@ -1116,13 +1134,14 @@ CHECK_TYPE_SIZE(ether_addr); #if (SANITIZER_LINUX || SANITIZER_FREEBSD) && !SANITIZER_ANDROID CHECK_TYPE_SIZE(ipc_perm); @@ -259,7 +261,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_SIZE_AND_OFFSET(ipc_perm, uid); CHECK_SIZE_AND_OFFSET(ipc_perm, gid); CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); -@@ -1192,7 +1209,7 @@ CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_netma +@@ -1161,7 +1180,7 @@ CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_netma #ifdef ifa_dstaddr #undef ifa_dstaddr #endif @@ -268,7 +270,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_SIZE_AND_OFFSET(ifaddrs, ifa_dstaddr); # else COMPILER_CHECK(sizeof(((__sanitizer_ifaddrs *)nullptr)->ifa_dstaddr) == -@@ -1218,15 +1235,19 @@ CHECK_SIZE_AND_OFFSET(timeb, timezone); +@@ -1187,15 +1206,19 @@ CHECK_SIZE_AND_OFFSET(timeb, timezone); CHECK_SIZE_AND_OFFSET(timeb, dstflag); #endif @@ -289,7 +291,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_SIZE_AND_OFFSET(passwd, pw_gecos); #endif -@@ -1292,7 +1313,7 @@ CHECK_SIZE_AND_OFFSET(cookie_io_function +@@ -1261,7 +1284,7 @@ CHECK_SIZE_AND_OFFSET(cookie_io_function CHECK_SIZE_AND_OFFSET(cookie_io_functions_t, close); #endif @@ -298,36 +300,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platfor CHECK_TYPE_SIZE(sem_t); #endif -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/asan/asan_linux.cc =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h -@@ -20,7 +20,7 @@ - #include "sanitizer_internal_defs.h" - #include "sanitizer_platform.h" - --#if SANITIZER_FREEBSD -+#if SANITIZER_FREEBSD && !SANITIZER_KFREEBSD - // FreeBSD's dlopen() returns a pointer to an Obj_Entry structure that - // incorporates the map structure. - # define GET_LINK_MAP_BY_DLOPEN_HANDLE(handle) \ -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc -=================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc -@@ -43,7 +43,7 @@ - # else - # define internal_syscall_ptr syscall - # endif --#elif defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC) -+#elif defined(__x86_64__) && ((SANITIZER_FREEBSD && !SANITIZER_KFREEBSD) || SANITIZER_MAC) - # define internal_syscall __syscall - # define internal_syscall64 __syscall - # define internal_syscall_ptr __syscall -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/asan/asan_linux.cc -=================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/asan/asan_linux.cc -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/asan/asan_linux.cc +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/asan/asan_linux.cc ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/asan/asan_linux.cc @@ -38,7 +38,7 @@ #include #include @@ -358,10 +334,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/asan/asan_linux.cc #define ucontext_t xucontext_t #endif -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/ubsan/ubsan_platform.h +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/ubsan/ubsan_platform.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/ubsan/ubsan_platform.h -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/ubsan/ubsan_platform.h +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/ubsan/ubsan_platform.h ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/ubsan/ubsan_platform.h @@ -15,7 +15,7 @@ // Other platforms should be easy to add, and probably work as-is. @@ -371,38 +347,38 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/ubsan/ubsan_platform.h (defined(__sun__) && defined(__svr4__)) || \ defined(_WIN32) || defined(__Fuchsia__) || defined(__rtems__) # define CAN_SANITIZE_UB 1 -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S -@@ -196,7 +196,7 @@ ASM_SYMBOL_INTERCEPTOR(setjmp): - #elif defined(__APPLE__) +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S ++++ llvm-toolchain-8-8~+rc1/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) -@@ -244,7 +244,7 @@ ASM_SYMBOL_INTERCEPTOR(_setjmp): - #elif defined(__APPLE__) +@@ -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) -@@ -299,7 +299,7 @@ ASM_SYMBOL_INTERCEPTOR(sigsetjmp): - #elif defined(__APPLE__) +@@ -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) -@@ -386,7 +386,7 @@ ASM_SYMBOL_INTERCEPTOR(__sigsetjmp): +@@ -389,7 +389,7 @@ ASM_SYMBOL_INTERCEPTOR(__sigsetjmp): ASM_SIZE(ASM_SYMBOL_INTERCEPTOR(__sigsetjmp)) #endif // !defined(__APPLE__) && !defined(__NetBSD__) @@ -411,10 +387,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/tsan/rtl/tsan_rtl_amd64.S /* We do not need executable stack. */ /* This note is not needed on NetBSD. */ .section .note.GNU-stack,"",@progbits -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerDefs.h +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerDefs.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerDefs.h -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerDefs.h +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/fuzzer/FuzzerDefs.h ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerDefs.h @@ -54,6 +54,15 @@ #define LIBFUZZER_FREEBSD 1 #define LIBFUZZER_OPENBSD 0 @@ -431,7 +407,7 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerDefs.h #elif __OpenBSD__ #define LIBFUZZER_APPLE 0 #define LIBFUZZER_FUCHSIA 0 -@@ -88,7 +97,7 @@ +@@ -95,7 +104,7 @@ #define LIBFUZZER_POSIX \ (LIBFUZZER_APPLE || LIBFUZZER_LINUX || LIBFUZZER_NETBSD || \ @@ -440,10 +416,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerDefs.h #ifdef __x86_64 # if __has_attribute(target) -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp @@ -119,7 +119,7 @@ size_t GetPeakRSSMb() { if (getrusage(RUSAGE_SELF, &usage)) return 0; @@ -453,10 +429,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilPosix.cpp // ru_maxrss is in KiB return usage.ru_maxrss >> 10; } else if (LIBFUZZER_APPLE) { -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp @@ -12,7 +12,7 @@ #include "FuzzerDefs.h" @@ -466,10 +442,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtraCounters.cpp __attribute__((weak)) extern uint8_t __start___libfuzzer_extra_counters; __attribute__((weak)) extern uint8_t __stop___libfuzzer_extra_counters; -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp @@ -14,7 +14,7 @@ //===----------------------------------------------------------------------===// #include "FuzzerDefs.h" @@ -479,10 +455,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerExtFunctionsWeak.cpp #include "FuzzerExtFunctions.h" #include "FuzzerIO.h" -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp @@ -10,7 +10,7 @@ //===----------------------------------------------------------------------===// #include "FuzzerDefs.h" @@ -492,10 +468,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/fuzzer/FuzzerUtilLinux.cpp #include "FuzzerCommand.h" #include -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h ++++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd.h @@ -21,7 +21,7 @@ // 32-bit mode. #if SANITIZER_FREEBSD && (SANITIZER_WORDSIZE == 32) @@ -505,10 +481,10 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_freebsd # include # include # include -Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc =================================================================== ---- llvm-toolchain-7-7.0.1.orig/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc -+++ llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_bsd.cc ++++ llvm-toolchain-8-8~+rc1/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) @@ -518,3 +494,30 @@ Index: llvm-toolchain-7-7.0.1/compiler-rt/lib/sanitizer_common/sanitizer_procmap #define kinfo_vmentry xkinfo_vmentry #endif #endif +Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +=================================================================== +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ llvm-toolchain-8-8~+rc1/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~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc +=================================================================== +--- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/sanitizer_common/sanitizer_syscall_generic.inc ++++ llvm-toolchain-8-8~+rc1/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 diff --git a/debian/patches/kfreebsd/kfreebsd-openmp.diff b/debian/patches/kfreebsd/kfreebsd-openmp.diff index 2ca72e1d..fc6dbf1f 100644 --- a/debian/patches/kfreebsd/kfreebsd-openmp.diff +++ b/debian/patches/kfreebsd/kfreebsd-openmp.diff @@ -1,9 +1,9 @@ -Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp.h +Index: llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp.h -+++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp.h -@@ -1052,6 +1052,10 @@ extern kmp_uint64 __kmp_now_nsec(); - /* TODO: tune for KMP_OS_HURD */ +--- llvm-toolchain-8-8~+rc1.orig/openmp/runtime/src/kmp.h ++++ llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp.h +@@ -1077,6 +1077,10 @@ extern kmp_uint64 __kmp_now_nsec(); + /* TODO: tune for KMP_OS_OPENBSD */ #define KMP_INIT_WAIT 1024U /* initial number of spin-tests */ #define KMP_NEXT_WAIT 512U /* susequent number of spin-tests */ +#elif KMP_OS_KFREEBSD @@ -13,32 +13,32 @@ Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp.h #endif #if KMP_ARCH_X86 || KMP_ARCH_X86_64 -Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_ftn_entry.h +Index: llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp_ftn_entry.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp_ftn_entry.h -+++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_ftn_entry.h -@@ -369,7 +369,7 @@ int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_ - #else +--- llvm-toolchain-8-8~+rc1.orig/openmp/runtime/src/kmp_ftn_entry.h ++++ llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp_ftn_entry.h +@@ -535,7 +535,7 @@ int FTN_STDCALL KMP_EXPAND_NAME(FTN_GET_ int gtid; --#if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD -+#if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + #if KMP_OS_DARWIN || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ +- KMP_OS_HURD ++ KMP_OS_HURD || KMP_OS_KFREEBSD gtid = __kmp_entry_gtid(); #elif KMP_OS_WINDOWS if (!__kmp_init_parallel || -Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_platform.h +Index: llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp_platform.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp_platform.h -+++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_platform.h -@@ -18,6 +18,7 @@ - +--- llvm-toolchain-8-8~+rc1.orig/openmp/runtime/src/kmp_platform.h ++++ llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp_platform.h +@@ -19,6 +19,7 @@ #define KMP_OS_LINUX 0 + #define KMP_OS_DRAGONFLY 0 #define KMP_OS_FREEBSD 0 +#define KMP_OS_KFREEBSD 0 #define KMP_OS_NETBSD 0 + #define KMP_OS_OPENBSD 0 #define KMP_OS_DARWIN 0 - #define KMP_OS_WINDOWS 0 -@@ -50,6 +51,11 @@ +@@ -57,6 +58,11 @@ #define KMP_OS_FREEBSD 1 #endif @@ -50,34 +50,35 @@ Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_platform.h #if (defined __NetBSD__) #undef KMP_OS_NETBSD #define KMP_OS_NETBSD 1 -@@ -67,11 +73,11 @@ +@@ -79,12 +85,12 @@ #if (1 != \ - KMP_OS_LINUX + KMP_OS_FREEBSD + KMP_OS_NETBSD + KMP_OS_DARWIN + \ -- KMP_OS_WINDOWS + KMP_OS_HURD) -+ KMP_OS_WINDOWS + KMP_OS_HURD + KMP_OS_KFREEBSD) + KMP_OS_LINUX + KMP_OS_DRAGONFLY + KMP_OS_FREEBSD + KMP_OS_NETBSD + \ +- KMP_OS_OPENBSD + KMP_OS_DARWIN + KMP_OS_WINDOWS + KMP_OS_HURD) ++ KMP_OS_OPENBSD + KMP_OS_DARWIN + KMP_OS_WINDOWS + KMP_OS_HURD + KMP_OS_KFREEBSD) #error Unknown OS #endif --#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_DARWIN || KMP_OS_HURD -+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_KFREEBSD || KMP_OS_NETBSD || KMP_OS_DARWIN || KMP_OS_HURD + #if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ +- KMP_OS_OPENBSD || KMP_OS_DARWIN || KMP_OS_HURD ++ KMP_OS_OPENBSD || KMP_OS_DARWIN || KMP_OS_HURD || KMP_OS_KFREEBSD #undef KMP_OS_UNIX #define KMP_OS_UNIX 1 #endif -Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_runtime.cpp +Index: llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp_runtime.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/kmp_runtime.cpp -+++ llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_runtime.cpp -@@ -7643,7 +7643,7 @@ __kmp_determine_reduction_method( +--- llvm-toolchain-8-8~+rc1.orig/openmp/runtime/src/kmp_runtime.cpp ++++ llvm-toolchain-8-8~+rc1/openmp/runtime/src/kmp_runtime.cpp +@@ -8076,7 +8076,7 @@ __kmp_determine_reduction_method( #if KMP_ARCH_X86_64 || KMP_ARCH_PPC64 || KMP_ARCH_AARCH64 || KMP_ARCH_MIPS64 - #if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_WINDOWS || \ -- KMP_OS_DARWIN || KMP_OS_HURD -+ KMP_OS_DARWIN || KMP_OS_HURD || KMP_OS_KFREEBSD + #if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ +- KMP_OS_OPENBSD || KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD ++ KMP_OS_OPENBSD || KMP_OS_WINDOWS || KMP_OS_DARWIN || KMP_OS_HURD || KMP_OS_KFREEBSD int teamsize_cutoff = 4; -@@ -7670,7 +7670,7 @@ __kmp_determine_reduction_method( +@@ -8104,7 +8104,7 @@ __kmp_determine_reduction_method( #elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS @@ -86,38 +87,38 @@ Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/kmp_runtime.cpp // basic tuning -Index: llvm-toolchain-7-7.0.1/openmp/runtime/src/z_Linux_util.cpp +Index: llvm-toolchain-8-8~+rc1/openmp/runtime/src/z_Linux_util.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/openmp/runtime/src/z_Linux_util.cpp -+++ llvm-toolchain-7-7.0.1/openmp/runtime/src/z_Linux_util.cpp -@@ -444,7 +444,7 @@ void __kmp_terminate_thread(int gtid) { - determined exactly, FALSE if incremental refinement is necessary. */ +--- llvm-toolchain-8-8~+rc1.orig/openmp/runtime/src/z_Linux_util.cpp ++++ llvm-toolchain-8-8~+rc1/openmp/runtime/src/z_Linux_util.cpp +@@ -448,7 +448,7 @@ void __kmp_terminate_thread(int gtid) { static kmp_int32 __kmp_set_stack_info(int gtid, kmp_info_t *th) { int stack_data; --#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD -+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + #if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ +- KMP_OS_HURD ++ KMP_OS_HURD || KMP_OS_KFREEBSD pthread_attr_t attr; int status; size_t size = 0; -@@ -496,7 +496,7 @@ static void *__kmp_launch_worker(void *t - sigset_t new_set, old_set; +@@ -502,7 +502,7 @@ static void *__kmp_launch_worker(void *t #endif /* KMP_BLOCK_SIGNALS */ void *exit_val; --#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD -+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + #if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ +- KMP_OS_OPENBSD || KMP_OS_HURD ++ KMP_OS_OPENBSD || KMP_OS_HURD || KMP_OS_KFREEBSD void *volatile padding = 0; #endif int gtid; -@@ -1764,7 +1764,7 @@ static int __kmp_get_xproc(void) { - +@@ -1772,7 +1772,7 @@ static int __kmp_get_xproc(void) { int r = 0; --#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD -+#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_HURD || KMP_OS_KFREEBSD + #if KMP_OS_LINUX || KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || \ +- KMP_OS_OPENBSD || KMP_OS_HURD ++ KMP_OS_OPENBSD || KMP_OS_HURD || KMP_OS_KFREEBSD r = sysconf(_SC_NPROCESSORS_ONLN); -@@ -1952,7 +1952,7 @@ int __kmp_is_address_mapped(void *addr) +@@ -1967,7 +1967,7 @@ int __kmp_is_address_mapped(void *addr) int found = 0; int rc; diff --git a/debian/patches/kfreebsd/kfreebsd-triple-clang.diff b/debian/patches/kfreebsd/kfreebsd-triple-clang.diff index 1462a1f9..757b2655 100644 --- a/debian/patches/kfreebsd/kfreebsd-triple-clang.diff +++ b/debian/patches/kfreebsd/kfreebsd-triple-clang.diff @@ -1,8 +1,8 @@ -Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/CMakeLists.txt +Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/CMakeLists.txt =================================================================== ---- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/CMakeLists.txt -+++ llvm-toolchain-7-7.0.1/clang/lib/Driver/CMakeLists.txt -@@ -48,6 +48,7 @@ add_clang_library(clangDriver +--- llvm-toolchain-8-8~+rc1.orig/clang/lib/Driver/CMakeLists.txt ++++ llvm-toolchain-8-8~+rc1/clang/lib/Driver/CMakeLists.txt +@@ -49,6 +49,7 @@ add_clang_library(clangDriver ToolChains/HIP.cpp ToolChains/Hexagon.cpp ToolChains/Hurd.cpp @@ -10,10 +10,10 @@ Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/CMakeLists.txt ToolChains/Linux.cpp ToolChains/MipsLinux.cpp ToolChains/MinGW.cpp -Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/Driver.cpp +Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/Driver.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/Driver.cpp -+++ llvm-toolchain-7-7.0.1/clang/lib/Driver/Driver.cpp +--- llvm-toolchain-8-8~+rc1.orig/clang/lib/Driver/Driver.cpp ++++ llvm-toolchain-8-8~+rc1/clang/lib/Driver/Driver.cpp @@ -27,6 +27,7 @@ #include "ToolChains/Haiku.h" #include "ToolChains/Hexagon.h" @@ -21,8 +21,8 @@ Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/Driver.cpp +#include "ToolChains/KFreeBSD.h" #include "ToolChains/Lanai.h" #include "ToolChains/Linux.h" - #include "ToolChains/MSVC.h" -@@ -4320,6 +4321,9 @@ const ToolChain &Driver::getToolChain(co + #include "ToolChains/MSP430.h" +@@ -4546,6 +4547,9 @@ const ToolChain &Driver::getToolChain(co case llvm::Triple::FreeBSD: TC = llvm::make_unique(*this, Target, Args); break; @@ -32,24 +32,24 @@ Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/Driver.cpp case llvm::Triple::Minix: TC = llvm::make_unique(*this, Target, Args); break; -Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Clang.cpp +Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/Clang.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/ToolChains/Clang.cpp -+++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Clang.cpp -@@ -528,7 +528,7 @@ static bool useFramePointerForTargetByDe - return !areOptimizationsEnabled(Args); +--- llvm-toolchain-8-8~+rc1.orig/clang/lib/Driver/ToolChains/Clang.cpp ++++ llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/Clang.cpp +@@ -535,7 +535,7 @@ static bool useFramePointerForTargetByDe } -- if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI || Triple.isOSHurd()) { -+ if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI || Triple.isOSHurd() || Triple.isOSkFreeBSD()) { + if (Triple.isOSLinux() || Triple.getOS() == llvm::Triple::CloudABI || +- Triple.isOSHurd()) { ++ Triple.isOSHurd() || Triple.isOSkFreeBSD()) { switch (Triple.getArch()) { // Don't use a frame pointer on linux if optimizing for certain targets. case llvm::Triple::mips64: -Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Gnu.cpp +Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/Gnu.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/clang/lib/Driver/ToolChains/Gnu.cpp -+++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Gnu.cpp -@@ -499,6 +499,18 @@ void tools::gnutools::Linker::ConstructJ +--- llvm-toolchain-8-8~+rc1.orig/clang/lib/Driver/ToolChains/Gnu.cpp ++++ llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/Gnu.cpp +@@ -522,6 +522,18 @@ void tools::gnutools::Linker::ConstructJ CmdArgs.push_back("--wrap=pthread_create"); CmdArgs.push_back("-lc"); @@ -68,32 +68,29 @@ Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/Gnu.cpp // Add IAMCU specific libs, if needed. if (IsIAMCU) -@@ -1836,7 +1848,8 @@ void Generic_GCC::GCCInstallationDetecto +@@ -1898,7 +1910,8 @@ void Generic_GCC::GCCInstallationDetecto "x86_64-redhat-linux", "x86_64-suse-linux", "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", "x86_64-slackware-linux", "x86_64-unknown-linux", -- "x86_64-amazon-linux"}; -+ "x86_64-amazon-linux", "x86_64-kfreebsd-gnu", -+ "x86_64-pc-kfreebsd-gnu"}; - static const char *const X32LibDirs[] = {"/libx32", "/lib"}; - static const char *const X32Triples[] = { - "x86_64-linux-gnux32", "x86_64-unknown-linux-gnux32", -@@ -1847,8 +1860,9 @@ void Generic_GCC::GCCInstallationDetecto - "i386-linux-gnu", "i386-redhat-linux6E", "i686-redhat-linux", +- "x86_64-amazon-linux", "x86_64-linux-android"}; ++ "x86_64-amazon-linux", "x86_64-linux-android", ++ "x86_64-kfreebsd-gnu", "x86_64-pc-kfreebsd-gnu"}; + static const char *const X32LibDirs[] = {"/libx32"}; + static const char *const X86LibDirs[] = {"/lib32", "/lib"}; + static const char *const X86Triples[] = { +@@ -1907,6 +1920,8 @@ void Generic_GCC::GCCInstallationDetecto "i586-redhat-linux", "i386-redhat-linux", "i586-suse-linux", "i486-slackware-linux", "i686-montavista-linux", "i586-linux-gnu", -- "i386-gnu", "i486-gnu", "i586-gnu", -- "i686-gnu"}; -+ "i686-kfreebsd-gnu", "i686-pc-kfreebsd-gnu", "i486-kfreebsd-gnu", -+ "i386-kfreebsd-gnu", "i386-gnu", "i486-gnu", -+ "i586-gnu", "i686-gnu"}; + "i686-linux-android", "i386-gnu", "i486-gnu", ++ "i686-kfreebsd-gnu", "i686-pc-kfreebsd-gnu", "i486-kfreebsd-gnu", ++ "i386-kfreebsd-gnu", + "i586-gnu", "i686-gnu"}; static const char *const MIPSLibDirs[] = {"/lib"}; - static const char *const MIPSTriples[] = {"mips-linux-gnu", "mips-mti-linux", -Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.cpp +Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/KFreeBSD.cpp =================================================================== --- /dev/null -+++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.cpp ++++ llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/KFreeBSD.cpp @@ -0,0 +1,459 @@ +//===--- KFreeBSD.cpp - kFreeBSD ToolChain Implementations --------*- C++ -*-===// +// @@ -554,10 +551,10 @@ Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.cpp + return Res; +} + -Index: llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.h +Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/KFreeBSD.h =================================================================== --- /dev/null -+++ llvm-toolchain-7-7.0.1/clang/lib/Driver/ToolChains/KFreeBSD.h ++++ llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/KFreeBSD.h @@ -0,0 +1,54 @@ +//===--- KFreeBSD.h - kFreeBSD ToolChain Implementations ----------*- C++ -*-===// +// diff --git a/debian/patches/kfreebsd/lib_Support.diff b/debian/patches/kfreebsd/lib_Support.diff index 16ba7016..1f98cffa 100644 --- a/debian/patches/kfreebsd/lib_Support.diff +++ b/debian/patches/kfreebsd/lib_Support.diff @@ -1,8 +1,8 @@ -Index: llvm-toolchain-7-7.0.1/lib/Support/Triple.cpp +Index: llvm-toolchain-8-8~+rc1/lib/Support/Triple.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/lib/Support/Triple.cpp -+++ llvm-toolchain-7-7.0.1/lib/Support/Triple.cpp -@@ -185,7 +185,7 @@ StringRef Triple::getOSTypeName(OSType K +--- llvm-toolchain-8-8~+rc1.orig/lib/Support/Triple.cpp ++++ llvm-toolchain-8-8~+rc1/lib/Support/Triple.cpp +@@ -182,7 +182,7 @@ StringRef Triple::getOSTypeName(OSType K case FreeBSD: return "freebsd"; case Fuchsia: return "fuchsia"; case IOS: return "ios"; @@ -11,7 +11,7 @@ Index: llvm-toolchain-7-7.0.1/lib/Support/Triple.cpp case Linux: return "linux"; case Lv2: return "lv2"; case MacOSX: return "macosx"; -@@ -478,7 +478,7 @@ static Triple::OSType parseOS(StringRef +@@ -479,7 +479,7 @@ static Triple::OSType parseOS(StringRef .StartsWith("freebsd", Triple::FreeBSD) .StartsWith("fuchsia", Triple::Fuchsia) .StartsWith("ios", Triple::IOS) @@ -20,18 +20,11 @@ Index: llvm-toolchain-7-7.0.1/lib/Support/Triple.cpp .StartsWith("linux", Triple::Linux) .StartsWith("lv2", Triple::Lv2) .StartsWith("macos", Triple::MacOSX) -Index: llvm-toolchain-7-7.0.1/lib/Support/Unix/Path.inc +Index: llvm-toolchain-8-8~+rc1/lib/Support/Unix/Path.inc =================================================================== ---- llvm-toolchain-7-7.0.1.orig/lib/Support/Unix/Path.inc -+++ llvm-toolchain-7-7.0.1/lib/Support/Unix/Path.inc -@@ -54,13 +54,13 @@ - - #include - #if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && \ -- !defined(__linux__) -+ !defined(__linux__) && !defined(__FreeBSD_kernel__) - #include - #define STATVFS statvfs +--- llvm-toolchain-8-8~+rc1.orig/lib/Support/Unix/Path.inc ++++ llvm-toolchain-8-8~+rc1/lib/Support/Unix/Path.inc +@@ -62,7 +62,7 @@ #define FSTATVFS fstatvfs #define STATVFS_F_FRSIZE(vfs) vfs.f_frsize #else diff --git a/debian/patches/kfreebsd/lib_Target_X86.diff b/debian/patches/kfreebsd/lib_Target_X86.diff index 4cb954e1..94566f47 100644 --- a/debian/patches/kfreebsd/lib_Target_X86.diff +++ b/debian/patches/kfreebsd/lib_Target_X86.diff @@ -1,8 +1,8 @@ -Index: llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.cpp +Index: llvm-toolchain-8-8~+rc1/lib/Target/X86/X86Subtarget.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/lib/Target/X86/X86Subtarget.cpp -+++ llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.cpp -@@ -270,7 +270,7 @@ void X86Subtarget::initSubtargetFeatures +--- llvm-toolchain-8-8~+rc1.orig/lib/Target/X86/X86Subtarget.cpp ++++ llvm-toolchain-8-8~+rc1/lib/Target/X86/X86Subtarget.cpp +@@ -284,7 +284,7 @@ void X86Subtarget::initSubtargetFeatures if (StackAlignOverride) stackAlignment = StackAlignOverride; else if (isTargetDarwin() || isTargetLinux() || isTargetSolaris() || @@ -11,11 +11,11 @@ Index: llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.cpp stackAlignment = 16; // Some CPUs have more overhead for gather. The specified overhead is relative -Index: llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.h +Index: llvm-toolchain-8-8~+rc1/lib/Target/X86/X86Subtarget.h =================================================================== ---- llvm-toolchain-7-7.0.1.orig/lib/Target/X86/X86Subtarget.h -+++ llvm-toolchain-7-7.0.1/lib/Target/X86/X86Subtarget.h -@@ -708,7 +708,7 @@ public: +--- llvm-toolchain-8-8~+rc1.orig/lib/Target/X86/X86Subtarget.h ++++ llvm-toolchain-8-8~+rc1/lib/Target/X86/X86Subtarget.h +@@ -731,7 +731,7 @@ public: bool isTargetMachO() const { return TargetTriple.isOSBinFormatMachO(); } bool isTargetLinux() const { return TargetTriple.isOSLinux(); } diff --git a/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff b/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff index 013f92e5..f84011c9 100644 --- a/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff +++ b/debian/patches/kfreebsd/lldb_source_Host_freebsd_Host.cpp.diff @@ -1,8 +1,8 @@ -Index: llvm-toolchain-7-7.0.1/lldb/source/Host/freebsd/Host.cpp +Index: llvm-toolchain-8-8~+rc1/lldb/source/Host/freebsd/Host.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/lldb/source/Host/freebsd/Host.cpp -+++ llvm-toolchain-7-7.0.1/lldb/source/Host/freebsd/Host.cpp -@@ -12,6 +12,13 @@ +--- llvm-toolchain-8-8~+rc1.orig/lldb/source/Host/freebsd/Host.cpp ++++ llvm-toolchain-8-8~+rc1/lldb/source/Host/freebsd/Host.cpp +@@ -11,6 +11,13 @@ #include #include diff --git a/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff b/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff index e7d11451..f519b312 100644 --- a/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff +++ b/debian/patches/kfreebsd/lldb_source_Plugins_Process_FreeBSD.diff @@ -1,23 +1,23 @@ -Index: llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp +Index: llvm-toolchain-8-8~+rc1/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp =================================================================== ---- llvm-toolchain-7-7.0.1.orig/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp -+++ llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp +--- llvm-toolchain-8-8~+rc1.orig/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp ++++ llvm-toolchain-8-8~+rc1/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp +@@ -9,7 +9,9 @@ + + #include + #include ++#ifndef __FreeBSD_kernel__ + #include ++#endif + #include + #include + #include +Index: llvm-toolchain-8-8~+rc1/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp +=================================================================== +--- llvm-toolchain-8-8~+rc1.orig/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp ++++ llvm-toolchain-8-8~+rc1/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp @@ -10,7 +10,9 @@ - // C Includes - #include - #include -+#ifndef __FreeBSD_kernel__ - #include -+#endif - #include - #include - #include -Index: llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp -=================================================================== ---- llvm-toolchain-7-7.0.1.orig/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp -+++ llvm-toolchain-7-7.0.1/lldb/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp -@@ -11,7 +11,9 @@ - // C Includes + #include #include +#ifndef __FreeBSD_kernel__ diff --git a/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff b/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff index 73e4051f..56c957f0 100644 --- a/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff +++ b/debian/patches/kfreebsd/tools_llvm-shlib_CMakeLists.txt.diff @@ -1,12 +1,12 @@ -Index: llvm-toolchain-7-7.0.1/tools/llvm-shlib/CMakeLists.txt +Index: llvm-toolchain-8-8~+rc1/tools/llvm-shlib/CMakeLists.txt =================================================================== ---- llvm-toolchain-7-7.0.1.orig/tools/llvm-shlib/CMakeLists.txt -+++ llvm-toolchain-7-7.0.1/tools/llvm-shlib/CMakeLists.txt -@@ -40,6 +40,7 @@ set_property(TARGET LLVM PROPERTY VERSIO - list(REMOVE_DUPLICATES LIB_NAMES) - if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") -+ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD") - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "GNU") - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD") - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") +--- llvm-toolchain-8-8~+rc1.orig/tools/llvm-shlib/CMakeLists.txt ++++ llvm-toolchain-8-8~+rc1/tools/llvm-shlib/CMakeLists.txt +@@ -46,6 +46,7 @@ if(LLVM_BUILD_LLVM_DYLIB) + list(REMOVE_DUPLICATES LIB_NAMES) + if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") ++ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "GNU") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") From 9565ba904f5d3b4f22cbf708a9e8c376d8de7422 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 4 Feb 2019 09:01:42 +0100 Subject: [PATCH 12/13] patch removed --- debian/patches/series | 3 --- 1 file changed, 3 deletions(-) diff --git a/debian/patches/series b/debian/patches/series index a17bb0d0..4ba31d7e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -112,9 +112,6 @@ D49754-powerpcspe-clang.diff D54409-powerpcspe-register-spilling.diff D54584-powerpcspe-double-parameter.diff -# Rust -D52340-rustc-debuginfo.diff - # kfreebsd kfreebsd/clang_lib_Basic_Targets.diff kfreebsd/CMakeLists.txt.diff From b762c477118bd205fad30d71131078234e5eb38a Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 4 Feb 2019 10:37:19 +0100 Subject: [PATCH 13/13] rebase of the patch for 8 --- debian/patches/kfreebsd/compiler-rt_lib.diff | 48 ++++++++++++++++--- .../kfreebsd/kfreebsd-triple-clang.diff | 2 +- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/debian/patches/kfreebsd/compiler-rt_lib.diff b/debian/patches/kfreebsd/compiler-rt_lib.diff index de233c9c..c6c8436a 100644 --- a/debian/patches/kfreebsd/compiler-rt_lib.diff +++ b/debian/patches/kfreebsd/compiler-rt_lib.diff @@ -137,9 +137,9 @@ Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_platfo #include -#include +#if SANITIZER_KFREEBSD -+# include -+#else +# include ++#else ++# include +#endif #include #include @@ -149,9 +149,9 @@ Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_platfo #endif +#if SANITIZER_KFREEBSD -+# include -+#else +# include ++#else ++# include +#endif + #if SANITIZER_LINUX @@ -391,7 +391,15 @@ Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerDefs.h =================================================================== --- llvm-toolchain-8-8~+rc1.orig/compiler-rt/lib/fuzzer/FuzzerDefs.h +++ llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerDefs.h -@@ -54,6 +54,15 @@ +@@ -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 @@ -407,7 +415,7 @@ Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/fuzzer/FuzzerDefs.h #elif __OpenBSD__ #define LIBFUZZER_APPLE 0 #define LIBFUZZER_FUCHSIA 0 -@@ -95,7 +104,7 @@ +@@ -95,7 +105,7 @@ #define LIBFUZZER_POSIX \ (LIBFUZZER_APPLE || LIBFUZZER_LINUX || LIBFUZZER_NETBSD || \ @@ -521,3 +529,31 @@ Index: llvm-toolchain-8-8~+rc1/compiler-rt/lib/sanitizer_common/sanitizer_syscal # define internal_syscall __syscall # else # define internal_syscall syscall +Index: llvm-toolchain-8-8~+rc1/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +=================================================================== +--- llvm-toolchain-8-8~+rc1.orig/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ llvm-toolchain-8-8~+rc1/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -110,9 +110,9 @@ typedef struct user_fpregs elf_fpregset_ + #include + #include + #if SANITIZER_KFREEBSD +-# include +-#else + # include ++#else ++# include + #endif + #include + #include +@@ -151,9 +151,9 @@ typedef struct user_fpregs elf_fpregset_ + #endif + + #if SANITIZER_KFREEBSD +-# include +-#else + # include ++#else ++# include + #endif + + #if SANITIZER_LINUX diff --git a/debian/patches/kfreebsd/kfreebsd-triple-clang.diff b/debian/patches/kfreebsd/kfreebsd-triple-clang.diff index 757b2655..cd24440f 100644 --- a/debian/patches/kfreebsd/kfreebsd-triple-clang.diff +++ b/debian/patches/kfreebsd/kfreebsd-triple-clang.diff @@ -103,7 +103,6 @@ Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/KFreeBSD.cpp + +#include "KFreeBSD.h" +#include "CommonArgs.h" -+#include "clang/Basic/VirtualFileSystem.h" +#include "clang/Config/config.h" +#include "clang/Driver/Driver.h" +#include "clang/Driver/Options.h" @@ -111,6 +110,7 @@ Index: llvm-toolchain-8-8~+rc1/clang/lib/Driver/ToolChains/KFreeBSD.cpp +#include "llvm/Option/ArgList.h" +#include "llvm/ProfileData/InstrProf.h" +#include "llvm/Support/Path.h" ++#include "llvm/Support/VirtualFileSystem.h" + +using namespace clang::driver; +using namespace clang::driver::toolchains;