2017-05-03 2 views
1

関数の戻り値を取得するためのパスでllvm.returnaddress.i8を使用します。解決できなかった外部関数 'llvm.returnaddress.i8'を使用したプログラム

私は../llvm/bin/lli test_re.bcを実行した後、私はそれを解決する方法がわからない

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

を取得します。提案はありますか?ありがとう!

+0

ようこそ!あなたの問題と試みた努力について説明するための十分な具体的な情報(サンプルコードなど)で質問を洗練するために、この[how-to-ask](http://stackoverflow.com/help/how-to-ask)をお読みください。 – thewaywewere

答えて

1

内因性はllvm.returnaddressであり、llvm.returnaddress.i8ではありません。

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 
} 
関連する問題