2017-02-03 10 views
7

llvmのIRインタープリタlliでRxCppの例を実行したいと思います。llvmエラー:再配置はまだ実装されていません! orcjitまたはlliでRxCppを実行しているとき

残念ながら、RxCppの例のいずれかを実行すると、LLIに失敗します。

git clone https://github.com/Reactive-Extensions/RxCpp.git --depth 1 
cd RxCpp/Rx/v2/examples/pythogerian 
clang++ -S -emit-llvm -fno-use-cxa-exit -I../../src main.cpp 
lli main.ll 

エラーメッセージ:

Relocation type not implemented yet! 
UNREACHABLE executed at llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp:232! 

質問:

このエラーは、正確に何を意味するのでしょうか? - llvmのorc-jitで満たされていない仮定は何ですか?

回避策はありますか? - この作業を行うために私が適用できるLLVM-IR変換(例えば、コンパイラフラグを通して)はありますか?

llvmのorcjitでこの問題を引き起こすRxCppの特殊な機能は何ですか?上でテスト

clang version 5.0.0 (https://github.com/llvm-mirror/clang.git 6c9e299494de2a5b0425e46bc937f29a05128252) 
clang version 4.0.0-+rc1-1 (tags/RELEASE_400/rc1) 
clang version 3.9.0-1 (tags/RELEASE_390/final) 
clang version 3.8.1-12 (tags/RELEASE_381/final) 
Target: x86_64-pc-linux-gnu 
Thread model: posix 
InstalledDir: /usr/bin 
+0

あなたが使用しているclangのバージョンと現在使用しているプラ​​ットフォームについて言及したい場合があります。 –

答えて

1

thread_local/__threadの問題であるように思われます。

#define RXCPP_THREAD_LOCAL __threadrx-utils.hppに置き換えて、この問題を「修正」します。

なぜなら、TLSをまだサポートしていないため、LLVMバックエンドでの障害です。これはBug 21431と関連しており、llvmのRuntimeDyldにはいくつかの再配置戦略が欠落しているという事実があります。

関連する問題