[llvm-dev] BoundsChecking Pass
Pierre Gagelin via llvm-dev
llvm-dev at lists.llvm.org
Fri May 20 03:16:47 PDT 2016
I am a final year French student doing an internship at the University of
Portsmouth. As I was taking hands on AddressSanitizer I took a look at
BoundsChecking (both are in the lib/Transforms/Instrumentation folder).
I found nothing on it except for the LLVM Documentation and references to
BaggyBoundsCheck (which is not the same project. As far as I understood it
is part of the SAFECode project). Does anyone knows about it
(BoundsChecking)? I have some inquiries I will try to explain just below...
I modified a bit the registration process of the Pass (the BoundsChecking
one) to get the .so generated file once llvm rebuild. I then ran the LLVM
opt with loading the .so for a C program that did both a stack and heap
- clang -emit-llvm overflow.c -c -o overflow.bc
- opt -load path-to-so/LLVMBoundsChecking.so -options < overflow.bc >
I then ran llc and gcc to get an executable:
- llc -filetype=obj overflow_instrumented.bc (generates a .o file with
- gcc overflow_instrumented.o -o overflow_instrumented
Once launched, the executable detects the stack access and crash the
program (you can see the checks on the assembly code which are followed by
a conditional jump on a UD2 instruction that basically crash a program) but
nothing is instrumented for the heap access. On the BoundsChecking file it
is said that run-time checks are maid but I don't see them. So my questions
- are there any heap checking made?
- if yes, where are they?
I am interested in this because I think I am going to try to do the same
work made on the stack to the heap.
Thank you for your help, any information or advice is welcome :)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev