[cfe-commits] r168428 - in /cfe/trunk: lib/Driver/ToolChains.cpp lib/Driver/ToolChains.h test/Driver/darwin-sanitizer-ld.c

Alexey Samsonov samsonov at google.com
Sun Nov 25 05:41:33 PST 2012


r168562. Sorry for the breakage!

On Sun, Nov 25, 2012 at 4:05 PM, Bill Wendling <wendling at apple.com> wrote:

> Ping! Could you fix this please? It's been failing for days now.
>
> -bw
>
> On Nov 23, 2012, at 10:24 AM, David Blaikie <dblaikie at gmail.com> wrote:
>
> > On Wed, Nov 21, 2012 at 6:17 AM, Alexey Samsonov <samsonov at google.com>
> wrote:
> >> Author: samsonov
> >> Date: Wed Nov 21 08:17:42 2012
> >> New Revision: 168428
> >>
> >> URL: http://llvm.org/viewvc/llvm-project?rev=168428&view=rev
> >> Log:
> >> [Sanitizer] force linking with static sanitizer runtimes on Darwin even
> if they are not found in resource directory. Add test checking sanitizer
> linker flags on Darwin.
> >>
> >> Added:
> >>    cfe/trunk/test/Driver/darwin-sanitizer-ld.c
> >> Modified:
> >>    cfe/trunk/lib/Driver/ToolChains.cpp
> >>    cfe/trunk/lib/Driver/ToolChains.h
> >>
> >> Modified: cfe/trunk/lib/Driver/ToolChains.cpp
> >> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=168428&r1=168427&r2=168428&view=diff
> >>
> ==============================================================================
> >> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)
> >> +++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Nov 21 08:17:42 2012
> >> @@ -261,16 +261,18 @@
> >>
> >> void DarwinClang::AddLinkRuntimeLib(const ArgList &Args,
> >>                                     ArgStringList &CmdArgs,
> >> -                                    const char *DarwinStaticLib) const
> {
> >> +                                    const char *DarwinStaticLib,
> >> +                                    bool AlwaysLink) const {
> >>   llvm::sys::Path P(getDriver().ResourceDir);
> >>   P.appendComponent("lib");
> >>   P.appendComponent("darwin");
> >>   P.appendComponent(DarwinStaticLib);
> >>
> >>   // For now, allow missing resource libraries to support developers
> who may
> >> -  // not have compiler-rt checked out or integrated into their build.
> >> +  // not have compiler-rt checked out or integrated into their build
> (unless
> >> +  // we explicitly force linking with this library).
> >>   bool Exists;
> >> -  if (!llvm::sys::fs::exists(P.str(), Exists) && Exists)
> >> +  if (AlwaysLink || (!llvm::sys::fs::exists(P.str(), Exists) &&
> Exists))
> >>     CmdArgs.push_back(Args.MakeArgString(P.str()));
> >> }
> >>
> >> @@ -326,7 +328,7 @@
> >>       getDriver().Diag(diag::err_drv_clang_unsupported_per_platform)
> >>         << "-fsanitize=undefined";
> >>     } else {
> >> -      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.ubsan_osx.a");
> >> +      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.ubsan_osx.a",
> true);
> >>
> >>       // The Ubsan runtime library requires C++.
> >>       AddCXXStdlibLibArgs(Args, CmdArgs);
> >> @@ -343,7 +345,7 @@
> >>       getDriver().Diag(diag::err_drv_clang_unsupported_per_platform)
> >>         << "-fsanitize=address";
> >>     } else {
> >> -      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.asan_osx.a");
> >> +      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.asan_osx.a", true);
> >>
> >>       // The ASAN runtime library requires C++ and CoreFoundation.
> >>       AddCXXStdlibLibArgs(Args, CmdArgs);
> >>
> >> Modified: cfe/trunk/lib/Driver/ToolChains.h
> >> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=168428&r1=168427&r2=168428&view=diff
> >>
> ==============================================================================
> >> --- cfe/trunk/lib/Driver/ToolChains.h (original)
> >> +++ cfe/trunk/lib/Driver/ToolChains.h Wed Nov 21 08:17:42 2012
> >> @@ -370,9 +370,10 @@
> >>
> >>   virtual void AddLinkRuntimeLibArgs(const ArgList &Args,
> >>                                      ArgStringList &CmdArgs) const;
> >> -  void AddLinkRuntimeLib(const ArgList &Args, ArgStringList &CmdArgs,
> >> -                         const char *DarwinStaticLib) const;
> >> -
> >> +  void AddLinkRuntimeLib(const ArgList &Args, ArgStringList &CmdArgs,
> >> +                         const char *DarwinStaticLib,
> >> +                         bool AlwaysLink = false) const;
> >> +
> >>   virtual void AddCXXStdlibLibArgs(const ArgList &Args,
> >>                                    ArgStringList &CmdArgs) const;
> >>
> >>
> >> Added: cfe/trunk/test/Driver/darwin-sanitizer-ld.c
> >> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-sanitizer-ld.c?rev=168428&view=auto
> >>
> ==============================================================================
> >> --- cfe/trunk/test/Driver/darwin-sanitizer-ld.c (added)
> >> +++ cfe/trunk/test/Driver/darwin-sanitizer-ld.c Wed Nov 21 08:17:42 2012
> >> @@ -0,0 +1,40 @@
> >> +// Test sanitizer link flags on Darwin.
> >> +
> >> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
> >> +// RUN:   -fsanitize=address %s -o %t.o 2>&1 \
> >> +// RUN:   | FileCheck --check-prefix=CHECK-ASAN %s
> >> +
> >> +// CHECK-ASAN: "{{.*}}ld"
> >> +// CHECK-ASAN: libclang_rt.asan_osx.a"
> >> +// CHECK-ASAN: "-lstdc++"
> >
> > This check fails on Snow Leopard, by the looks of it
> >
> >
> http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb/builds/37/steps/check-all/logs/darwin-sanitizer-ld.c
> >
> > Full output:
> >
> > macmini4:build buildslave$
> > /Users/buildslave/build/Debug+Asserts/bin/clang
> > -no-canonical-prefixes -### -target x86_64-darwin
> > -fsanitize=address
> > /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c
> > -o
> /Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o
> > 2>&1    | ./Debug+Asserts/bin/FileCheck --check-prefix=CHECK-ASAN
> > /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c
> >
> /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c:9:16:
> > error: expected string not found in input
> > // CHECK-ASAN: "-lstdc++"
> >               ^
> > <stdin>:5:319: note: scanning from here
> > "/usr/bin/ld" "-demangle" "-dynamic" "-arch" "x86_64"
> > "-macosx_version_min" "10.4.0" "-o"
> >
> "/Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o"
> > "-lcrt1.o" "/tmp/darwin-sanitizer-ld-1EuvSw.o"
> >
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3/lib/darwin/libclang_rt.asan_osx.a"
> > "/usr/lib/libstdc++.6.dylib" "-framework" "CoreFoundation" "-lSystem"
> > "-lgcc_s.10.4"
> >
> >
> >
> >
> >                                  ^
> > <stdin>:5:329: note: possible intended match here
> > "/usr/bin/ld" "-demangle" "-dynamic" "-arch" "x86_64"
> > "-macosx_version_min" "10.4.0" "-o"
> >
> "/Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o"
> > "-lcrt1.o" "/tmp/darwin-sanitizer-ld-1EuvSw.o"
> >
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3/lib/darwin/libclang_rt.asan_osx.a"
> > "/usr/lib/libstdc++.6.dylib" "-framework" "CoreFoundation" "-lSystem"
> > "-lgcc_s.10.4"
> >
> >
> >
> >
> >                                            ^
> > macmini4:build buildslave$
> > /Users/buildslave/build/Debug+Asserts/bin/clang
> > -no-canonical-prefixes -### -target x86_64-darwin
> > -fsanitize=address
> > /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c
> > -o
> /Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o
> > 2>&1
> > clang version 3.3 (trunk 168521)
> > Target: x86_64--darwin
> > Thread model: posix
> > "/Users/buildslave/build/Debug+Asserts/bin/clang" "-cc1" "-triple"
> > "x86_64--macosx10.4.0" "-emit-obj" "-mrelax-all" "-disable-free"
> > "-main-file-name" "darwin-sanitizer-ld.c" "-mrelocation-model" "pic"
> > "-pic-level" "2" "-mdisable-fp-elim" "-masm-verbose" "-munwind-tables"
> > "-target-cpu" "core2" "-target-linker-version" "127.2.1"
> > "-resource-dir"
> > "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3"
> > "-fmodule-cache-path" "/var/tmp/clang-module-cache"
> > "-fdebug-compilation-dir" "/Users/buildslave/build" "-ferror-limit"
> > "19" "-fmessage-length" "238" "-fsanitize=address" "-mstackrealign"
> > "-fblocks" "-fblocks-runtime-optional" "-fobjc-runtime=macosx-10.4.0"
> > "-fobjc-dispatch-method=non-legacy"
> > "-fobjc-default-synthesize-properties"
> > "-fencode-extended-block-signature" "-fdiagnostics-show-option"
> > "-fcolor-diagnostics" "-o" "/tmp/darwin-sanitizer-ld-WCSNj1.o" "-x"
> > "c"
> "/Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c"
> > "/usr/bin/ld" "-demangle" "-dynamic" "-arch" "x86_64"
> > "-macosx_version_min" "10.4.0" "-o"
> >
> "/Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o"
> > "-lcrt1.o" "/tmp/darwin-sanitizer-ld-WCSNj1.o"
> >
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3/lib/darwin/libclang_rt.asan_osx.a"
> > "/usr/lib/libstdc++.6.dylib" "-framework" "CoreFoundation" "-lSystem"
> > "-lgcc_s.10.4"
> > macmini4:build buildslave$
> >
> > Is there something we could do to tidy this up? (either generalize the
> > CHECKs or, if ASan doesn't support Snow Leopard, XFAIL the test there
> > (I'm not sure how to detect that state in the REQUIRES lines, perhaps
> > we'd need to plumb through another property)).
> >
> > Any other ideas? (I'm hoping to get this cleaned up so we can get the
> > bot back to green - it's already hiding/noisy-ing up some debug info
> > regressions also being reported by the bot)
> >
> >> +// CHECK-ASAN: "-framework" "CoreFoundation"
> >> +
> >> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
> >> +// RUN:   -fPIC -shared -fsanitize=address %s -o %t.so 2>&1 \
> >> +// RUN:   | FileCheck --check-prefix=CHECK-DYN-ASAN %s
> >> +
> >> +// CHECK-DYN-ASAN: "{{.*}}ld"
> >> +// CHECK-DYN-ASAN: "-dylib"
> >> +// CHECK-DYN-ASAN-NOT: libclang_rt.asan_osx.a
> >> +// CHECK-DYN-ASAN: "-undefined"
> >> +// CHECK-DYN-ASAN: "dynamic_lookup"
> >> +// CHECK-DYN-ASAN-NOT: libclang_rt.asan_osx.a
> >> +
> >> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
> >> +// RUN:   -fsanitize=undefined %s -o %t.o 2>&1 \
> >> +// RUN:   | FileCheck --check-prefix=CHECK-UBSAN %s
> >> +
> >> +// CHECK-UBSAN: "{{.*}}ld"
> >> +// CHECK-UBSAN: libclang_rt.ubsan_osx.a"
> >> +// CHECK-UBSAN: "-lstdc++"
> >> +
> >> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \
> >> +// RUN:   -fPIC -shared -fsanitize=undefined %s -o %t.so 2>&1 \
> >> +// RUN:   | FileCheck --check-prefix=CHECK-DYN-UBSAN %s
> >> +
> >> +// CHECK-DYN-UBSAN: "{{.*}}ld"
> >> +// 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
> >>
> >>
> >> _______________________________________________
> >> cfe-commits mailing list
> >> cfe-commits at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
>


-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121125/a3743d62/attachment.html>


More information about the cfe-commits mailing list