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.
