[compiler-rt] r227161 - [ASan] Use rpath in tests that produce a shared library
Alexander Potapenko
glider at google.com
Thu Mar 26 06:15:41 PDT 2015
Overall, what's the reason behind this patch?
I've been trying to merge the Linux and Darwin versions of
interception-in-shared-lib-test today making the RUN lines look as
follows:
// RUN: %clangxx_asan -O0 %s -DSHARED_LIB \
// RUN: -shared -o %t-so.so -fPIC
// RUN: %clangxx_asan -O0 %s -o %t %t-so.so && \
// RUN: not %run %t 2>&1 | FileCheck %s
, but the additional linker flags complicate that. Are they really necessary?
On Tue, Mar 24, 2015 at 5:35 PM, Alexander Potapenko <glider at google.com> wrote:
> There are two problems with this patch:
> 1. (minor) Clang doesn't use the -rpath argument on Linux in
> TestCases/suppressions-library.cc.
> 2. In their current state, these two tests don't work on my machine (OS X 10.9):
>
> $ DYLD_PRINT_RPATHS=1 <cut>/Output/suppressions-library.cc.tmp
> RPATH failed to expanding @rpath/suppressions-library.cc.tmp-so.so
> to: @executable_path/suppressions-library.cc.tmp-so.so
> RPATH failed to expanding @rpath/suppressions-library.cc.tmp-so.so
> to: @executable_path/suppressions-library.cc.tmp-so.so
> RPATH failed to expanding @rpath/suppressions-library.cc.tmp-so.so
> to: <cut>/../lib/clang/3.7.0/lib/darwin/suppressions-library.cc.tmp-so.so
> dyld: Library not loaded: @rpath/suppressions-library.cc.tmp-so.so
> Referenced from: <cut>/Output/suppressions-library.cc.tmp
> Reason: image not found
> Trace/BPT trap: 5
>
> For some reason dyld fails to find the dynamic library next to the
> executable, if that executable was linked with
> -Wl,-rpath, at executable_path.
> The solution is to link with "-Wl,-rpath, at executable_path/" (note the
> trailing slash), but I don't fully understand why this happens for me
> and not for Kuba.
>
> On Tue, Jan 27, 2015 at 4:29 AM, Kuba Brecka <kuba.brecka at gmail.com> wrote:
>> Author: kuba.brecka
>> Date: Mon Jan 26 19:29:18 2015
>> New Revision: 227161
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=227161&view=rev
>> Log:
>> [ASan] Use rpath in tests that produce a shared library
>>
>> Modifying Darwin/interception-in-shared-lib-test.cc and suppressions-library.cc
>> to use rpath instead of linking against the full path to the temporary file.
>> NFC.
>>
>>
>>
>> Modified:
>> compiler-rt/trunk/test/asan/TestCases/Darwin/interception-in-shared-lib-test.cc
>> compiler-rt/trunk/test/asan/TestCases/suppressions-library.cc
>>
>> Modified: compiler-rt/trunk/test/asan/TestCases/Darwin/interception-in-shared-lib-test.cc
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Darwin/interception-in-shared-lib-test.cc?rev=227161&r1=227160&r2=227161&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/test/asan/TestCases/Darwin/interception-in-shared-lib-test.cc (original)
>> +++ compiler-rt/trunk/test/asan/TestCases/Darwin/interception-in-shared-lib-test.cc Mon Jan 26 19:29:18 2015
>> @@ -3,11 +3,11 @@
>> // ../Linux/interception-in-shared-lib-test.cc.
>>
>> // RUN: %clangxx_asan -O0 %s -DSHARED_LIB \
>> -// RUN: -shared -o %T/libinterception-in-shared-lib-test.so \
>> -// RUN: -fPIC
>> +// RUN: -shared -o %t-so.so \
>> +// RUN: -fPIC -install_name @rpath/interception-in-shared-lib-test.cc.tmp-so.so
>> // TODO(glider): figure out how to set rpath in a more portable way and unite
>> // this test with ../Linux/interception-in-shared-lib-test.cc.
>> -// RUN: %clangxx_asan -O0 %s -o %t -Wl,-rpath, at executable-path -L%T -linterception-in-shared-lib-test && \
>> +// RUN: %clangxx_asan -O0 %s -o %t -Wl,-rpath, at executable_path %t-so.so && \
>> // RUN: not %run %t 2>&1 | FileCheck %s
>>
>> #include <stdio.h>
>>
>> Modified: compiler-rt/trunk/test/asan/TestCases/suppressions-library.cc
>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/suppressions-library.cc?rev=227161&r1=227160&r2=227161&view=diff
>> ==============================================================================
>> --- compiler-rt/trunk/test/asan/TestCases/suppressions-library.cc (original)
>> +++ compiler-rt/trunk/test/asan/TestCases/suppressions-library.cc Mon Jan 26 19:29:18 2015
>> @@ -1,10 +1,10 @@
>> -// RUN: %clangxx_asan -O0 -DSHARED_LIB %s -fPIC -shared -o %t-so.so
>> -// RUN: %clangxx_asan -O0 %s %t-so.so -o %t
>> +// RUN: %clangxx_asan -O0 -DSHARED_LIB %s -fPIC -shared -o %t-so.so -install_name @rpath/suppressions-library.cc.tmp-so.so
>> +// RUN: %clangxx_asan -O0 %s %t-so.so -o %t -rpath @executable_path
>>
>> // Check that without suppressions, we catch the issue.
>> // RUN: not %run %t 2>&1 | FileCheck --check-prefix=CHECK-CRASH %s
>>
>> -// RUN: echo "interceptor_via_lib:%t-so.so" > %t.supp
>> +// RUN: echo "interceptor_via_lib:suppressions-library.cc.tmp-so.so" > %t.supp
>> // RUN: ASAN_OPTIONS="suppressions='%t.supp'" %run %t 2>&1 | FileCheck --check-prefix=CHECK-IGNORE %s
>>
>> // XFAIL: android
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
>
> --
> Alexander Potapenko
> Software Engineer
> Google Moscow
--
Alexander Potapenko
Software Engineer
Google Moscow
More information about the llvm-commits
mailing list