[LLVMdev] lli -force-interpreter complains about external function

Xu Yang yangx2000 at gmail.com
Sun Nov 15 23:14:27 PST 2009


Hi:

When I try to execute lli -force-interpreter=true hello.bc, it gave the
following error:

LLVM ERROR: Tried to execute an unknown external function: i32 (i8*)* puts

I think the error is because C library is not being linked with the byte
code, but I was not able to find any helpful instruction in lli's document.

Can you please teach me how to do it?

Thanks
Xu


The hello.bc is generated as the following:

======file: hello.c======
#include <stdio.h>


int main(int argc, char** argv){
  printf("hello world\n");
  return 0;
}

====================


llvm-gcc -o hello.bc -emit-llvm -c hello.c


This is the code in hello.bc (after llvm-dis):
==================================
; ModuleID = 'hello.bc'
target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
target triple = "i386-pc-linux-gnu"

@.str = private constant [12 x i8] c"hello world\00", align 1 ; <[12 x i8]*>
[#uses=1]

define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
  %argc_addr = alloca i32                         ; <i32*> [#uses=1]
  %argv_addr = alloca i8**                        ; <i8***> [#uses=1]
  %retval = alloca i32                            ; <i32*> [#uses=2]
  %0 = alloca i32                                 ; <i32*> [#uses=2]
  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
  store i32 %argc, i32* %argc_addr
  store i8** %argv, i8*** %argv_addr
  %1 = call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.str, i32 0,
i32 0)) nounwind ; <i32> [#uses=0]
  store i32 0, i32* %0, align 4
  %2 = load i32* %0, align 4                      ; <i32> [#uses=1]
  store i32 %2, i32* %retval, align 4
  br label %return

return:                                           ; preds = %entry
  %retval1 = load i32* %retval                    ; <i32> [#uses=1]
  ret i32 %retval1
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091116/1314fe99/attachment.html>


More information about the llvm-dev mailing list