Now compiler-rt has been updated in r276851, bring in the various

sanitizer libraries that already work on FreeBSD:

* asan:    Address Sanitizer
* ubsan:   Undefined Behavior Sanitizer
* profile: Profile Guided Optimization support

Please note that these libraries are *experimental* at this stage, so
the main Makefile is not yet connected to the build.

Since I didn't want to needlessly edit BSD.usr.dist, you will also have
to create the install directory /usr/lib/clang/3.5.0/lib/freebsd
manually for now.
This commit is contained in:
Dimitry Andric 2015-01-08 22:40:56 +00:00
parent 7a635f0d70
commit 91d03e2e18
8 changed files with 220 additions and 0 deletions

10
lib/libclang_rt/Makefile Normal file
View File

@ -0,0 +1,10 @@
# $FreeBSD$
SUBDIR= asan\
asan_cxx\
profile\
san\
ubsan\
ubsan_cxx
.include <bsd.subdir.mk>

View File

@ -0,0 +1,25 @@
# $FreeBSD$
.include <src.opts.mk>
CRTARCH=${MACHINE_CPUARCH:C/amd64/x86_64/}
CRTSRC=${.CURDIR}/../../../contrib/compiler-rt
LIBDIR=/usr/lib/clang/3.5.0/lib/freebsd
NO_PIC=
MK_PROFILE=no
WARNS?=0
SSP_CFLAGS=
CFLAGS+=-DNDEBUG
CFLAGS+=${PICFLAG}
CFLAGS+=-fno-builtin
CFLAGS+=-fno-exceptions
CFLAGS+=-fno-rtti
CFLAGS+=-fno-stack-protector
CFLAGS+=-funwind-tables
CFLAGS+=-fvisibility-inlines-hidden
CFLAGS+=-fvisibility=hidden
CFLAGS+=-I${CRTSRC}/lib

View File

@ -0,0 +1,78 @@
# $FreeBSD$
.include <bsd.init.mk>
LIB= clang_rt.asan-${CRTARCH}
.PATH: ${CRTSRC}/lib/asan\
${CRTSRC}/lib/interception\
${CRTSRC}/lib/sanitizer_common\
${CRTSRC}/lib/lsan
SRCS= asan_preinit.cc\
asan_allocator2.cc\
asan_activation.cc\
asan_debugging.cc\
asan_fake_stack.cc\
asan_globals.cc\
asan_interceptors.cc\
asan_linux.cc\
asan_mac.cc\
asan_malloc_linux.cc\
asan_malloc_mac.cc\
asan_malloc_win.cc\
asan_poisoning.cc\
asan_posix.cc\
asan_report.cc\
asan_rtl.cc\
asan_stack.cc\
asan_stats.cc\
asan_suppressions.cc\
asan_thread.cc\
asan_win.cc\
interception_linux.cc\
interception_mac.cc\
interception_win.cc\
interception_type_test.cc\
sanitizer_allocator.cc\
sanitizer_common.cc\
sanitizer_deadlock_detector1.cc\
sanitizer_deadlock_detector2.cc\
sanitizer_flags.cc\
sanitizer_libc.cc\
sanitizer_libignore.cc\
sanitizer_linux.cc\
sanitizer_mac.cc\
sanitizer_persistent_allocator.cc\
sanitizer_platform_limits_linux.cc\
sanitizer_platform_limits_posix.cc\
sanitizer_posix.cc\
sanitizer_printf.cc\
sanitizer_procmaps_common.cc\
sanitizer_procmaps_freebsd.cc\
sanitizer_procmaps_linux.cc\
sanitizer_procmaps_mac.cc\
sanitizer_stackdepot.cc\
sanitizer_stacktrace.cc\
sanitizer_stacktrace_printer.cc\
sanitizer_suppressions.cc\
sanitizer_symbolizer.cc\
sanitizer_symbolizer_libbacktrace.cc\
sanitizer_symbolizer_win.cc\
sanitizer_tls_get_addr.cc\
sanitizer_thread_registry.cc\
sanitizer_win.cc\
sanitizer_common_libcdep.cc\
sanitizer_coverage_libcdep.cc\
sanitizer_coverage_mapping_libcdep.cc\
sanitizer_linux_libcdep.cc\
sanitizer_posix_libcdep.cc\
sanitizer_stacktrace_libcdep.cc\
sanitizer_stoptheworld_linux_libcdep.cc\
sanitizer_symbolizer_libcdep.cc\
sanitizer_symbolizer_posix_libcdep.cc\
sanitizer_unwind_posix_libcdep.cc\
lsan_common.cc\
lsan_common_linux.cc
.include <bsd.lib.mk>

View File

@ -0,0 +1,11 @@
# $FreeBSD$
.include <bsd.init.mk>
LIB= clang_rt.asan_cxx-${CRTARCH}
.PATH: ${CRTSRC}/lib/asan
SRCS= asan_new_delete.cc
.include <bsd.lib.mk>

View File

@ -0,0 +1,17 @@
# $FreeBSD$
.include <bsd.init.mk>
LIB= clang_rt.profile-${CRTARCH}
.PATH: ${CRTSRC}/lib/profile
SRCS= GCDAProfiling.c\
InstrProfiling.c\
InstrProfilingBuffer.c\
InstrProfilingFile.c\
InstrProfilingPlatformDarwin.c\
InstrProfilingPlatformOther.c\
InstrProfilingRuntime.cc\
.include <bsd.lib.mk>

View File

@ -0,0 +1,48 @@
# $FreeBSD$
.include <bsd.init.mk>
LIB= clang_rt.san-${CRTARCH}
.PATH: ${CRTSRC}/lib/sanitizer_common\
SRCS= sanitizer_allocator.cc\
sanitizer_common.cc\
sanitizer_deadlock_detector1.cc\
sanitizer_deadlock_detector2.cc\
sanitizer_flags.cc\
sanitizer_libc.cc\
sanitizer_libignore.cc\
sanitizer_linux.cc\
sanitizer_mac.cc\
sanitizer_persistent_allocator.cc\
sanitizer_platform_limits_linux.cc\
sanitizer_platform_limits_posix.cc\
sanitizer_posix.cc\
sanitizer_printf.cc\
sanitizer_procmaps_common.cc\
sanitizer_procmaps_freebsd.cc\
sanitizer_procmaps_linux.cc\
sanitizer_procmaps_mac.cc\
sanitizer_stackdepot.cc\
sanitizer_stacktrace.cc\
sanitizer_stacktrace_printer.cc\
sanitizer_suppressions.cc\
sanitizer_symbolizer.cc\
sanitizer_symbolizer_libbacktrace.cc\
sanitizer_symbolizer_win.cc\
sanitizer_tls_get_addr.cc\
sanitizer_thread_registry.cc\
sanitizer_win.cc\
sanitizer_common_libcdep.cc\
sanitizer_coverage_libcdep.cc\
sanitizer_coverage_mapping_libcdep.cc\
sanitizer_linux_libcdep.cc\
sanitizer_posix_libcdep.cc\
sanitizer_stacktrace_libcdep.cc\
sanitizer_stoptheworld_linux_libcdep.cc\
sanitizer_symbolizer_libcdep.cc\
sanitizer_symbolizer_posix_libcdep.cc\
sanitizer_unwind_posix_libcdep.cc
.include <bsd.lib.mk>

View File

@ -0,0 +1,17 @@
# $FreeBSD$
.include <bsd.init.mk>
LIB= clang_rt.ubsan-${CRTARCH}
.PATH: ${CRTSRC}/lib/ubsan
SRCS= ubsan_diag.cc\
ubsan_init.cc\
ubsan_flags.cc\
ubsan_handlers.cc\
ubsan_value.cc
.include <bsd.lib.mk>

View File

@ -0,0 +1,14 @@
# $FreeBSD$
.include <bsd.init.mk>
LIB= clang_rt.ubsan_cxx-${CRTARCH}
CXXFLAGS+=-frtti
.PATH: ${CRTSRC}/lib/ubsan
SRCS= ubsan_handlers_cxx.cc\
ubsan_type_hash.cc
.include <bsd.lib.mk>