Hi, these tools were not designed to work together. It could be possible to hack something, but it does not sound easy. In particular, they use different techniques for intercepting libc calls and it's not clear to me how one would tie them together.
On Fri, Jun 9, 2017 at 8:52 AM, hariri via address-sanitizer <[email protected]> wrote: > Hi, > > I am trying to use the dataflow sanitizer with the address sanitizer, but > they clash together giving me a long sequence of errors due to multiple > definitions in both sanitizers: > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.dfsan-x86_64.a(interception_linux.cc.o): > In function `__interception::GetRealFunctionAddress(char const*, \ > > unsigned long*, unsigned long, unsigned long)': > > clang-llvm/llvm/projects/compiler-rt/lib/interception/interception_linux.cc:22: > multiple definition of `__interception::GetRealFunctionAddress(char const*, > unsigned long*, u\ > > nsigned long, unsigned long)' > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.asan-x86_64.a(interception_linux.cc.o):clang-llvm/llvm/projects/compiler-rt/\ > > lib/interception/interception_linux.cc:22: first defined here > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.dfsan-x86_64.a(interception_linux.cc.o): > In function `__interception::GetFuncAddrVer(char const*, char con\ > > st*)': > > clang-llvm/llvm/projects/compiler-rt/lib/interception/interception_linux.cc:28: > multiple definition of `__interception::GetFuncAddrVer(char const*, char > const*)' > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.asan-x86_64.a(interception_linux.cc.o):clang-llvm/llvm/projects/compiler-rt/\ > > lib/interception/interception_linux.cc:28: first defined here > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.dfsan-x86_64.a(sanitizer_allocator.cc.o): > In function `atomic_load<__sanitizer::atomic_uint8_t>': > > clang-llvm/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_atomic_clang_x86.h:47: > multiple definition of `__sanitizer::internal_allocator()' > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.asan-x86_64.a(sanitizer_allocator.cc.o):clang-llvm/llvm/projects/compiler-rt\ > > /lib/sanitizer_common/sanitizer_atomic_clang_x86.h:47: first defined here > > clang-llvm/ninja-build-clang/lib/clang/5.0.0/lib/linux/libclang_rt.dfsan-x86_64.a(sanitizer_allocator.cc.o): > In function `__sanitizer::LowLevelAllocator::Allocate(unsigned l\ > > ong)': > > > The simplest stripped example is compiling any cpp file for example: > > // simple.cc > > int main() { > > return 0; > > } > > > with the command: > > clang++ simple.cc -fsanitize=address,dataflow > > > Thanks, > > Farah > > -- > 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.
