[PATCH] D28151: Ensure that only one compiler-rt component is created for lsan

Francis Ricci via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 1 18:22:28 PST 2017


fjricci updated this revision to Diff 82793.
fjricci updated the summary for this revision.
fjricci added a comment.

Update to use individual symbols names


https://reviews.llvm.org/D28151

Files:
  cmake/config-ix.cmake
  lib/lsan/CMakeLists.txt
  lib/lsan/lsan_allocator.cc
  lib/lsan/lsan_common.cc


Index: lib/lsan/lsan_common.cc
===================================================================
--- lib/lsan/lsan_common.cc
+++ lib/lsan/lsan_common.cc
@@ -758,5 +758,10 @@
 int __lsan_is_turned_off() {
   return 0;
 }
+
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+const char *__lsan_default_suppressions() {
+  return "";
+}
 #endif
 } // extern "C"
Index: lib/lsan/lsan_allocator.cc
===================================================================
--- lib/lsan/lsan_allocator.cc
+++ lib/lsan/lsan_allocator.cc
@@ -258,4 +258,17 @@
 uptr __sanitizer_get_allocated_size(const void *p) {
   return GetMallocUsableSize(p);
 }
+
+#if !SANITIZER_SUPPORTS_WEAK_HOOKS
+// Provide default (no-op) implementation of malloc hooks.
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+void __sanitizer_malloc_hook(void *ptr, uptr size) {
+  (void)ptr;
+  (void)size;
+}
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+void __sanitizer_free_hook(void *ptr) {
+  (void)ptr;
+}
+#endif
 } // extern "C"
Index: lib/lsan/CMakeLists.txt
===================================================================
--- lib/lsan/CMakeLists.txt
+++ lib/lsan/CMakeLists.txt
@@ -23,9 +23,8 @@
     CFLAGS ${LSAN_CFLAGS})
 
 if(COMPILER_RT_HAS_LSAN)
+  add_compiler_rt_component(lsan)
   foreach(arch ${LSAN_SUPPORTED_ARCH})
-    add_compiler_rt_component(lsan)
-    
     add_compiler_rt_runtime(clang_rt.lsan
       STATIC
       ARCHS ${arch}
Index: cmake/config-ix.cmake
===================================================================
--- cmake/config-ix.cmake
+++ cmake/config-ix.cmake
@@ -245,6 +245,24 @@
     -stdlib=libc++
     -lc++
     -lc++abi)
+
+  set(DARWIN_WEAK_SYMBOLS
+      ___asan_default_options
+      ___asan_default_suppressions
+      ___asan_on_error
+      ___lsan_default_suppressions
+      ___lsan_is_turned_off
+      ___sanitizer_free_hook
+      ___sanitizer_malloc_hook
+      ___sanitizer_symbolize_code
+      ___sanitizer_symbolize_data
+      ___sanitizer_symbolize_demangle
+      ___sanitizer_symbolize_flush
+      ___ubsan_default_options)
+
+  foreach(SYMBOL ${DARWIN_WEAK_SYMBOLS})
+    set(DARWIN_COMMON_LINKFLAGS ${DARWIN_COMMON_LINKFLAGS} -Wl,-U,${SYMBOL})
+  endforeach()
   
   check_linker_flag("-fapplication-extension" COMPILER_RT_HAS_APP_EXTENSION)
   if(COMPILER_RT_HAS_APP_EXTENSION)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28151.82793.patch
Type: text/x-patch
Size: 2345 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170102/3bf841f2/attachment.bin>


More information about the llvm-commits mailing list