On Wed, 19 Dec 2018 at 10:48, Ankur Raj <[email protected]> wrote: > > Its part of a large and complected code base ! malloc and free wrappers > exists for some book keeping reason > and i am afraid i cant change it either ! > I don't know if there is way to get around this
A possible solution to this is to detect when your code is being built with ASan and in that case use ASan's malloc hooks so you can get notified when malloc/free happen and do you book keeping there. Take a look at https://github.com/llvm-mirror/compiler-rt/blob/52af2fe7c3feb14de9780e6c4f8e57e33012204d/include/sanitizer/allocator_interface.h#L55 You can define: ``` void __sanitizer_malloc_hook(const volatile void *ptr, size_t size); void __sanitizer_free_hook(const volatile void *ptr); ``` to receive notifications or use the ` __sanitizer_install_malloc_and_free_hooks` API. A few notes on this functionality: * You should probably avoid triggering any mallocs/frees from happening inside you hooks (e.g. Using C++ templated data structured to store information could trigger this). I'm not entirely sure what will happen but you could easily end up with infinite recursion. * Remember these API names are the C symbols names so if you are using C++ remember to use `extern "C"`. HTH, Dan. -- 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.
