aboutsummaryrefslogtreecommitdiff
path: root/lib/libclang_rt
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libclang_rt')
-rw-r--r--lib/libclang_rt/Makefile98
-rw-r--r--lib/libclang_rt/Makefile.inc38
-rw-r--r--lib/libclang_rt/asan-preinit/Makefile8
-rw-r--r--lib/libclang_rt/asan-preinit/Makefile.depend10
-rw-r--r--lib/libclang_rt/asan/Makefile85
-rw-r--r--lib/libclang_rt/asan/Makefile.depend16
-rw-r--r--lib/libclang_rt/asan/warn.txt60
-rw-r--r--lib/libclang_rt/asan_cxx/Makefile13
-rw-r--r--lib/libclang_rt/asan_cxx/Makefile.depend12
-rw-r--r--lib/libclang_rt/asan_dynamic/Makefile91
-rw-r--r--lib/libclang_rt/asan_dynamic/Makefile.depend21
-rw-r--r--lib/libclang_rt/asan_static/Makefile9
-rw-r--r--lib/libclang_rt/cfi/Makefile40
-rw-r--r--lib/libclang_rt/cfi_diag/Makefile59
-rw-r--r--lib/libclang_rt/compiler-rt-vars.mk28
-rw-r--r--lib/libclang_rt/dd/Makefile38
-rw-r--r--lib/libclang_rt/fuzzer/Makefile29
-rw-r--r--lib/libclang_rt/fuzzer_interceptors/Makefile8
-rw-r--r--lib/libclang_rt/fuzzer_no_main/Makefile24
-rw-r--r--lib/libclang_rt/include/Makefile24
-rw-r--r--lib/libclang_rt/include/Makefile.depend10
-rw-r--r--lib/libclang_rt/msan/Makefile70
-rw-r--r--lib/libclang_rt/msan_cxx/Makefile15
-rw-r--r--lib/libclang_rt/profile/Makefile34
-rw-r--r--lib/libclang_rt/profile/Makefile.depend13
-rw-r--r--lib/libclang_rt/safestack/Makefile9
-rw-r--r--lib/libclang_rt/safestack/Makefile.depend13
-rw-r--r--lib/libclang_rt/stats/Makefile50
-rw-r--r--lib/libclang_rt/stats/Makefile.depend16
-rw-r--r--lib/libclang_rt/stats_client/Makefile8
-rw-r--r--lib/libclang_rt/stats_client/Makefile.depend12
-rw-r--r--lib/libclang_rt/tsan/Makefile88
-rw-r--r--lib/libclang_rt/tsan_cxx/Makefile15
-rw-r--r--lib/libclang_rt/ubsan_minimal/Makefile10
-rw-r--r--lib/libclang_rt/ubsan_standalone/Makefile62
-rw-r--r--lib/libclang_rt/ubsan_standalone/Makefile.depend16
-rw-r--r--lib/libclang_rt/ubsan_standalone_cxx/Makefile12
-rw-r--r--lib/libclang_rt/ubsan_standalone_cxx/Makefile.depend12
-rw-r--r--lib/libclang_rt/xray-basic/Makefile11
-rw-r--r--lib/libclang_rt/xray-fdr/Makefile11
-rw-r--r--lib/libclang_rt/xray-profiling/Makefile12
-rw-r--r--lib/libclang_rt/xray/Makefile59
42 files changed, 1269 insertions, 0 deletions
diff --git a/lib/libclang_rt/Makefile b/lib/libclang_rt/Makefile
new file mode 100644
index 000000000000..79ccd288a845
--- /dev/null
+++ b/lib/libclang_rt/Makefile
@@ -0,0 +1,98 @@
+
+SD_ASAN+= asan
+SD_ASAN+= asan-preinit
+SD_ASAN+= asan_cxx
+SD_ASAN+= asan_dynamic
+SD_ASAN+= asan_static
+
+SD_CFI+= cfi
+SD_CFI+= cfi_diag
+
+SD_DD+= dd
+
+SD_FUZZER+= fuzzer
+SD_FUZZER+= fuzzer_interceptors
+SD_FUZZER+= fuzzer_no_main
+
+SD_INCLUDE+= include
+
+SD_MSAN+= msan
+SD_MSAN+= msan_cxx
+
+SD_PROFILE+= profile
+
+SD_SAFESTACK+= safestack
+
+SD_STATS+= stats
+SD_STATS+= stats_client
+
+SD_TSAN+= tsan
+SD_TSAN+= tsan_cxx
+
+SD_UBSAN+= ubsan_minimal
+SD_UBSAN+= ubsan_standalone
+SD_UBSAN+= ubsan_standalone_cxx
+
+SD_XRAY+= xray
+SD_XRAY+= xray-basic
+SD_XRAY+= xray-fdr
+SD_XRAY+= xray-profiling
+
+.if ${MACHINE_CPUARCH} == "aarch64"
+SUBDIR+= ${SD_ASAN}
+SUBDIR+= ${SD_CFI}
+SUBDIR+= ${SD_FUZZER}
+SUBDIR+= ${SD_MSAN}
+SUBDIR+= ${SD_SAFESTACK}
+SUBDIR+= ${SD_STATS}
+SUBDIR+= ${SD_TSAN}
+SUBDIR+= ${SD_UBSAN}
+SUBDIR+= ${SD_XRAY}
+.elif ${MACHINE_CPUARCH} == "amd64"
+SUBDIR+= ${SD_ASAN}
+SUBDIR+= ${SD_CFI}
+SUBDIR+= ${SD_DD}
+SUBDIR+= ${SD_FUZZER}
+SUBDIR+= ${SD_MSAN}
+SUBDIR+= ${SD_SAFESTACK}
+SUBDIR+= ${SD_STATS}
+SUBDIR+= ${SD_TSAN}
+SUBDIR+= ${SD_UBSAN}
+SUBDIR+= ${SD_XRAY}
+.elif ${MACHINE_CPUARCH} == "arm"
+# nothing for 32-bit arm yet
+.elif ${MACHINE_CPUARCH} == "i386"
+SUBDIR+= ${SD_ASAN}
+SUBDIR+= ${SD_CFI}
+SUBDIR+= ${SD_SAFESTACK}
+SUBDIR+= ${SD_STATS}
+SUBDIR+= ${SD_UBSAN}
+.elif ${MACHINE_CPUARCH} == "powerpc"
+. if ${MACHINE_ARCH} == "powerpc64"
+SUBDIR+= ${SD_ASAN}
+SUBDIR+= ${SD_MSAN}
+SUBDIR+= ${SD_STATS}
+SUBDIR+= ${SD_TSAN}
+SUBDIR+= ${SD_UBSAN}
+. elif ${MACHINE_ARCH} == "powerpc64le"
+SUBDIR+= ${SD_ASAN}
+SUBDIR+= ${SD_MSAN}
+SUBDIR+= ${SD_STATS}
+SUBDIR+= ${SD_TSAN}
+SUBDIR+= ${SD_UBSAN}
+SUBDIR+= ${SD_XRAY}
+. else
+# nothing for other powerpc yet
+. endif
+.elif ${MACHINE_CPUARCH} == "riscv"
+SUBDIR+= ${SD_ASAN}
+SUBDIR+= ${SD_STATS}
+SUBDIR+= ${SD_UBSAN}
+.endif
+
+SUBDIR+= ${SD_INCLUDE}
+SUBDIR+= ${SD_PROFILE}
+
+SUBDIR_PARALLEL=
+
+.include <bsd.subdir.mk>
diff --git a/lib/libclang_rt/Makefile.inc b/lib/libclang_rt/Makefile.inc
new file mode 100644
index 000000000000..4be3c667462f
--- /dev/null
+++ b/lib/libclang_rt/Makefile.inc
@@ -0,0 +1,38 @@
+
+.include <bsd.compiler.mk>
+
+PACKAGE= clang
+CRTSRC= ${SRCTOP}/contrib/llvm-project/compiler-rt
+.include "compiler-rt-vars.mk"
+
+.PATH: ${CRTSRC}/lib
+
+LIBDIR= ${SANITIZER_LIBDIR}
+SHLIBDIR= ${LIBDIR}
+
+NO_PIC=
+MK_PROFILE= no
+MK_ASAN:= no
+MK_SSP= no
+MK_UBSAN:= no
+
+WARNS?= 0
+
+CFLAGS+= -DNDEBUG
+CFLAGS+= -DHAVE_RPC_XDR_H=0
+CFLAGS+= -DSANITIZER_SUPPORTS_WEAK_HOOKS=0
+CFLAGS+= -DUBSAN_CAN_USE_CXXABI
+CFLAGS+= ${PICFLAG}
+CFLAGS+= -fno-builtin
+CFLAGS+= -fno-exceptions
+CXXFLAGS+= -fno-rtti
+.if ${COMPILER_TYPE} == clang
+CFLAGS+= -fno-sanitize=safe-stack
+.endif
+CFLAGS+= -fno-stack-protector
+CFLAGS+= -funwind-tables
+CXXFLAGS+= -fvisibility-inlines-hidden
+CXXFLAGS+= -fvisibility=hidden
+CFLAGS+= -I${CRTSRC}/include
+CFLAGS+= -I${CRTSRC}/lib
+CXXSTD= c++17
diff --git a/lib/libclang_rt/asan-preinit/Makefile b/lib/libclang_rt/asan-preinit/Makefile
new file mode 100644
index 000000000000..ce99dfa2d50c
--- /dev/null
+++ b/lib/libclang_rt/asan-preinit/Makefile
@@ -0,0 +1,8 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.asan-preinit-${CRTARCH}
+
+SRCS+= asan/asan_preinit.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/asan-preinit/Makefile.depend b/lib/libclang_rt/asan-preinit/Makefile.depend
new file mode 100644
index 000000000000..11aba52f82cf
--- /dev/null
+++ b/lib/libclang_rt/asan-preinit/Makefile.depend
@@ -0,0 +1,10 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/asan/Makefile b/lib/libclang_rt/asan/Makefile
new file mode 100644
index 000000000000..630b2d4ea065
--- /dev/null
+++ b/lib/libclang_rt/asan/Makefile
@@ -0,0 +1,85 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.asan-${CRTARCH}
+
+SRCS+= asan/asan_activation.cpp
+SRCS+= asan/asan_allocator.cpp
+SRCS+= asan/asan_debugging.cpp
+SRCS+= asan/asan_descriptions.cpp
+SRCS+= asan/asan_errors.cpp
+SRCS+= asan/asan_fake_stack.cpp
+SRCS+= asan/asan_flags.cpp
+SRCS+= asan/asan_globals.cpp
+SRCS+= asan/asan_interceptors.cpp
+SRCS+= asan/asan_interceptors_memintrinsics.cpp
+SRCS+= asan/asan_linux.cpp
+SRCS+= asan/asan_malloc_linux.cpp
+SRCS+= asan/asan_memory_profile.cpp
+SRCS+= asan/asan_poisoning.cpp
+SRCS+= asan/asan_posix.cpp
+SRCS+= asan/asan_preinit.cpp
+SRCS+= asan/asan_report.cpp
+SRCS+= asan/asan_rtl.cpp
+SRCS+= asan/asan_shadow_setup.cpp
+SRCS+= asan/asan_stack.cpp
+SRCS+= asan/asan_stats.cpp
+SRCS+= asan/asan_suppressions.cpp
+SRCS+= asan/asan_thread.cpp
+SRCS+= interception/interception_linux.cpp
+SRCS+= lsan/lsan_common.cpp
+SRCS+= sanitizer_common/sancov_flags.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= ubsan/ubsan_diag.cpp
+SRCS+= ubsan/ubsan_flags.cpp
+SRCS+= ubsan/ubsan_handlers.cpp
+SRCS+= ubsan/ubsan_init.cpp
+SRCS+= ubsan/ubsan_monitor.cpp
+SRCS+= ubsan/ubsan_value.cpp
+
+FILESDIR= ${SANITIZER_SHAREDIR}
+FILES+= asan/asan_ignorelist.txt
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/asan/Makefile.depend b/lib/libclang_rt/asan/Makefile.depend
new file mode 100644
index 000000000000..2427fe0ab42b
--- /dev/null
+++ b/lib/libclang_rt/asan/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libc++ \
+ lib/libmd \
+ lib/ncurses/tinfo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/asan/warn.txt b/lib/libclang_rt/asan/warn.txt
new file mode 100644
index 000000000000..3d3fe896efa9
--- /dev/null
+++ b/lib/libclang_rt/asan/warn.txt
@@ -0,0 +1,60 @@
+--- sanitizer_common/sanitizer_symbolizer_markup.o ---
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:31:32: warning: format specifies type 'void *' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 31 | buffer->AppendF(kFormatData, DI->start);
+ | ~~~~~~~~~~~ ^~~~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:33:46: note: format string is defined here
+ 33 | constexpr const char *kFormatData = "{{{data:%p}}}";
+ | ^~
+ | %lu
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:46:43: warning: format specifies type 'void *' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 46 | buffer->AppendF(kFormatFrame, frame_no, address);
+ | ~~~~~~~~~~~~ ^~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:36:48: note: format string is defined here
+ 36 | constexpr const char *kFormatFrame = "{{{bt:%u:%p}}}";
+ | ^~
+ | %lu
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:51:62: warning: format specifies type 'void *' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 51 | internal_snprintf(buffer, sizeof(buffer), kFormatFunction, addr);
+ | ~~~~~~~~~~~~~~~ ^~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:29:48: note: format string is defined here
+ 29 | constexpr const char *kFormatFunction = "{{{pc:%p}}}";
+ | ^~
+ | %lu
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:99:34: warning: format specifies type 'int' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 99 | buffer->AppendF(kFormatModule, moduleId, module.full_name(),
+ | ~~~~~~~~~~~~~ ^~~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:39:50: note: format string is defined here
+ 39 | constexpr const char *kFormatModule = "{{{module:%d:%s:elf:%s}}}";
+ | ^~
+ | %lu
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:121:34: warning: format specifies type 'void *' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 121 | buffer->AppendF(kFormatMmap, range.beg, range.end - range.beg, moduleId,
+ | ~~~~~~~~~~~ ^~~~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:42:46: note: format string is defined here
+ 42 | constexpr const char *kFormatMmap = "{{{mmap:%p:0x%x:load:%d:%s:0x%x}}}";
+ | ^~
+ | %lu
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:121:45: warning: format specifies type 'unsigned int' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 121 | buffer->AppendF(kFormatMmap, range.beg, range.end - range.beg, moduleId,
+ | ~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:42:51: note: format string is defined here
+ 42 | constexpr const char *kFormatMmap = "{{{mmap:%p:0x%x:load:%d:%s:0x%x}}}";
+ | ^~
+ | %lx
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:121:68: warning: format specifies type 'int' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 121 | buffer->AppendF(kFormatMmap, range.beg, range.end - range.beg, moduleId,
+ | ~~~~~~~~~~~ ^~~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:42:59: note: format string is defined here
+ 42 | constexpr const char *kFormatMmap = "{{{mmap:%p:0x%x:load:%d:%s:0x%x}}}";
+ | ^~
+ | %lu
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup.cpp:122:42: warning: format specifies type 'unsigned int' but the argument has type 'uptr' (aka 'unsigned long') [-Wformat]
+ 121 | buffer->AppendF(kFormatMmap, range.beg, range.end - range.beg, moduleId,
+ | ~~~~~~~~~~~
+ 122 | accessBuffer.data(), range.beg - module.base_address());
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/share/dim/src/freebsd/llvm-18-update/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_markup_constants.h:42:67: note: format string is defined here
+ 42 | constexpr const char *kFormatMmap = "{{{mmap:%p:0x%x:load:%d:%s:0x%x}}}";
+ | ^~
+ | %lx
+8 warnings generated.
diff --git a/lib/libclang_rt/asan_cxx/Makefile b/lib/libclang_rt/asan_cxx/Makefile
new file mode 100644
index 000000000000..c26690aedfb1
--- /dev/null
+++ b/lib/libclang_rt/asan_cxx/Makefile
@@ -0,0 +1,13 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.asan_cxx-${CRTARCH}
+
+CXXFLAGS+= -frtti
+
+SRCS+= asan/asan_new_delete.cpp
+SRCS+= ubsan/ubsan_handlers_cxx.cpp
+SRCS+= ubsan/ubsan_type_hash.cpp
+SRCS+= ubsan/ubsan_type_hash_itanium.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/asan_cxx/Makefile.depend b/lib/libclang_rt/asan_cxx/Makefile.depend
new file mode 100644
index 000000000000..e57fef3d9b24
--- /dev/null
+++ b/lib/libclang_rt/asan_cxx/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ lib/libc++ \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/asan_dynamic/Makefile b/lib/libclang_rt/asan_dynamic/Makefile
new file mode 100644
index 000000000000..ed70c7c3dc34
--- /dev/null
+++ b/lib/libclang_rt/asan_dynamic/Makefile
@@ -0,0 +1,91 @@
+
+.include <bsd.init.mk>
+
+SHLIB_NAME= libclang_rt.asan-${CRTARCH}.so
+.undef NO_PIC # sorry...
+
+CFLAGS+= -DASAN_DYNAMIC=1
+
+SRCS+= asan/asan_activation.cpp
+SRCS+= asan/asan_allocator.cpp
+SRCS+= asan/asan_debugging.cpp
+SRCS+= asan/asan_descriptions.cpp
+SRCS+= asan/asan_errors.cpp
+SRCS+= asan/asan_fake_stack.cpp
+SRCS+= asan/asan_flags.cpp
+SRCS+= asan/asan_globals.cpp
+SRCS+= asan/asan_interceptors.cpp
+SRCS+= asan/asan_interceptors_memintrinsics.cpp
+SRCS+= asan/asan_linux.cpp
+SRCS+= asan/asan_malloc_linux.cpp
+SRCS+= asan/asan_memory_profile.cpp
+SRCS+= asan/asan_poisoning.cpp
+SRCS+= asan/asan_posix.cpp
+SRCS+= asan/asan_preinit.cpp
+SRCS+= asan/asan_report.cpp
+SRCS+= asan/asan_rtl.cpp
+SRCS+= asan/asan_shadow_setup.cpp
+SRCS+= asan/asan_stack.cpp
+SRCS+= asan/asan_stats.cpp
+SRCS+= asan/asan_suppressions.cpp
+SRCS+= asan/asan_thread.cpp
+SRCS+= interception/interception_linux.cpp
+SRCS+= lsan/lsan_common.cpp
+SRCS+= sanitizer_common/sancov_flags.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= ubsan/ubsan_diag.cpp
+SRCS+= ubsan/ubsan_flags.cpp
+SRCS+= ubsan/ubsan_handlers.cpp
+SRCS+= ubsan/ubsan_init.cpp
+SRCS+= ubsan/ubsan_monitor.cpp
+SRCS+= ubsan/ubsan_value.cpp
+
+# Kludge around a bsd.lib.mk shortcoming: when SHLIB_NAME is defined, but LIB
+# and LIB_CXX are undefined (which forces building only a shared library),
+# there is no way to tell it to use ${CXX} for linking. Since the files for
+# this library are all C++ anyway, simply set CC to CXX.
+CC= ${CXX}
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/asan_dynamic/Makefile.depend b/lib/libclang_rt/asan_dynamic/Makefile.depend
new file mode 100644
index 000000000000..04eb25a6e4f8
--- /dev/null
+++ b/lib/libclang_rt/asan_dynamic/Makefile.depend
@@ -0,0 +1,21 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/${CSU_DIR} \
+ lib/libc \
+ lib/libc++ \
+ lib/libcompiler_rt \
+ lib/libcxxrt \
+ lib/libmd \
+ lib/msun \
+ lib/ncurses/tinfo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/asan_static/Makefile b/lib/libclang_rt/asan_static/Makefile
new file mode 100644
index 000000000000..099ef64b37e2
--- /dev/null
+++ b/lib/libclang_rt/asan_static/Makefile
@@ -0,0 +1,9 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.asan_static-${CRTARCH}
+
+SRCS+= asan/asan_rtl_static.cpp
+SRCS+= asan/asan_rtl_x86_64.S
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/cfi/Makefile b/lib/libclang_rt/cfi/Makefile
new file mode 100644
index 000000000000..5fdbb9fd6cc3
--- /dev/null
+++ b/lib/libclang_rt/cfi/Makefile
@@ -0,0 +1,40 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.cfi-${CRTARCH}
+
+SRCS+= cfi/cfi.cpp
+SRCS+= interception/interception_linux.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+
+FILESDIR= ${SANITIZER_SHAREDIR}
+FILES+= cfi/cfi_ignorelist.txt
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/cfi_diag/Makefile b/lib/libclang_rt/cfi_diag/Makefile
new file mode 100644
index 000000000000..66a5d2c88e8d
--- /dev/null
+++ b/lib/libclang_rt/cfi_diag/Makefile
@@ -0,0 +1,59 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.cfi_diag-${CRTARCH}
+
+SRCS+= cfi/cfi.cpp
+SRCS+= interception/interception_linux.cpp
+SRCS+= sanitizer_common/sancov_flags.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= ubsan/ubsan_diag.cpp
+SRCS+= ubsan/ubsan_flags.cpp
+SRCS+= ubsan/ubsan_handlers.cpp
+SRCS+= ubsan/ubsan_init.cpp
+SRCS+= ubsan/ubsan_monitor.cpp
+SRCS+= ubsan/ubsan_value.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/compiler-rt-vars.mk b/lib/libclang_rt/compiler-rt-vars.mk
new file mode 100644
index 000000000000..5a9f115697d9
--- /dev/null
+++ b/lib/libclang_rt/compiler-rt-vars.mk
@@ -0,0 +1,28 @@
+CLANG_SUBDIR=clang/18
+CLANGDIR= /usr/lib/${CLANG_SUBDIR}
+SANITIZER_LIBDIR= ${CLANGDIR}/lib/freebsd
+SANITIZER_SHAREDIR= ${CLANGDIR}/share
+
+# armv[67] is a bit special since we allow a soft-floating version via
+# CPUTYPE matching *soft*. This variant may not actually work though.
+.if ${MACHINE_ARCH:Marmv[67]*} != "" && \
+ (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "")
+CRTARCH?= armhf
+.else
+CRTARCH?= ${MACHINE_ARCH:S/amd64/x86_64/}
+.endif
+
+.if ${COMPILER_TYPE} == "clang"
+# The only way to set the path to the sanitizer libraries with clang is to
+# override the resource directory.
+# Note: lib/freebsd is automatically appended to the -resource-dir value.
+SANITIZER_LDFLAGS+= -resource-dir=${SYSROOT}${CLANGDIR}
+# Also set RPATH to ensure that the dynamically linked runtime libs are found.
+SANITIZER_LDFLAGS+= -Wl,--enable-new-dtags
+SANITIZER_LDFLAGS+= -Wl,-rpath,${SANITIZER_LIBDIR}
+.elif ${COMPILER_TYPE} != "none"
+# This file can be included with COMPILER_TYPE=none during the cleandir phase,
+# only emit an error when trying to compile with an unsupported compiler such
+# as GCC.
+.error "Unknown link flags for -fsanitize=... COMPILER_TYPE=${COMPILER_TYPE}"
+.endif
diff --git a/lib/libclang_rt/dd/Makefile b/lib/libclang_rt/dd/Makefile
new file mode 100644
index 000000000000..558d7cfb6982
--- /dev/null
+++ b/lib/libclang_rt/dd/Makefile
@@ -0,0 +1,38 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.dd-${CRTARCH}
+
+SRCS+= interception/interception_linux.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= tsan/dd/dd_interceptors.cpp
+SRCS+= tsan/dd/dd_rtl.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/fuzzer/Makefile b/lib/libclang_rt/fuzzer/Makefile
new file mode 100644
index 000000000000..73e69616d8a1
--- /dev/null
+++ b/lib/libclang_rt/fuzzer/Makefile
@@ -0,0 +1,29 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.fuzzer-${CRTARCH}
+
+SRCS+= fuzzer/FuzzerCrossOver.cpp
+SRCS+= fuzzer/FuzzerDataFlowTrace.cpp
+SRCS+= fuzzer/FuzzerDriver.cpp
+SRCS+= fuzzer/FuzzerExtFunctionsDlsym.cpp
+SRCS+= fuzzer/FuzzerExtFunctionsWeak.cpp
+SRCS+= fuzzer/FuzzerExtraCounters.cpp
+SRCS+= fuzzer/FuzzerFork.cpp
+SRCS+= fuzzer/FuzzerIO.cpp
+SRCS+= fuzzer/FuzzerIOPosix.cpp
+SRCS+= fuzzer/FuzzerLoop.cpp
+SRCS+= fuzzer/FuzzerMain.cpp
+SRCS+= fuzzer/FuzzerMerge.cpp
+SRCS+= fuzzer/FuzzerMutate.cpp
+SRCS+= fuzzer/FuzzerSHA1.cpp
+SRCS+= fuzzer/FuzzerTracePC.cpp
+SRCS+= fuzzer/FuzzerUtil.cpp
+SRCS+= fuzzer/FuzzerUtilLinux.cpp
+SRCS+= fuzzer/FuzzerUtilPosix.cpp
+
+.PATH: ${CRTSRC}/include/fuzzer
+INCSDIR= ${CLANGDIR}/include/fuzzer
+INCS+= FuzzedDataProvider.h
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/fuzzer_interceptors/Makefile b/lib/libclang_rt/fuzzer_interceptors/Makefile
new file mode 100644
index 000000000000..52f8425e429a
--- /dev/null
+++ b/lib/libclang_rt/fuzzer_interceptors/Makefile
@@ -0,0 +1,8 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.fuzzer_interceptors-${CRTARCH}
+
+SRCS+= fuzzer/FuzzerInterceptors.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/fuzzer_no_main/Makefile b/lib/libclang_rt/fuzzer_no_main/Makefile
new file mode 100644
index 000000000000..088f0f2e79ab
--- /dev/null
+++ b/lib/libclang_rt/fuzzer_no_main/Makefile
@@ -0,0 +1,24 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.fuzzer_no_main-${CRTARCH}
+
+SRCS+= fuzzer/FuzzerCrossOver.cpp
+SRCS+= fuzzer/FuzzerDataFlowTrace.cpp
+SRCS+= fuzzer/FuzzerDriver.cpp
+SRCS+= fuzzer/FuzzerExtFunctionsDlsym.cpp
+SRCS+= fuzzer/FuzzerExtFunctionsWeak.cpp
+SRCS+= fuzzer/FuzzerExtraCounters.cpp
+SRCS+= fuzzer/FuzzerFork.cpp
+SRCS+= fuzzer/FuzzerIO.cpp
+SRCS+= fuzzer/FuzzerIOPosix.cpp
+SRCS+= fuzzer/FuzzerLoop.cpp
+SRCS+= fuzzer/FuzzerMerge.cpp
+SRCS+= fuzzer/FuzzerMutate.cpp
+SRCS+= fuzzer/FuzzerSHA1.cpp
+SRCS+= fuzzer/FuzzerTracePC.cpp
+SRCS+= fuzzer/FuzzerUtil.cpp
+SRCS+= fuzzer/FuzzerUtilLinux.cpp
+SRCS+= fuzzer/FuzzerUtilPosix.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/include/Makefile b/lib/libclang_rt/include/Makefile
new file mode 100644
index 000000000000..ab881db3da76
--- /dev/null
+++ b/lib/libclang_rt/include/Makefile
@@ -0,0 +1,24 @@
+
+.include <bsd.init.mk>
+
+.PATH: ${CRTSRC}/include/sanitizer
+
+INCSDIR= ${CLANGDIR}/include/sanitizer
+
+INCS+= allocator_interface.h
+INCS+= asan_interface.h
+INCS+= common_interface_defs.h
+INCS+= coverage_interface.h
+INCS+= dfsan_interface.h
+INCS+= hwasan_interface.h
+INCS+= linux_syscall_hooks.h
+INCS+= lsan_interface.h
+INCS+= memprof_interface.h
+INCS+= msan_interface.h
+INCS+= netbsd_syscall_hooks.h
+INCS+= scudo_interface.h
+INCS+= tsan_interface.h
+INCS+= tsan_interface_atomic.h
+INCS+= ubsan_interface.h
+
+.include <bsd.prog.mk>
diff --git a/lib/libclang_rt/include/Makefile.depend b/lib/libclang_rt/include/Makefile.depend
new file mode 100644
index 000000000000..11aba52f82cf
--- /dev/null
+++ b/lib/libclang_rt/include/Makefile.depend
@@ -0,0 +1,10 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/msan/Makefile b/lib/libclang_rt/msan/Makefile
new file mode 100644
index 000000000000..18afe7e474f1
--- /dev/null
+++ b/lib/libclang_rt/msan/Makefile
@@ -0,0 +1,70 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.msan-${CRTARCH}
+
+SRCS+= interception/interception_linux.cpp
+SRCS+= msan/msan.cpp
+SRCS+= msan/msan_allocator.cpp
+SRCS+= msan/msan_chained_origin_depot.cpp
+SRCS+= msan/msan_dl.cpp
+SRCS+= msan/msan_interceptors.cpp
+SRCS+= msan/msan_linux.cpp
+SRCS+= msan/msan_poisoning.cpp
+SRCS+= msan/msan_report.cpp
+SRCS+= msan/msan_thread.cpp
+SRCS+= sanitizer_common/sancov_flags.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= ubsan/ubsan_diag.cpp
+SRCS+= ubsan/ubsan_flags.cpp
+SRCS+= ubsan/ubsan_handlers.cpp
+SRCS+= ubsan/ubsan_init.cpp
+SRCS+= ubsan/ubsan_monitor.cpp
+SRCS+= ubsan/ubsan_value.cpp
+
+FILESDIR= ${SANITIZER_SHAREDIR}
+FILES+= msan/msan_ignorelist.txt
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/msan_cxx/Makefile b/lib/libclang_rt/msan_cxx/Makefile
new file mode 100644
index 000000000000..59ad2120111f
--- /dev/null
+++ b/lib/libclang_rt/msan_cxx/Makefile
@@ -0,0 +1,15 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.msan_cxx-${CRTARCH}
+
+SRCS+= msan/msan_new_delete.cpp
+SRCS+= ubsan/ubsan_handlers_cxx.cpp
+SRCS+= ubsan/ubsan_type_hash.cpp
+SRCS+= ubsan/ubsan_type_hash_itanium.cpp
+
+.include <bsd.lib.mk>
+
+CXXFLAGS.ubsan_handlers_cxx.cpp= -frtti
+CXXFLAGS.ubsan_type_hash.cpp= -frtti
+CXXFLAGS.ubsan_type_hash_itanium.cpp= -frtti
diff --git a/lib/libclang_rt/profile/Makefile b/lib/libclang_rt/profile/Makefile
new file mode 100644
index 000000000000..ac4e9d66d332
--- /dev/null
+++ b/lib/libclang_rt/profile/Makefile
@@ -0,0 +1,34 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.profile-${CRTARCH}
+
+CFLAGS+= -DCOMPILER_RT_HAS_ATOMICS=1
+CFLAGS+= -DCOMPILER_RT_HAS_FCNTL_LCK=1
+CFLAGS+= -DCOMPILER_RT_HAS_UNAME=1
+
+# This is needed for --coverage
+CXXFLAGS+= -fvisibility=default
+
+SRCS+= profile/GCDAProfiling.c
+SRCS+= profile/InstrProfiling.c
+SRCS+= profile/InstrProfilingBuffer.c
+SRCS+= profile/InstrProfilingFile.c
+SRCS+= profile/InstrProfilingInternal.c
+SRCS+= profile/InstrProfilingMerge.c
+SRCS+= profile/InstrProfilingMergeFile.c
+SRCS+= profile/InstrProfilingNameVar.c
+SRCS+= profile/InstrProfilingPlatformLinux.c
+SRCS+= profile/InstrProfilingPlatformOther.c
+SRCS+= profile/InstrProfilingRuntime.cpp
+SRCS+= profile/InstrProfilingUtil.c
+SRCS+= profile/InstrProfilingValue.c
+SRCS+= profile/InstrProfilingVersionVar.c
+SRCS+= profile/InstrProfilingWriter.c
+
+.PATH: ${CRTSRC}/include/profile
+INCSDIR= ${CLANGDIR}/include/profile
+INCS+= InstrProfData.inc
+INCS+= MemProfData.inc
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/profile/Makefile.depend b/lib/libclang_rt/profile/Makefile.depend
new file mode 100644
index 000000000000..37aec7f3693e
--- /dev/null
+++ b/lib/libclang_rt/profile/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/safestack/Makefile b/lib/libclang_rt/safestack/Makefile
new file mode 100644
index 000000000000..bbf4a665c37f
--- /dev/null
+++ b/lib/libclang_rt/safestack/Makefile
@@ -0,0 +1,9 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.safestack-${CRTARCH}
+
+SRCS+= interception/interception_linux.cpp
+SRCS+= safestack/safestack.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/safestack/Makefile.depend b/lib/libclang_rt/safestack/Makefile.depend
new file mode 100644
index 000000000000..37aec7f3693e
--- /dev/null
+++ b/lib/libclang_rt/safestack/Makefile.depend
@@ -0,0 +1,13 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/xlocale \
+ lib/libc++ \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/stats/Makefile b/lib/libclang_rt/stats/Makefile
new file mode 100644
index 000000000000..63ed5eb22c5f
--- /dev/null
+++ b/lib/libclang_rt/stats/Makefile
@@ -0,0 +1,50 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.stats-${CRTARCH}
+
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= stats/stats.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/stats/Makefile.depend b/lib/libclang_rt/stats/Makefile.depend
new file mode 100644
index 000000000000..2427fe0ab42b
--- /dev/null
+++ b/lib/libclang_rt/stats/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libc++ \
+ lib/libmd \
+ lib/ncurses/tinfo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/stats_client/Makefile b/lib/libclang_rt/stats_client/Makefile
new file mode 100644
index 000000000000..010763a9e25a
--- /dev/null
+++ b/lib/libclang_rt/stats_client/Makefile
@@ -0,0 +1,8 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.stats_client-${CRTARCH}
+
+SRCS+= stats/stats_client.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/stats_client/Makefile.depend b/lib/libclang_rt/stats_client/Makefile.depend
new file mode 100644
index 000000000000..e57fef3d9b24
--- /dev/null
+++ b/lib/libclang_rt/stats_client/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ lib/libc++ \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/tsan/Makefile b/lib/libclang_rt/tsan/Makefile
new file mode 100644
index 000000000000..906156a48204
--- /dev/null
+++ b/lib/libclang_rt/tsan/Makefile
@@ -0,0 +1,88 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.tsan-${CRTARCH}
+
+SRCS+= interception/interception_linux.cpp
+SRCS+= sanitizer_common/sancov_flags.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= tsan/rtl/tsan_debugging.cpp
+SRCS+= tsan/rtl/tsan_external.cpp
+SRCS+= tsan/rtl/tsan_fd.cpp
+SRCS+= tsan/rtl/tsan_flags.cpp
+SRCS+= tsan/rtl/tsan_ignoreset.cpp
+SRCS+= tsan/rtl/tsan_interceptors_memintrinsics.cpp
+SRCS+= tsan/rtl/tsan_interceptors_posix.cpp
+SRCS+= tsan/rtl/tsan_interface.cpp
+SRCS+= tsan/rtl/tsan_interface_ann.cpp
+SRCS+= tsan/rtl/tsan_interface_atomic.cpp
+SRCS+= tsan/rtl/tsan_interface_java.cpp
+SRCS+= tsan/rtl/tsan_md5.cpp
+SRCS+= tsan/rtl/tsan_mman.cpp
+SRCS+= tsan/rtl/tsan_mutexset.cpp
+SRCS+= tsan/rtl/tsan_platform_linux.cpp
+SRCS+= tsan/rtl/tsan_platform_posix.cpp
+SRCS+= tsan/rtl/tsan_preinit.cpp
+SRCS+= tsan/rtl/tsan_report.cpp
+SRCS+= tsan/rtl/tsan_rtl.cpp
+SRCS+= tsan/rtl/tsan_rtl_access.cpp
+SRCS+= tsan/rtl/tsan_rtl_amd64.S
+SRCS+= tsan/rtl/tsan_rtl_mutex.cpp
+SRCS+= tsan/rtl/tsan_rtl_proc.cpp
+SRCS+= tsan/rtl/tsan_rtl_report.cpp
+SRCS+= tsan/rtl/tsan_rtl_thread.cpp
+SRCS+= tsan/rtl/tsan_stack_trace.cpp
+SRCS+= tsan/rtl/tsan_suppressions.cpp
+SRCS+= tsan/rtl/tsan_symbolize.cpp
+SRCS+= tsan/rtl/tsan_sync.cpp
+SRCS+= tsan/rtl/tsan_vector_clock.cpp
+SRCS+= ubsan/ubsan_diag.cpp
+SRCS+= ubsan/ubsan_flags.cpp
+SRCS+= ubsan/ubsan_handlers.cpp
+SRCS+= ubsan/ubsan_init.cpp
+SRCS+= ubsan/ubsan_monitor.cpp
+SRCS+= ubsan/ubsan_value.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/tsan_cxx/Makefile b/lib/libclang_rt/tsan_cxx/Makefile
new file mode 100644
index 000000000000..b556699c9115
--- /dev/null
+++ b/lib/libclang_rt/tsan_cxx/Makefile
@@ -0,0 +1,15 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.tsan_cxx-${CRTARCH}
+
+SRCS+= tsan/rtl/tsan_new_delete.cpp
+SRCS+= ubsan/ubsan_handlers_cxx.cpp
+SRCS+= ubsan/ubsan_type_hash.cpp
+SRCS+= ubsan/ubsan_type_hash_itanium.cpp
+
+.include <bsd.lib.mk>
+
+CXXFLAGS.ubsan_handlers_cxx.cpp= -frtti
+CXXFLAGS.ubsan_type_hash.cpp= -frtti
+CXXFLAGS.ubsan_type_hash_itanium.cpp= -frtti
diff --git a/lib/libclang_rt/ubsan_minimal/Makefile b/lib/libclang_rt/ubsan_minimal/Makefile
new file mode 100644
index 000000000000..5edbad5df89f
--- /dev/null
+++ b/lib/libclang_rt/ubsan_minimal/Makefile
@@ -0,0 +1,10 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.ubsan_minimal-${CRTARCH}
+
+CFLAGS+= -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS
+
+SRCS+= ubsan_minimal/ubsan_minimal_handlers.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/ubsan_standalone/Makefile b/lib/libclang_rt/ubsan_standalone/Makefile
new file mode 100644
index 000000000000..6b4964715b5a
--- /dev/null
+++ b/lib/libclang_rt/ubsan_standalone/Makefile
@@ -0,0 +1,62 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.ubsan_standalone-${CRTARCH}
+
+SRCS+= interception/interception_linux.cpp
+SRCS+= sanitizer_common/sancov_flags.cpp
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_report.cpp
+SRCS+= sanitizer_common/sanitizer_chained_origin_depot.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_dl.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_range.cpp
+SRCS+= sanitizer_common/sanitizer_stack_store.cpp
+SRCS+= sanitizer_common/sanitizer_stackdepot.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_markup.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_symbolizer_report.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
+SRCS+= ubsan/ubsan_diag.cpp
+SRCS+= ubsan/ubsan_diag_standalone.cpp
+SRCS+= ubsan/ubsan_flags.cpp
+SRCS+= ubsan/ubsan_handlers.cpp
+SRCS+= ubsan/ubsan_init.cpp
+SRCS+= ubsan/ubsan_init_standalone.cpp
+SRCS+= ubsan/ubsan_init_standalone_preinit.cpp
+SRCS+= ubsan/ubsan_monitor.cpp
+SRCS+= ubsan/ubsan_signals_standalone.cpp
+SRCS+= ubsan/ubsan_value.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/ubsan_standalone/Makefile.depend b/lib/libclang_rt/ubsan_standalone/Makefile.depend
new file mode 100644
index 000000000000..2427fe0ab42b
--- /dev/null
+++ b/lib/libclang_rt/ubsan_standalone/Makefile.depend
@@ -0,0 +1,16 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ include/arpa \
+ include/xlocale \
+ lib/libc++ \
+ lib/libmd \
+ lib/ncurses/tinfo \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/ubsan_standalone_cxx/Makefile b/lib/libclang_rt/ubsan_standalone_cxx/Makefile
new file mode 100644
index 000000000000..bfca7e1bd693
--- /dev/null
+++ b/lib/libclang_rt/ubsan_standalone_cxx/Makefile
@@ -0,0 +1,12 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.ubsan_standalone_cxx-${CRTARCH}
+
+CXXFLAGS+= -frtti
+
+SRCS+= ubsan/ubsan_handlers_cxx.cpp
+SRCS+= ubsan/ubsan_type_hash.cpp
+SRCS+= ubsan/ubsan_type_hash_itanium.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/ubsan_standalone_cxx/Makefile.depend b/lib/libclang_rt/ubsan_standalone_cxx/Makefile.depend
new file mode 100644
index 000000000000..e57fef3d9b24
--- /dev/null
+++ b/lib/libclang_rt/ubsan_standalone_cxx/Makefile.depend
@@ -0,0 +1,12 @@
+# Autogenerated - do NOT edit!
+
+DIRDEPS = \
+ include \
+ lib/libc++ \
+
+
+.include <dirdeps.mk>
+
+.if ${DEP_RELDIR} == ${_DEP_RELDIR}
+# local dependencies - needed for -jN in clean tree
+.endif
diff --git a/lib/libclang_rt/xray-basic/Makefile b/lib/libclang_rt/xray-basic/Makefile
new file mode 100644
index 000000000000..f5421f59679b
--- /dev/null
+++ b/lib/libclang_rt/xray-basic/Makefile
@@ -0,0 +1,11 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.xray-basic-${CRTARCH}
+
+CFLAGS+= -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS
+
+SRCS+= xray/xray_basic_flags.cpp
+SRCS+= xray/xray_basic_logging.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/xray-fdr/Makefile b/lib/libclang_rt/xray-fdr/Makefile
new file mode 100644
index 000000000000..43bfd97b0dec
--- /dev/null
+++ b/lib/libclang_rt/xray-fdr/Makefile
@@ -0,0 +1,11 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.xray-fdr-${CRTARCH}
+
+CFLAGS+= -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS
+
+SRCS+= xray/xray_fdr_flags.cpp
+SRCS+= xray/xray_fdr_logging.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/xray-profiling/Makefile b/lib/libclang_rt/xray-profiling/Makefile
new file mode 100644
index 000000000000..4e609b777799
--- /dev/null
+++ b/lib/libclang_rt/xray-profiling/Makefile
@@ -0,0 +1,12 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.xray-profiling-${CRTARCH}
+
+CFLAGS+= -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS
+
+SRCS+= xray/xray_profile_collector.cpp
+SRCS+= xray/xray_profiling.cpp
+SRCS+= xray/xray_profiling_flags.cpp
+
+.include <bsd.lib.mk>
diff --git a/lib/libclang_rt/xray/Makefile b/lib/libclang_rt/xray/Makefile
new file mode 100644
index 000000000000..91abbb743667
--- /dev/null
+++ b/lib/libclang_rt/xray/Makefile
@@ -0,0 +1,59 @@
+
+.include <bsd.init.mk>
+
+LIB= clang_rt.xray-${CRTARCH}
+
+CFLAGS+= -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS
+
+SRCS+= sanitizer_common/sanitizer_allocator.cpp
+SRCS+= sanitizer_common/sanitizer_allocator_checks.cpp
+SRCS+= sanitizer_common/sanitizer_common.cpp
+SRCS+= sanitizer_common/sanitizer_common_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cpp
+SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cpp
+SRCS+= sanitizer_common/sanitizer_errno.cpp
+SRCS+= sanitizer_common/sanitizer_file.cpp
+SRCS+= sanitizer_common/sanitizer_flag_parser.cpp
+SRCS+= sanitizer_common/sanitizer_flags.cpp
+SRCS+= sanitizer_common/sanitizer_libc.cpp
+SRCS+= sanitizer_common/sanitizer_libignore.cpp
+SRCS+= sanitizer_common/sanitizer_linux.cpp
+SRCS+= sanitizer_common/sanitizer_linux_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_mutex.cpp
+SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cpp
+SRCS+= sanitizer_common/sanitizer_posix.cpp
+SRCS+= sanitizer_common/sanitizer_posix_libcdep.cpp
+SRCS+= sanitizer_common/sanitizer_printf.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cpp
+SRCS+= sanitizer_common/sanitizer_procmaps_common.cpp
+SRCS+= sanitizer_common/sanitizer_suppressions.cpp
+SRCS+= sanitizer_common/sanitizer_termination.cpp
+SRCS+= sanitizer_common/sanitizer_thread_arg_retval.cpp
+SRCS+= sanitizer_common/sanitizer_thread_registry.cpp
+SRCS+= sanitizer_common/sanitizer_tls_get_addr.cpp
+SRCS+= sanitizer_common/sanitizer_type_traits.cpp
+SRCS+= xray/xray_buffer_queue.cpp
+SRCS+= xray/xray_flags.cpp
+SRCS+= xray/xray_init.cpp
+SRCS+= xray/xray_interface.cpp
+SRCS+= xray/xray_log_interface.cpp
+SRCS+= xray/xray_utils.cpp
+
+.if ${MACHINE_CPUARCH} == amd64
+SRCS+= xray/xray_trampoline_x86_64.S
+SRCS+= xray/xray_x86_64.cpp
+.endif # amd64
+
+.if ${MACHINE_ARCH} == powerpc64le
+SRCS+= xray/xray_powerpc64.cpp
+SRCS+= xray/xray_trampoline_powerpc64.cpp
+SRCS+= xray/xray_trampoline_powerpc64_asm.S
+.endif # powerpc64le
+
+.PATH: ${CRTSRC}/include/xray
+INCSDIR= ${CLANGDIR}/include/xray
+INCS+= xray_interface.h
+INCS+= xray_log_interface.h
+INCS+= xray_records.h
+
+.include <bsd.lib.mk>