svn commit: r277146 - in head: etc/mtree lib lib/libclang_rt tools/build/mk

Dimitry Andric dim at FreeBSD.org
Tue Jan 13 19:54:49 UTC 2015


Author: dim
Date: Tue Jan 13 19:54:47 2015
New Revision: 277146
URL: https://svnweb.freebsd.org/changeset/base/277146

Log:
  Connect libclang_rt to the build, for specific architectures.  This
  contains the libraries for Address Sanitizer (asan), Undefined Behavior
  Sanitizer (ubsan) and Profile Guided Optimization.
  
  ASan is a fast memory error detector. It can detect the following types
  of bugs:
  
      Out-of-bounds accesses to heap, stack and globals
      Use-after-free
      Use-after-return (to some extent)
      Double-free, invalid free
      Memory leaks (experimental)
  
  Typical slowdown introduced by AddressSanitizer is 2x.
  
  UBSan is a fast and compatible undefined behavior checker. It enables a
  number of undefined behavior checks that have small runtime cost and no
  impact on address space layout or ABI.
  
  PLEASE NOTE: the sanitizers still have some rough edges on FreeBSD,
  particularly on i386.  These will hopefully be smoothed out in the
  coming time.
  
  Differential Revision: https://reviews.freebsd.org/D1505

Modified:
  head/etc/mtree/BSD.debug.dist
  head/etc/mtree/BSD.usr.dist
  head/lib/Makefile
  head/lib/libclang_rt/Makefile
  head/tools/build/mk/OptionalObsoleteFiles.inc

Modified: head/etc/mtree/BSD.debug.dist
==============================================================================
--- head/etc/mtree/BSD.debug.dist	Tue Jan 13 19:38:43 2015	(r277145)
+++ head/etc/mtree/BSD.debug.dist	Tue Jan 13 19:54:47 2015	(r277146)
@@ -24,6 +24,14 @@
             games
             ..
             lib
+                clang
+                    3.5.0
+                        lib
+                            freebsd
+                            ..
+                        ..
+                    ..
+                ..
                 engines
                 ..
                 i18n

Modified: head/etc/mtree/BSD.usr.dist
==============================================================================
--- head/etc/mtree/BSD.usr.dist	Tue Jan 13 19:38:43 2015	(r277145)
+++ head/etc/mtree/BSD.usr.dist	Tue Jan 13 19:54:47 2015	(r277146)
@@ -14,6 +14,14 @@
     lib
         aout
         ..
+        clang
+            3.5.0
+                lib
+                    freebsd
+                    ..
+                ..
+            ..
+        ..
         compat
             aout
             ..

Modified: head/lib/Makefile
==============================================================================
--- head/lib/Makefile	Tue Jan 13 19:38:43 2015	(r277145)
+++ head/lib/Makefile	Tue Jan 13 19:54:47 2015	(r277146)
@@ -13,6 +13,7 @@ SUBDIR_ORDERED=	${_csu} \
 	libc \
 	libc_nonshared \
 	libcompiler_rt \
+	${_libclang_rt} \
 	${_libcplusplus} \
 	${_libcxxrt} \
 	libelf \
@@ -211,6 +212,15 @@ _libcom_err= libcom_err
 _libldns=	libldns
 .endif
 
+# The libraries under libclang_rt can only be built by clang, and only make
+# sense to build when clang is enabled at all.  Furthermore, they can only be
+# built for certain architectures.
+.if ${MK_CLANG} != "no" && ${COMPILER_TYPE} == "clang" && \
+    (${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" || \
+    (${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH} != "armeb"))
+_libclang_rt=	libclang_rt
+.endif
+
 .if ${MK_LIBCPLUSPLUS} != "no"
 _libcxxrt=	libcxxrt
 _libcplusplus=	libc++

Modified: head/lib/libclang_rt/Makefile
==============================================================================
--- head/lib/libclang_rt/Makefile	Tue Jan 13 19:38:43 2015	(r277145)
+++ head/lib/libclang_rt/Makefile	Tue Jan 13 19:54:47 2015	(r277146)
@@ -1,10 +1,18 @@
 # $FreeBSD$
 
-SUBDIR=	asan\
-	asan_cxx\
-	profile\
-	san\
-	ubsan\
-	ubsan_cxx
+.include <src.opts.mk>
+
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
+SUBDIR+= asan\
+	 asan_cxx\
+	 san\
+	 ubsan\
+	 ubsan_cxx
+.endif
+
+.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" || \
+    (${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH} != "armeb")
+SUBDIR+= profile
+.endif
 
 .include <bsd.subdir.mk>

Modified: head/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- head/tools/build/mk/OptionalObsoleteFiles.inc	Tue Jan 13 19:38:43 2015	(r277145)
+++ head/tools/build/mk/OptionalObsoleteFiles.inc	Tue Jan 13 19:54:47 2015	(r277146)
@@ -527,6 +527,23 @@ OLD_FILES+=usr/include/clang/3.5.0/xmmin
 OLD_FILES+=usr/include/clang/3.5.0/xopintrin.h
 OLD_DIRS+=usr/include/clang/3.5.0
 OLD_DIRS+=usr/include/clang
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-i386.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-x86_64.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-arm.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-i386.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-x86_64.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-i386.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-x86_64.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-i386.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-x86_64.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a
+OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a
+OLD_DIRS+=usr/lib/clang/3.5.0/lib/freebsd
+OLD_DIRS+=usr/lib/clang/3.5.0/lib
+OLD_DIRS+=usr/lib/clang/3.5.0
+OLD_DIRS+=usr/lib/clang
 OLD_FILES+=usr/share/doc/llvm/clang/LICENSE.TXT
 OLD_DIRS+=usr/share/doc/llvm/clang
 OLD_FILES+=usr/share/doc/llvm/COPYRIGHT.regex


More information about the svn-src-all mailing list