[LLVMdev] LLVM Valgrind
John Criswell
criswell at illinois.edu
Sun May 16 11:06:13 PDT 2010
Javed Absar wrote:
> Hi:
>
> I have been working on Valgrind [porting it to non-supported
> architectures] and wanted to know what you guys think of Valgrind for
> LLVM.
> I haven't thought through fully myself - so wanted to get your inputs
> before becoming rigid in my own opinion.
>
> Original Valgrind works on object code - translating the asm to its
> own IR [intermediate representation]. But for LLVM, probably putting
> the valgrind
> tool instrumentation [e.g. memcheck] as a pass [[i.e. using LLVM IR
> itself] probably make more sense....
We have done just that in the SAFECode project
(http://safecode.cs.illinois.edu). To be more accurate, we took the old
SAFECode research code, simplified it a bit (its more advanced features
have experienced some bitrot; fixing that is on my TODO list), and
enhanced it to use LLVM debugging information to report when a memory
safety violation occurs.
SAFECode is a bit like a combination of Valgrind's memcheck and
exp-ptrcheck tools in that it checks array indexing operations as well
as loads and stores. Additionally, SAFECode's array checking should be
more accurate that Valgrind's because LLVM passes can determine the
start address and size of stack objects and globals accurately whereas
Valgrind's ptrcheck tool has to rely upon heuristics to determine this
information. SAFECode is also faster since it can employ static
analysis and does not do dynamic binary translation.
All of that said, Valgrind is a much more mature piece of software.
Optimization can weaken SAFECode's ability to provide good debug info
when used with LLVM 2.6, and testing with LLVM 2.7's improved debug info
API isn't done yet. Valgrind is also easier to use; SAFECode currently
requires whole-program analysis, which means that you have to use it
either on an LLVM bitcode file or through link-time optimization.
If you're interested in SAFECode, please feel free to try it out.
SAFECode works with LLVM 2.6 and LLVM 2.7 (although the 2.7 support
needs some improvement yet). We have a mailing list
(http://safecode.cs.illinois.edu/mailing.html) to which you can post
questions.
-- John T.
>
> cheers
> J.
More information about the llvm-dev
mailing list