2017-02-03 22 views
7

'da RxCpp'yi çalıştırırken, RxCpp örneğini, llvm'nin IR yorumlayıcısı lli'da çalıştırmak istiyorum.llvm hatası: Yeniden yerleştirme henüz uygulanmadı! orcjit veya lli

Maalesef RxCpp örneklerinden herhangi çalışan LLI başarısız:

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 

hata iletisi:

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

Sorular:

bu hata tam olarak ne anlama geliyor? - memnun olmayan llvm's orc-jit içinde hangi varsayımlar yapılır?

Bir çözüm var mı? - Bu işi yapmak için başvurabileceğim herhangi bir LLVM-IR dönüşümü var mı (ör. bir derleyici bayrağıyla)?

Bu özel soruna neden olan RxCpp, bu soruna neden llvm'nin orcjit?

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

Kullandığınız hangi argo sürümünü ve hangi platformda bulunduğunuzu belirtmek isteyebilirsiniz. –

cevap

1

thread_local/__thread ile ilgili bir sorun gibi görünüyor:

üzerinde test.

rx-utils.hpp boşlukta, bu sorunu "düzeltmeler" ile birlikte #define RXCPP_THREAD_LOCAL __thread değiştirerek.

Sebebi, TLS'yi desteklemediği için LLVM arka ucunda bir başarısızlıktır. Bu, Bug 21431 ile ilgilidir ve llvm'nin RuntimeDyld'de bazı yer değiştirme stratejilerinin eksik olması gerçeği.