首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >llvm错误:尚未实现重定位!在orcjit或lli中运行RxCpp时

llvm错误:尚未实现重定位!在orcjit或lli中运行RxCpp时
EN

Stack Overflow用户
提问于 2017-02-03 20:25:03
回答 1查看 409关注 0票数 7

我想在llvm的IR解释器lli中运行RxCpp示例。

不幸的是,在lli中运行任何RxCpp示例都会失败:

代码语言:javascript
复制
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

错误-消息:

代码语言:javascript
复制
Relocation type not implemented yet!
UNREACHABLE executed at llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp:232!

问题:

这个错误到底是什么意思?-在llvm的orc-jit中做出了哪些不满足的假设?

有什么变通的办法吗?-有没有什么LLVM-IR转换我可以应用的(例如,通过编译器标志)?

在llvm的orcjit中,RxCpp使用了什么特殊功能导致了这个问题?

测试对象:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2017-02-08 02:00:46

这似乎是thread_local / __thread的一个问题。

rx-utils.hpp中的#define RXCPP_THREAD_LOCAL __thread替换为空白“修复”了此问题。

原因是LLVM后端失败,因为LLVM还不支持TLS。这与Bug 21431和一些重定位策略在llvm的RuntimeDyld中缺失的事实有关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42024276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档