From 2cb3d300ecd36558bf2201debe28808d12a97be2 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Mon, 21 Jan 2013 08:45:02 +0000 Subject: [PATCH] Port r172856: 'Include ubsan runtime even when building a shared library. We don't require executable to be linked with UBSan.' to Mac git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173014 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/ToolChains.cpp | 5 +---- lib/Driver/Tools.cpp | 6 +++--- test/Driver/darwin-sanitizer-ld.c | 5 +---- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index b4a3980dcc..5b7a6da277 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -318,10 +318,7 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, // Add Ubsan runtime library, if required. if (Sanitize.needsUbsanRt()) { - if (Args.hasArg(options::OPT_dynamiclib) || - Args.hasArg(options::OPT_bundle)) { - // Assume the binary will provide the Ubsan runtime. - } else if (isTargetIPhoneOS()) { + if (isTargetIPhoneOS()) { getDriver().Diag(diag::err_drv_clang_unsupported_per_platform) << "-fsanitize=undefined"; } else { diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 0cc9ea2537..f1d1c4b2b8 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -4296,11 +4296,11 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, Args.AddAllArgs(CmdArgs, options::OPT_L); SanitizerArgs Sanitize(getToolChain().getDriver(), Args); - // If we're building a dynamic lib with -fsanitize=address, or - // -fsanitize=undefined, unresolved symbols may appear. Mark all + // If we're building a dynamic lib with -fsanitize=address, + // unresolved symbols may appear. Mark all // of them as dynamic_lookup. Linking executables is handled in // lib/Driver/ToolChains.cpp. - if (Sanitize.needsAsanRt() || Sanitize.needsUbsanRt()) { + if (Sanitize.needsAsanRt()) { if (Args.hasArg(options::OPT_dynamiclib) || Args.hasArg(options::OPT_bundle)) { CmdArgs.push_back("-undefined"); diff --git a/test/Driver/darwin-sanitizer-ld.c b/test/Driver/darwin-sanitizer-ld.c index 2c66977d68..f57c588401 100644 --- a/test/Driver/darwin-sanitizer-ld.c +++ b/test/Driver/darwin-sanitizer-ld.c @@ -41,10 +41,7 @@ // CHECK-DYN-UBSAN: "{{.*}}ld{{(.exe)?}}" // CHECK-DYN-UBSAN: "-dylib" -// CHECK-DYN-UBSAN-NOT: libclang_rt.ubsan_osx.a -// CHECK-DYN-UBSAN: "-undefined" -// CHECK-DYN-UBSAN: "dynamic_lookup" -// CHECK-DYN-UBSAN-NOT: libclang_rt.ubsan_osx.a +// CHECK-DYN-UBSAN: libclang_rt.ubsan_osx.a // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ // RUN: -fPIC -shared -fsanitize=bounds %s -o %t.so 2>&1 \ -- 2.40.0