*Thanks* Alexey. This wok: $ clang++ -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize=address -shared-libasan -fPIC -g3 -c shared.cpp $ clang++ -fsanitize=address -shared-libasan -shared -o libshared.so -g3 shared.o $ clang++ -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize=address -shared-libasan -lshared -L . -g3 main.cpp
But when I run program: $ LD_LIBRARY_PATH=. ./a.out get error: ./a.out: error while loading shared libraries: libclang_rt.asan-x86_64.so: cannot open shared object file: No such file or directory with LD_LIBRARY_PATH=.:/usr/local/lib/clang/3.7.0/lib/linux/ ./a.out all ok. How to avoid setting LD_LIBRARY_PATH in /usr/local/lib/clang/3.7.0/lib/linux/ and run simple like this: $LD_LIBRARY_PATH=. ./a.out ? On Wednesday, May 27, 2015 at 4:47:58 AM UTC+6, Alexey Samsonov wrote: > > Also, try "-fsanitize=address -shared-libasan", instead of passing > "-lasan" manually. > > On Tue, May 26, 2015 at 3:39 PM, 'Evgeniy Stepanov' via address-sanitizer > <[email protected] <javascript:>> wrote: > >> 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] >> <javascript:>> 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] <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] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Alexey Samsonov, Mountain View, CA > -- 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.
