Hopefully fixed with r221316. Kuba
On Tue, Nov 4, 2014 at 2:58 PM, Aaron Ballman <[email protected]> wrote: > This is failing on Windows: > > http://bb.pgr.jp/builders/ninja-clang-i686-msc17-R/builds/11355 > > ~Aaron > > On Tue, Nov 4, 2014 at 12:35 PM, Kuba Brecka <[email protected]> > wrote: > > Author: kuba.brecka > > Date: Tue Nov 4 11:35:17 2014 > > New Revision: 221279 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=221279&view=rev > > Log: > > Use @rpath as LC_ID_DYLIB for ASan dylib on OS X > > > > Change the LC_ID_DYLIB of ASan's dynamic libraries on OS X to be set to > "@rpath/libclang_rt.asan_osx_dynamic.dylib" and similarly for iossim. Clang > driver then sets the "-rpath" to be the real path to where clang currently > has the dylib (because clang uses the relative path to its current > executable). This means if you move the compiler or install the binary > release, -fsanitize=address will link to the proper library. > > > > Reviewed at http://reviews.llvm.org/D6018 > > > > > > Modified: > > cfe/trunk/lib/Driver/ToolChains.cpp > > cfe/trunk/lib/Driver/ToolChains.h > > cfe/trunk/test/Driver/darwin-sanitizer-ld.c > > > > Modified: cfe/trunk/lib/Driver/ToolChains.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=221279&r1=221278&r2=221279&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/Driver/ToolChains.cpp (original) > > +++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Nov 4 11:35:17 2014 > > @@ -292,16 +292,36 @@ void DarwinClang::AddLinkARCArgs(const A > > > > void MachO::AddLinkRuntimeLib(const ArgList &Args, ArgStringList > &CmdArgs, > > StringRef DarwinLibName, bool AlwaysLink, > > - bool IsEmbedded) const { > > - SmallString<128> P(getDriver().ResourceDir); > > - llvm::sys::path::append(P, "lib", IsEmbedded ? "macho_embedded" : > "darwin", > > - DarwinLibName); > > + bool IsEmbedded, bool AddRPath) const { > > + SmallString<128> Dir(getDriver().ResourceDir); > > + llvm::sys::path::append(Dir, "lib", IsEmbedded ? "macho_embedded" : > "darwin"); > > + > > + SmallString<128> P(Dir); > > + llvm::sys::path::append(P, DarwinLibName); > > > > // For now, allow missing resource libraries to support developers > who may > > // not have compiler-rt checked out or integrated into their build > (unless > > // we explicitly force linking with this library). > > if (AlwaysLink || llvm::sys::fs::exists(P.str())) > > CmdArgs.push_back(Args.MakeArgString(P.str())); > > + > > + // Adding the rpaths might negatively interact when other rpaths are > involved, > > + // so we should make sure we add the rpaths last, after all > user-specified > > + // rpaths. This is currently true from this place, but we need to be > > + // careful if this function is ever called before user's rpaths are > emitted. > > + if (AddRPath) { > > + assert(DarwinLibName.endswith(".dylib") && "must be a dynamic > library"); > > + > > + // Add @executable_path to rpath to support having the dylib copied > with > > + // the executable. > > + CmdArgs.push_back("-rpath"); > > + CmdArgs.push_back("@executable_path"); > > + > > + // Add the path to the resource dir to rpath to support using the > dylib > > + // from the default location without copying. > > + CmdArgs.push_back("-rpath"); > > + CmdArgs.push_back(Args.MakeArgString(Dir.str())); > > + } > > } > > > > void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, > > @@ -379,12 +399,14 @@ void DarwinClang::AddLinkRuntimeLibArgs( > > if (isTargetMacOS()) { > > AddLinkRuntimeLib(Args, CmdArgs, > > "libclang_rt.asan_osx_dynamic.dylib", > > - true); > > + /*AlwaysLink*/ true, /*IsEmbedded*/ false, > > + /*AddRPath*/ true); > > } else { > > if (isTargetIOSSimulator()) { > > AddLinkRuntimeLib(Args, CmdArgs, > > "libclang_rt.asan_iossim_dynamic.dylib", > > - true); > > + /*AlwaysLink*/ true, /*IsEmbedded*/ false, > > + /*AddRPath*/ true); > > } > > } > > } > > > > Modified: cfe/trunk/lib/Driver/ToolChains.h > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=221279&r1=221278&r2=221279&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/Driver/ToolChains.h (original) > > +++ cfe/trunk/lib/Driver/ToolChains.h Tue Nov 4 11:35:17 2014 > > @@ -236,7 +236,8 @@ public: > > llvm::opt::ArgStringList &CmdArgs, > > StringRef DarwinLibName, > > bool AlwaysLink = false, > > - bool IsEmbedded = false) const; > > + bool IsEmbedded = false, > > + bool AddRPath = false) const; > > > > /// } > > /// @name ToolChain Implementation > > > > Modified: cfe/trunk/test/Driver/darwin-sanitizer-ld.c > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/darwin-sanitizer-ld.c?rev=221279&r1=221278&r2=221279&view=diff > > > ============================================================================== > > --- cfe/trunk/test/Driver/darwin-sanitizer-ld.c (original) > > +++ cfe/trunk/test/Driver/darwin-sanitizer-ld.c Tue Nov 4 11:35:17 2014 > > @@ -6,7 +6,9 @@ > > > > // CHECK-ASAN: "{{.*}}ld{{(.exe)?}}" > > // CHECK-ASAN: stdc++ > > -// CHECK-ASAN: libclang_rt.asan_osx_dynamic.dylib" > > +// CHECK-ASAN: /lib/darwin/libclang_rt.asan_osx_dynamic.dylib" > > +// CHECK-ASAN: "-rpath" "@executable_path" > > +// CHECK-ASAN: "-rpath" "{{.*}}/lib/darwin" > > > > // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ > > // RUN: -fsanitize=address -mios-simulator-version-min=7.0 %s -o %t.o > 2>&1 \ > > @@ -14,7 +16,9 @@ > > > > // CHECK-ASAN-IOSSIM: "{{.*}}ld{{(.exe)?}}" > > // CHECK-ASAN-IOSSIM: lc++ > > -// CHECK-ASAN-IOSSIM: libclang_rt.asan_iossim_dynamic.dylib" > > +// CHECK-ASAN-IOSSIM: /lib/darwin/libclang_rt.asan_iossim_dynamic.dylib" > > +// CHECK-ASAN-IOSSIM: "-rpath" "@executable_path" > > +// CHECK-ASAN-IOSSIM: "-rpath" "{{.*}}/lib/darwin" > > > > // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ > > // RUN: -fPIC -shared -fsanitize=address %s -o %t.so 2>&1 \ > > @@ -22,7 +26,9 @@ > > > > // CHECK-DYN-ASAN: "{{.*}}ld{{(.exe)?}}" > > // CHECK-DYN-ASAN: "-dylib" > > -// CHECK-DYN-ASAN: libclang_rt.asan_osx_dynamic.dylib > > +// CHECK-DYN-ASAN: /lib/darwin/libclang_rt.asan_osx_dynamic.dylib" > > +// CHECK-DYN-ASAN: "-rpath" "@executable_path" > > +// CHECK-DYN-ASAN: "-rpath" "{{.*}}/lib/darwin" > > > > // RUN: %clang -no-canonical-prefixes -### -target x86_64-darwin \ > > // RUN: -fsanitize=undefined %s -o %t.o 2>&1 \ > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
