clang++ -fsanitize=address -shared -Wl,--no-undefined -o libshared.so -g3 
shared.oshared.o: In function `Foo':
.../shared.cpp:4: undefined reference to 
`__asan_option_detect_stack_use_after_return'
.../shared.cpp:4: undefined reference to `__asan_stack_malloc_1'
.../shared.cpp:4: undefined reference to `__asan_report_store8'
.../shared.cpp:4: undefined reference to `__asan_report_load8'
.../shared.cpp:6: undefined reference to `__asan_report_store4'

If
$ clang++ -fsanitize=address -shared -o libshared.so -g3 shared.o -lasan

this OK
But this commands still don't pass

$ clang++ -fno-omit-frame-pointer -fsanitize=address -lshared -L . -g3 
main.cpp
/usr/bin/ld: cannot find 
/usr/local/bin/../lib/clang/3.6.1/lib/linux/libclang_rt.asan-x86_64.a: No 
such file or directory
/usr/bin/ld: cannot find 
/usr/local/bin/../lib/clang/3.6.1/lib/linux/libclang_rt.asan_cxx-x86_64.a: 
No such file or directory
clang-3.6: error: linker command failed with exit code 1 (use -v to see 
invocation)

output with -v option here - http://pastebin.com/R6ELQPZW

I replaced the version on stable 3.6.


On Tuesday, May 26, 2015 at 11:35:47 PM UTC+6, Evgeniy Stepanov wrote:
>
> On Tue, May 26, 2015 at 3:04 AM, Dmitriy - <[email protected] 
> <javascript:>> wrote: 
> > Hi all. 
> > Inspired by this post 
> > http://tsdgeos.blogspot.ru/2014/03/asan-and-libraries-2nd-part.html 
> > 
> > I wanted to try the following with ASan: 
> > 1) create shared library with error -> libshared.so 
> > 2) create trivial program that used <- libshared.so 
> > 
> > $ ls 
> > main.cpp  shared.cpp  shared.h 
> > 
> > $ cat main.cpp 
> > #include "shared.h" 
> > 
> > int main(int, char **) 
> > { 
> > Foo f; 
> > return 0; 
> > } 
> > 
> > $ cat shared.cpp 
> > #include "shared.h" 
> > 
> > Foo::Foo() 
> > { 
> > int a[1]; 
> > a[2] = 3; 
> > } 
> > 
> > $ cat shared.h 
> > class Foo 
> > { 
> > public: 
> > Foo(); 
> > }; 
> > 
> > $ clang++ --version 
> > clang version 3.7.0 (trunk 237353) 
> > Target: x86_64-unknown-linux-gnu 
> > Thread model: posix 
> > 
> > $ clang++ -fno-omit-frame-pointer -fsanitize=address -fPIC -g3 -c 
> shared.cpp 
> > $ clang++ -shared -Wl,--no-undefined -o libshared.so -g3 
> > -lclang_rt.asan-x86_64 -L /usr/local/lib/clang/3.7.0/lib/linux/ shared.o 
>
> Why -lclang_rt... ? The usual way is adding -fsanitize=address to both 
> compilation and linking steps. 
>
> > $ clang++ -fno-omit-frame-pointer -fsanitize=address -lshared -L . -g3 
> > -Wl,-rpath=/usr/local/lib/clang/3.7.0/lib/linux/ main.cpp 
> > 
> > $ LD_LIBRARY_PATH=. ./a.out 
> > ==14933==Your application is linked against incompatible ASan runtimes. 
> > 
> > What did I do wrong? Please help. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "address-sanitizer" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"address-sanitizer" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to