<div style="font-family: arial, helvetica, sans-serif; font-size: 10pt">r168562. Sorry for the breakage!<div><br><div class="gmail_quote">On Sun, Nov 25, 2012 at 4:05 PM, Bill Wendling <span dir="ltr"><<a href="mailto:wendling@apple.com" target="_blank">wendling@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ping! Could you fix this please? It's been failing for days now.<br>
<span class="HOEnZb"><font color="#888888"><br>
-bw<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Nov 23, 2012, at 10:24 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
<br>
> On Wed, Nov 21, 2012 at 6:17 AM, Alexey Samsonov <<a href="mailto:samsonov@google.com">samsonov@google.com</a>> wrote:<br>
>> Author: samsonov<br>
>> Date: Wed Nov 21 08:17:42 2012<br>
>> New Revision: <a href="tel:168428" value="+49168428">168428</a><br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=168428&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=168428&view=rev</a><br>
>> Log:<br>
>> [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.<br>
>><br>
>> Added:<br>
>>    cfe/trunk/test/Driver/darwin-sanitizer-ld.c<br>
>> Modified:<br>
>>    cfe/trunk/lib/Driver/ToolChains.cpp<br>
>>    cfe/trunk/lib/Driver/ToolChains.h<br>
>><br>
>> Modified: cfe/trunk/lib/Driver/ToolChains.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=168428&r1=168427&r2=168428&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=168428&r1=168427&r2=168428&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/lib/Driver/ToolChains.cpp (original)<br>
>> +++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Nov 21 08:17:42 2012<br>
>> @@ -261,16 +261,18 @@<br>
>><br>
>> void DarwinClang::AddLinkRuntimeLib(const ArgList &Args,<br>
>>                                     ArgStringList &CmdArgs,<br>
>> -                                    const char *DarwinStaticLib) const {<br>
>> +                                    const char *DarwinStaticLib,<br>
>> +                                    bool AlwaysLink) const {<br>
>>   llvm::sys::Path P(getDriver().ResourceDir);<br>
>>   P.appendComponent("lib");<br>
>>   P.appendComponent("darwin");<br>
>>   P.appendComponent(DarwinStaticLib);<br>
>><br>
>>   // For now, allow missing resource libraries to support developers who may<br>
>> -  // not have compiler-rt checked out or integrated into their build.<br>
>> +  // not have compiler-rt checked out or integrated into their build (unless<br>
>> +  // we explicitly force linking with this library).<br>
>>   bool Exists;<br>
>> -  if (!llvm::sys::fs::exists(P.str(), Exists) && Exists)<br>
>> +  if (AlwaysLink || (!llvm::sys::fs::exists(P.str(), Exists) && Exists))<br>
>>     CmdArgs.push_back(Args.MakeArgString(P.str()));<br>
>> }<br>
>><br>
>> @@ -326,7 +328,7 @@<br>
>>       getDriver().Diag(diag::err_drv_clang_unsupported_per_platform)<br>
>>         << "-fsanitize=undefined";<br>
>>     } else {<br>
>> -      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.ubsan_osx.a");<br>
>> +      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.ubsan_osx.a", true);<br>
>><br>
>>       // The Ubsan runtime library requires C++.<br>
>>       AddCXXStdlibLibArgs(Args, CmdArgs);<br>
>> @@ -343,7 +345,7 @@<br>
>>       getDriver().Diag(diag::err_drv_clang_unsupported_per_platform)<br>
>>         << "-fsanitize=address";<br>
>>     } else {<br>
>> -      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.asan_osx.a");<br>
>> +      AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.asan_osx.a", true);<br>
>><br>
>>       // The ASAN runtime library requires C++ and CoreFoundation.<br>
>>       AddCXXStdlibLibArgs(Args, CmdArgs);<br>
>><br>
>> Modified: cfe/trunk/lib/Driver/ToolChains.h<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=168428&r1=168427&r2=168428&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=168428&r1=168427&r2=168428&view=diff</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/lib/Driver/ToolChains.h (original)<br>
>> +++ cfe/trunk/lib/Driver/ToolChains.h Wed Nov 21 08:17:42 2012<br>
>> @@ -370,9 +370,10 @@<br>
>><br>
>>   virtual void AddLinkRuntimeLibArgs(const ArgList &Args,<br>
>>                                      ArgStringList &CmdArgs) const;<br>
>> -  void AddLinkRuntimeLib(const ArgList &Args, ArgStringList &CmdArgs,<br>
>> -                         const char *DarwinStaticLib) const;<br>
>> -<br>
>> +  void AddLinkRuntimeLib(const ArgList &Args, ArgStringList &CmdArgs,<br>
>> +                         const char *DarwinStaticLib,<br>
>> +                         bool AlwaysLink = false) const;<br>
>> +<br>
>>   virtual void AddCXXStdlibLibArgs(const ArgList &Args,<br>
>>                                    ArgStringList &CmdArgs) const;<br>
>><br>
>><br>
>> Added: cfe/trunk/test/Driver/darwin-sanitizer-ld.c<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-sanitizer-ld.c?rev=168428&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-sanitizer-ld.c?rev=168428&view=auto</a><br>

>> ==============================================================================<br>
>> --- cfe/trunk/test/Driver/darwin-sanitizer-ld.c (added)<br>
>> +++ cfe/trunk/test/Driver/darwin-sanitizer-ld.c Wed Nov 21 08:17:42 2012<br>
>> @@ -0,0 +1,40 @@<br>
>> +// Test sanitizer link flags on Darwin.<br>
>> +<br>
>> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \<br>
>> +// RUN:   -fsanitize=address %s -o %t.o 2>&1 \<br>
>> +// RUN:   | FileCheck --check-prefix=CHECK-ASAN %s<br>
>> +<br>
>> +// CHECK-ASAN: "{{.*}}ld"<br>
>> +// CHECK-ASAN: libclang_rt.asan_osx.a"<br>
>> +// CHECK-ASAN: "-lstdc++"<br>
><br>
> This check fails on Snow Leopard, by the looks of it<br>
><br>
> <a href="http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb/builds/37/steps/check-all/logs/darwin-sanitizer-ld.c" target="_blank">http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb/builds/37/steps/check-all/logs/darwin-sanitizer-ld.c</a><br>

><br>
> Full output:<br>
><br>
> macmini4:build buildslave$<br>
> /Users/buildslave/build/Debug+Asserts/bin/clang<br>
> -no-canonical-prefixes -### -target x86_64-darwin<br>
> -fsanitize=address<br>
> /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c<br>
> -o /Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o<br>
> 2>&1    | ./Debug+Asserts/bin/FileCheck --check-prefix=CHECK-ASAN<br>
> /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c<br>
> /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c:9:16:<br>
> error: expected string not found in input<br>
> // CHECK-ASAN: "-lstdc++"<br>
>               ^<br>
> <stdin>:5:319: note: scanning from here<br>
> "/usr/bin/ld" "-demangle" "-dynamic" "-arch" "x86_64"<br>
> "-macosx_version_min" "10.4.0" "-o"<br>
> "/Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o"<br>
> "-lcrt1.o" "/tmp/darwin-sanitizer-ld-1EuvSw.o"<br>
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3/lib/darwin/libclang_rt.asan_osx.a"<br>
> "/usr/lib/libstdc++.6.dylib" "-framework" "CoreFoundation" "-lSystem"<br>
> "-lgcc_s.10.4"<br>
><br>
><br>
><br>
><br>
>                                  ^<br>
> <stdin>:5:329: note: possible intended match here<br>
> "/usr/bin/ld" "-demangle" "-dynamic" "-arch" "x86_64"<br>
> "-macosx_version_min" "10.4.0" "-o"<br>
> "/Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o"<br>
> "-lcrt1.o" "/tmp/darwin-sanitizer-ld-1EuvSw.o"<br>
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3/lib/darwin/libclang_rt.asan_osx.a"<br>
> "/usr/lib/libstdc++.6.dylib" "-framework" "CoreFoundation" "-lSystem"<br>
> "-lgcc_s.10.4"<br>
><br>
><br>
><br>
><br>
>                                            ^<br>
> macmini4:build buildslave$<br>
> /Users/buildslave/build/Debug+Asserts/bin/clang<br>
> -no-canonical-prefixes -### -target x86_64-darwin<br>
> -fsanitize=address<br>
> /Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c<br>
> -o /Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o<br>
> 2>&1<br>
> clang version 3.3 (trunk 168521)<br>
> Target: x86_64--darwin<br>
> Thread model: posix<br>
> "/Users/buildslave/build/Debug+Asserts/bin/clang" "-cc1" "-triple"<br>
> "x86_64--macosx10.4.0" "-emit-obj" "-mrelax-all" "-disable-free"<br>
> "-main-file-name" "darwin-sanitizer-ld.c" "-mrelocation-model" "pic"<br>
> "-pic-level" "2" "-mdisable-fp-elim" "-masm-verbose" "-munwind-tables"<br>
> "-target-cpu" "core2" "-target-linker-version" "127.2.1"<br>
> "-resource-dir"<br>
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3"<br>
> "-fmodule-cache-path" "/var/tmp/clang-module-cache"<br>
> "-fdebug-compilation-dir" "/Users/buildslave/build" "-ferror-limit"<br>
> "19" "-fmessage-length" "238" "-fsanitize=address" "-mstackrealign"<br>
> "-fblocks" "-fblocks-runtime-optional" "-fobjc-runtime=macosx-10.4.0"<br>
> "-fobjc-dispatch-method=non-legacy"<br>
> "-fobjc-default-synthesize-properties"<br>
> "-fencode-extended-block-signature" "-fdiagnostics-show-option"<br>
> "-fcolor-diagnostics" "-o" "/tmp/darwin-sanitizer-ld-WCSNj1.o" "-x"<br>
> "c" "/Users/buildslave/llvm/tools/clang/test/Driver/darwin-sanitizer-ld.c"<br>
> "/usr/bin/ld" "-demangle" "-dynamic" "-arch" "x86_64"<br>
> "-macosx_version_min" "10.4.0" "-o"<br>
> "/Users/buildslave/build/tools/clang/test/Driver/Output/darwin-sanitizer-ld.c.tmp.o"<br>
> "-lcrt1.o" "/tmp/darwin-sanitizer-ld-WCSNj1.o"<br>
> "/Users/buildslave/build/Debug+Asserts/bin/../lib/clang/3.3/lib/darwin/libclang_rt.asan_osx.a"<br>
> "/usr/lib/libstdc++.6.dylib" "-framework" "CoreFoundation" "-lSystem"<br>
> "-lgcc_s.10.4"<br>
> macmini4:build buildslave$<br>
><br>
> Is there something we could do to tidy this up? (either generalize the<br>
> CHECKs or, if ASan doesn't support Snow Leopard, XFAIL the test there<br>
> (I'm not sure how to detect that state in the REQUIRES lines, perhaps<br>
> we'd need to plumb through another property)).<br>
><br>
> Any other ideas? (I'm hoping to get this cleaned up so we can get the<br>
> bot back to green - it's already hiding/noisy-ing up some debug info<br>
> regressions also being reported by the bot)<br>
><br>
>> +// CHECK-ASAN: "-framework" "CoreFoundation"<br>
>> +<br>
>> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \<br>
>> +// RUN:   -fPIC -shared -fsanitize=address %s -o %t.so 2>&1 \<br>
>> +// RUN:   | FileCheck --check-prefix=CHECK-DYN-ASAN %s<br>
>> +<br>
>> +// CHECK-DYN-ASAN: "{{.*}}ld"<br>
>> +// CHECK-DYN-ASAN: "-dylib"<br>
>> +// CHECK-DYN-ASAN-NOT: libclang_rt.asan_osx.a<br>
>> +// CHECK-DYN-ASAN: "-undefined"<br>
>> +// CHECK-DYN-ASAN: "dynamic_lookup"<br>
>> +// CHECK-DYN-ASAN-NOT: libclang_rt.asan_osx.a<br>
>> +<br>
>> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \<br>
>> +// RUN:   -fsanitize=undefined %s -o %t.o 2>&1 \<br>
>> +// RUN:   | FileCheck --check-prefix=CHECK-UBSAN %s<br>
>> +<br>
>> +// CHECK-UBSAN: "{{.*}}ld"<br>
>> +// CHECK-UBSAN: libclang_rt.ubsan_osx.a"<br>
>> +// CHECK-UBSAN: "-lstdc++"<br>
>> +<br>
>> +// RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \<br>
>> +// RUN:   -fPIC -shared -fsanitize=undefined %s -o %t.so 2>&1 \<br>
>> +// RUN:   | FileCheck --check-prefix=CHECK-DYN-UBSAN %s<br>
>> +<br>
>> +// CHECK-DYN-UBSAN: "{{.*}}ld"<br>
>> +// CHECK-DYN-UBSAN: "-dylib"<br>
>> +// CHECK-DYN-UBSAN-NOT: libclang_rt.ubsan_osx.a<br>
>> +// CHECK-DYN-UBSAN: "-undefined"<br>
>> +// CHECK-DYN-UBSAN: "dynamic_lookup"<br>
>> +// CHECK-DYN-UBSAN-NOT: libclang_rt.ubsan_osx.a<br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-commits mailing list<br>
>> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div><br>
</div></div>