[UBSan] Introduce "ubsan_standalone" library (Clang part).
Get rid of "libclang_rt.san" library that used to contain sanitizer_common pieces required by UBSan if it's used in a standalone mode. Instead, build two variants of UBSan runtime: "ubsan" and "ubsan_standalone" (same for "ubsan_cxx" and "ubsan_standalone_cxx"). Later "ubsan" and "ubsan_cxx" libraries will go away, as they will embedded it into corresponding ASan runtimes. llvm-svn: 233010
This commit is contained in:
parent
9ea37d9d04
commit
3ae177cdb3
|
@ -2283,13 +2283,16 @@ collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
|
|||
StaticRuntimes.push_back("tsan");
|
||||
// WARNING: UBSan should always go last.
|
||||
if (SanArgs.needsUbsanRt()) {
|
||||
// If UBSan is not combined with another sanitizer, we need to pull in
|
||||
// sanitizer_common explicitly.
|
||||
if (StaticRuntimes.empty())
|
||||
HelperStaticRuntimes.push_back("san");
|
||||
StaticRuntimes.push_back("ubsan");
|
||||
if (SanArgs.linkCXXRuntimes())
|
||||
StaticRuntimes.push_back("ubsan_cxx");
|
||||
// Check if UBSan is combined with another sanitizers.
|
||||
if (StaticRuntimes.empty()) {
|
||||
StaticRuntimes.push_back("ubsan_standalone");
|
||||
if (SanArgs.linkCXXRuntimes())
|
||||
StaticRuntimes.push_back("ubsan_standalone_cxx");
|
||||
} else {
|
||||
StaticRuntimes.push_back("ubsan");
|
||||
if (SanArgs.linkCXXRuntimes())
|
||||
StaticRuntimes.push_back("ubsan_cxx");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -191,13 +191,10 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
|
||||
// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
|
||||
// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_standalone_cxx
|
||||
// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan_standalone-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
|
||||
// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_standalone_cxx
|
||||
// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
|
||||
// CHECK-UBSAN-LINUX: "-lpthread"
|
||||
|
||||
|
@ -206,7 +203,7 @@
|
|||
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-LINK-CXX %s
|
||||
// CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"
|
||||
// CHECK-UBSAN-LINUX-LINK-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-LINK-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-LINK-CXX-NOT: "-lstdc++"
|
||||
|
||||
// RUN: %clangxx -fsanitize=undefined %s -### -o %t.o 2>&1 \
|
||||
|
@ -216,15 +213,9 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX-CXX %s
|
||||
// CHECK-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_standalone-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.ubsan-i386.a.syms"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "--dynamic-list={{.*}}libclang_rt.ubsan_cxx-i386.a.syms"
|
||||
// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_standalone_cxx-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
|
@ -235,9 +226,7 @@
|
|||
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX %s
|
||||
// CHECK-ASAN-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
|
||||
// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
|
||||
// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.san
|
||||
// CHECK-ASAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
|
||||
// CHECK-ASAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
|
||||
// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
|
||||
|
@ -248,9 +237,7 @@
|
|||
// RUN: --sysroot=%S/Inputs/basic_linux_tree \
|
||||
// RUN: | FileCheck --check-prefix=CHECK-ASAN-UBSAN-LINUX-CXX %s
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.asan-i386.a" "-no-whole-archive"
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX-NOT: libclang_rt.san
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
|
||||
|
@ -265,9 +252,7 @@
|
|||
// CHECK-UBSAN-LINUX-SHARED: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic
|
||||
// CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list
|
||||
// CHECK-UBSAN-LINUX-SHARED-NOT: libclang_rt.ubsan-i386.a"
|
||||
// CHECK-UBSAN-LINUX-SHARED-NOT: --export-dynamic
|
||||
// CHECK-UBSAN-LINUX-SHARED-NOT: --dynamic-list
|
||||
// CHECK-UBSAN-LINUX-SHARED-NOT: libclang_rt.ubsan
|
||||
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target x86_64-unknown-linux -fsanitize=leak \
|
||||
|
|
Loading…
Reference in New Issue