[llvm-dev] Runtime interception: design problem

Pierre Gagelin via llvm-dev llvm-dev at lists.llvm.org
Wed May 25 06:05:17 PDT 2016

Hi everyone,

I am having troubles but this shouldn't be hard to solve for many people
here. I am beginning a runtime feature for the BoundsChecking pass and I
want to replace the libc malloc&free. I followed the design of
AddressSanitizer (Asan) and tried to use the INTERCEPTOR macro from the
interception.h file of compiler-rt library.

Here is the problem. The file I modify (BoundsCheking.cpp) is in
lib/Transforms/Instrumentation/ and I can't include properly interception.h
(which is in projects/compiler-rt/lib/interception/). I looked at the
CMakeLists.txt and how other files included interception.h but they are all
from compiler-rt lib directory.

I assume this is normal as runtime project should be developped under the
correct directory but I don't see how this should be designed in order that
the code optimized by BoundsCheking Pass uses my own malloc&free functions.

I spent quite some time on Asan runtime code and found that runtime could
be initialized with a call to __asan_init() (function defined in
asan_rtl.cc) from the instrumented code directly but I don't know if it's
the only way to do it or how to reproduce it...

So to resume, I want to make my own malloc and free function to be called
by the code I instrument with BoundsChecking. Any suggestion is welcome =)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160525/99e280af/attachment-0001.html>

More information about the llvm-dev mailing list