forked from OSchip/llvm-project
Revert r193022 and r193048. They broke the ubsan test suite.
llvm-svn: 193057
This commit is contained in:
parent
e11bd86a98
commit
f7ef3fd810
|
@ -1705,15 +1705,13 @@ static void addSanitizerRTLinkFlagsLinux(
|
|||
// Sanitizer runtime may need to come before -lstdc++ (or -lc++, libstdc++.a,
|
||||
// etc.) so that the linker picks custom versions of the global 'operator
|
||||
// new' and 'operator delete' symbols. We take the extreme (but simple)
|
||||
// strategy of inserting it at the front of the link command. If we're
|
||||
// responsible for exporting the symbols then it also needs to be forced to
|
||||
// end up in the executable, so wrap it in whole-archive.
|
||||
// strategy of inserting it at the front of the link command. It also
|
||||
// needs to be forced to end up in the executable, so wrap it in
|
||||
// whole-archive.
|
||||
SmallVector<const char *, 3> LibSanitizerArgs;
|
||||
if (ExportSymbols)
|
||||
LibSanitizerArgs.push_back("-whole-archive");
|
||||
LibSanitizerArgs.push_back("-whole-archive");
|
||||
LibSanitizerArgs.push_back(Args.MakeArgString(LibSanitizer));
|
||||
if (ExportSymbols)
|
||||
LibSanitizerArgs.push_back("-no-whole-archive");
|
||||
LibSanitizerArgs.push_back("-no-whole-archive");
|
||||
|
||||
CmdArgs.insert(BeforeLibStdCXX ? CmdArgs.begin() : CmdArgs.end(),
|
||||
LibSanitizerArgs.begin(), LibSanitizerArgs.end());
|
||||
|
@ -1779,18 +1777,17 @@ static void addLsanRTLinux(const ToolChain &TC, const ArgList &Args,
|
|||
static void addUbsanRTLinux(const ToolChain &TC, const ArgList &Args,
|
||||
ArgStringList &CmdArgs, bool IsCXX,
|
||||
bool HasOtherSanitizerRt) {
|
||||
// Only include the bits of the runtime which need a C++ ABI library if
|
||||
// we're linking in C++ mode.
|
||||
if (IsCXX)
|
||||
addSanitizerRTLinkFlagsLinux(TC, Args, CmdArgs, "ubsan_cxx", false, false);
|
||||
|
||||
// Now insert the common ubsan bits. ubsan_cxx depends on them.
|
||||
addSanitizerRTLinkFlagsLinux(TC, Args, CmdArgs, "ubsan", false, false);
|
||||
|
||||
// Need a copy of sanitizer_common. This could come from another sanitizer
|
||||
// runtime; if we're not including one, include our own copy.
|
||||
if (!HasOtherSanitizerRt)
|
||||
addSanitizerRTLinkFlagsLinux(TC, Args, CmdArgs, "san", false, false);
|
||||
addSanitizerRTLinkFlagsLinux(TC, Args, CmdArgs, "san", true, false);
|
||||
|
||||
addSanitizerRTLinkFlagsLinux(TC, Args, CmdArgs, "ubsan", false);
|
||||
|
||||
// Only include the bits of the runtime which need a C++ ABI library if
|
||||
// we're linking in C++ mode.
|
||||
if (IsCXX)
|
||||
addSanitizerRTLinkFlagsLinux(TC, Args, CmdArgs, "ubsan_cxx", false);
|
||||
}
|
||||
|
||||
static void addDfsanRTLinux(const ToolChain &TC, const ArgList &Args,
|
||||
|
|
|
@ -100,10 +100,10 @@
|
|||
// RUN: | FileCheck --check-prefix=CHECK-UBSAN-LINUX %s
|
||||
// CHECK-UBSAN-LINUX: "{{.*}}ld{{(.exe)?}}"
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX: "{{.*}}libclang_rt.ubsan-i386.a"
|
||||
// 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.asan
|
||||
// CHECK-UBSAN-LINUX: "{{.*}}libclang_rt.san-i386.a"
|
||||
// CHECK-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
|
||||
// CHECK-UBSAN-LINUX: "-lpthread"
|
||||
// CHECK-UBSAN-LINUX-NOT: "-lstdc++"
|
||||
|
||||
|
@ -113,11 +113,10 @@
|
|||
// 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: "{{.*}}libclang_rt.ubsan_cxx-i386.a"
|
||||
// CHECK-UBSAN-LINUX-CXX: "{{.*}}libclang_rt.ubsan-i386.a"
|
||||
// CHECK-UBSAN-LINUX-CXX-NOT: libclang_rt.asan
|
||||
// CHECK-UBSAN-LINUX-CXX: "{{.*}}libclang_rt.san-i386.a"
|
||||
// CHECK-UBSAN-LINUX-CXX: "-whole-archive" "{{.*}}libclang_rt.san-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: "-whole-archive" "{{.*}}libclang_rt.ubsan_cxx-i386.a" "-no-whole-archive"
|
||||
// CHECK-UBSAN-LINUX-CXX: "-lpthread"
|
||||
// CHECK-UBSAN-LINUX-CXX: "-lstdc++"
|
||||
|
||||
|
@ -129,7 +128,7 @@
|
|||
// 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: "{{.*}}libclang_rt.ubsan-i386.a"
|
||||
// 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: "-lpthread"
|
||||
// CHECK-ASAN-UBSAN-LINUX-NOT: "-lstdc++"
|
||||
|
@ -142,8 +141,8 @@
|
|||
// 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: "{{.*}}libclang_rt.ubsan_cxx-i386.a"
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "{{.*}}libclang_rt.ubsan-i386.a"
|
||||
// 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: "-lpthread"
|
||||
// CHECK-ASAN-UBSAN-LINUX-CXX: "-lstdc++"
|
||||
|
||||
|
@ -174,7 +173,7 @@
|
|||
// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
|
||||
// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.lsan-x86_64.a" "-no-whole-archive"
|
||||
// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.san
|
||||
// CHECK-LSAN-UBSAN-LINUX: "{{.*}}libclang_rt.ubsan-x86_64.a"
|
||||
// CHECK-LSAN-UBSAN-LINUX: "-whole-archive" "{{.*}}libclang_rt.ubsan-x86_64.a" "-no-whole-archive"
|
||||
// CHECK-LSAN-UBSAN-LINUX-NOT: libclang_rt.ubsan_cxx
|
||||
// CHECK-LSAN-UBSAN-LINUX: "-lpthread"
|
||||
// CHECK-LSAN-UBSAN-LINUX-NOT: "-lstdc++"
|
||||
|
|
Loading…
Reference in New Issue