[Msan] Fix the backtrace.cc tests to build and pass on FreeBSD
authorViktor Kutuzov <vkutuzov@accesssoftek.com>
Fri, 24 Apr 2015 07:52:47 +0000 (07:52 +0000)
committerViktor Kutuzov <vkutuzov@accesssoftek.com>
Fri, 24 Apr 2015 07:52:47 +0000 (07:52 +0000)
Differential Revision: http://reviews.llvm.org/D9221

llvm-svn: 235703

compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
compiler-rt/test/msan/backtrace.cc
compiler-rt/test/msan/lit.cfg

index 438ecba..bdd9af5 100644 (file)
   SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID
 #define SANITIZER_INTERCEPT_SIGPENDING SI_NOT_WINDOWS
 #define SANITIZER_INTERCEPT_SIGPROCMASK SI_NOT_WINDOWS
-#define SANITIZER_INTERCEPT_BACKTRACE SI_LINUX_NOT_ANDROID
+#define SANITIZER_INTERCEPT_BACKTRACE SI_FREEBSD || SI_LINUX_NOT_ANDROID
 #define SANITIZER_INTERCEPT_GETMNTENT SI_LINUX
 #define SANITIZER_INTERCEPT_GETMNTENT_R SI_LINUX_NOT_ANDROID
 #define SANITIZER_INTERCEPT_STATFS SI_FREEBSD || SI_MAC || SI_LINUX_NOT_ANDROID
index b6cfcbe..9cb883c 100644 (file)
@@ -17,7 +17,7 @@ void f() {
   char **s = backtrace_symbols(buf, sz);
   assert(s > 0);
   for (int i = 0; i < sz; ++i)
-    printf("%d\n", strlen(s[i]));
+    printf("%d\n", (int)strlen(s[i]));
 }
 
 int main(void) {
index f425e25..011ccd2 100644 (file)
@@ -14,6 +14,9 @@ clang_msan_cflags = ["-fsanitize=memory",
                      "-fno-omit-frame-pointer",
                      "-fno-optimize-sibling-calls",
                      "-m64"] + config.debug_info_flags
+# Some Msan tests leverage backtrace() which requires libexecinfo on FreeBSD.
+if config.host_os == 'FreeBSD':
+  clang_msan_cflags += ["-lexecinfo"]
 clang_msan_cxxflags = config.cxx_mode_flags + clang_msan_cflags
 
 def build_invocation(compile_flags):