[LLVMdev] llvm ocaml bindings
Ranjit Jhala
jhala at cs.ucsd.edu
Tue Dec 30 18:07:13 PST 2008
Hi,
thanks Chris and Gordon for the fantasic infrastructure and ocaml
bindings and Erick for the prompt response!
I'm looking to use LLVM to write program analyses for
C/C++ programs, but to use Ocaml to write the analyses.
I did see there were bindings for iterating over:
* functions in a module [iter_functions]
* basic blocks in a functions [iter_blocks]
* instructions in a block [iter_instrs]
The other things that i'd like are to know what kind of
instruction a given instruction was.
That is,
(a) some ML encoding of the different opcodes like
Instruction::Ret:
Instruction::Invoke:
Instruction::Call:
Instruction::Malloc:
Instruction::Alloca:
etc.
e.g. encoded as an Ocaml type "llinstr" ?
(b) ML bindings for functions like Instruction::getOpcode
e.g. functions like
val instr_of_value : llvalue -> llinstr
val value_is_instr : llvalue -> bool
etc.
Are these available somewhere ?
Even if they are not, I am happy to try to add these bindings ...
Thanks!,
-Ranjit.
> (ccing llvmdev) Hi Ranjit! I only ported Chris's tutorial and Gordon
> did the vast majority of the bindings, so they deserve most of the
> praise. I believe there are techniques for walking over the CFG. You
> can load up code using Llvm_bitreader, use things like
> Llvm.iter_globals, Llvm.iter_functions, and Llvm.iter_instrs to walk
> over the module, and write out a new llmodule using Llvm_bitwriter. Is
> there something more specific you want to do?
>
> On Mon, Dec 29, 2008 at 6:05 PM, Ranjit Jhala <jhala at cs.ucsd.edu> wrote:
>> Hi Erick --
>>
>> many thanks for writing the ocaml bindings and tutorial for LLVM !
>>
>> I had a question: i see there are bindings for _generating_ code, but are
>> there also bindings for _reading_ code (e.g. visitors that go over CFG do
>> different things depending on the kinds of instructions ?)
>>
>> Thanks!,
>>
>> -Ranjit.
>>
>>
>
More information about the llvm-dev
mailing list