[LLVMdev] lli, llvm-ld and runtime libraries

Erick Tryzelaar erickt at dslextreme.com
Thu Dec 21 02:24:12 PST 2006

Hello again,

I'm exploring llvm's intermediary representation with this code:

%.LC0 = internal constant [13 x sbyte] c"hello world\0A\00"

declare int %puts(sbyte*)


int %main() {
  %cast210 = getelementptr [13 x sbyte]* %.LC0, long 0, long 0;
  call int %puts(sbyte* %cast210)
  ret int 0

And I can compile and run it like this:

llvm-as foo.ll
lli foo.bc


llvm-ld foo.bc -o foo

Which prints "hello world". This is great, but I can't figure out where 
the "puts" function is coming from. Does lli and llvm-ld automatically 
export the c standard library to the input file?

Second, it looks like I cannot specify an alternative runtime for lli. 
I'm guessing I'd have to build my own interpreter/jit if I want to run 
with a custom runtime. It looks like llvm-ld can accept libraries 
though, so I may be able to pass in the runtime there. Is this correct?


More information about the llvm-dev mailing list