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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to