Looks like your clang installation is broken. /usr/local/bin/clang is 3.6.1, but the libraries in /usr/local/lib/clang are for 3.7.0.
On Tue, May 26, 2015 at 3:37 PM, Dmitriy - <[email protected]> wrote: > 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]> 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]. >> > 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. -- 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.
