2017-05-03 7 views
1

llvm.returnaddress.i8을 함수의 반환 값을 얻기위한 패스에 사용하고 싶습니다. 내가 ../llvm/bin/lli test_re.bc을 실행 한 후해결할 수없는 외부 함수 'llvm.returnaddress.i8'을 사용하는 프로그램

는, 나는 그것을 해결하는 방법을 모른다

LLVM ERROR: Program used external function 'llvm.returnaddress.i8' which could not be resolved!

얻을. 제안이 있습니까? 감사!

+0

SO! 귀하의 문제와 시도한 노력을 설명하기위한 샘플 코드 등의 충분하고 구체적인 정보로 질문을 구체화하려면 [how-to-ask] (http://stackoverflow.com/help/how-to-ask)를 읽어보십시오. . – thewaywewere

답변

1

내장은 이 아니라 llvm.returnaddress입니다.

declare i8* @llvm.returnaddress(i32) 
declare i32 @printf(i8*, ...) 

@fmt = constant [20 x i8] c"Return address: %p\0a\00" 

define i32 @main() { 
    %fmt = getelementptr [20 x i8], [20 x i8]* @fmt, i32 0, i32 0 
    %ra = call i8* @llvm.returnaddress(i32 0) 
    call i32 (i8*, ...) @printf(i8* %fmt, i8* %ra) 
    ret i32 0 
}