问题标签 [lli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - lli:LLVM 错误:无法选择:X86ISD::WrapperRIP TargetGlobalTLSAddress:i64
clang++ -S -emit-llvm main.cpp && lli main.ll
在 Linux(Debian) 上运行以下代码
由于以下错误,无法在 lli 上运行:
问题:
这是什么意思?
是否有任何编译器标志可以解决此问题?
using-stdlib=libc++
编译并运行成功*;libstdc++ 使用哪些特定功能会导致此问题?
编辑:
这个问题背后的动机是了解 libc++ 和 libstdc++ 之间的差异,这会导致 llvm 的 orcjit 中出现这个特定的错误消息(在 Linux 上)。
在 OSX 上 gcc 已被弃用,默认情况下使用 clang libc++
。要在 OSX 上重现此错误,您可能必须安装 gcc 并使用-stdlib=libstdc++
.
这是llvm-ir(不幸的是,直接在这里嵌入它太大了)
c++ - llvm 错误:尚未实施重定位!在 orcjit 或 lli 中运行 RxCpp 时
我想在 llvm 的 IR 解释器中运行 RxCpp 示例lli
。
不幸的是,在 lli 中运行任何 RxCpp 示例都失败了:
错误信息:
问题:
这个错误到底是什么意思?- llvm 的 orc-jit 中有哪些不满足的假设?
有解决方法吗?- 我可以应用任何 LLVM-IR 转换来完成这项工作(例如,通过编译器标志)?
RxCpp 使用了哪些特殊功能导致 llvm 的 orcjit 出现此问题?
测试:
c++ - LLVM 中的命名混淆
我一直在尝试构建和执行 LLVM 模块。我生成模块的代码很长,所以我不会在这里发布。相反,我的问题是关于 Clang 和 LLVM 如何协同工作以实现名称修改。我将解释我的具体问题以激发问题。
这是我的 LLVM 模块之一的源代码:
这是生成的 LLVM IR;对于 StackOverflow 来说太大了。
当我尝试使用 执行我的模块lli
时,我收到以下错误:
通过 demangler 运行符号,缺少的符号是:
extra_
可疑,IR 中似乎存在没有前导下划线的功能!
我在 macOS 上,所以可以预期一个前导下划线,但我认为 Clang 可能会添加两次。
我查看了 LLVM / Clang 源代码,似乎有两个修改步骤:
- 采用可能重载的 C++ 函数并将它们修改为 LLVM IR 的唯一名称
- 从 LLVM IR 中取一个损坏的名称并添加任何特定于平台的怪癖,例如前导下划线
然而,这只是我的理论。有人可以解释一下 Clang 和 LLVM 中的重整过程是如何工作的吗?我应该如何创建我的llvm::DataLayout
对象来为我的平台获得正确的修饰?
当我尝试编译 IR 时,出现此错误:
llvm - 来自标准库的外部函数在 lli 中未解析
我正在尝试在 llvm lli 中运行简单的代码(根据Getting Started with the LLVM System)
我得到了 .bc 文件
和
但得到下一个错误:
我认为这是非常基本的错误,但我不明白我做错了什么。在窗户上工作。
c++ - 如何在 llvm-ir 中模拟 thread_local?
以下代码目前在 lli 中不起作用:
llvm-ir:
它会导致以下错误:
有没有办法模拟 TLS 并转换 llvm-ir 以使其工作?
使用从 thread_id 到指针的全局映射并将每次出现的 thread-local 替换为 allocator/deallocator/getter/setter 是否可行?
-femulated-tls
和有什么-ftls-model
用?
相关问题:
如何在 IR 转换过程中执行 TargetLowering?
http://lists.llvm.org/pipermail/llvm-dev/2017-February/109947.html
c++ - 如何在 IR 转换过程中执行 TargetLowering?
为了向 orcjit 提供 TLS 支持,我想将没有 TLS 模拟的 llvm::Modules 转换为模拟 TLS 并依赖于运行时的模块。
类似的功能已经在 中实现TargetLowering::LowerToTLSEmulatedModel
,但是它不能在 IR 上运行。
那么,我如何以 llvm::Pass 的形式实现和执行此操作?
llvm - How to run LLVM interpreter with a shared library?
I have mylib.c
file which has some functions. I want to use those functions from my .c
file as external ones in compiled llvm code. I'm playing with LLVM interpreter (lli-4.0
) and I wonder how can I tell lli
to use functions from my .c
file?
llvm - bash:/usr/local/bin/lli:无法执行二进制文件:执行格式错误
我正在尝试使用lli file.ll
但出现此错误
可能是什么问题呢?
rust - rustc 生成的 LLVM 在使用 lli 运行时给出关于 main 参数类型的错误
我正在尝试了解一些有关 LLVM IR 的知识,尤其是 rustc 输出的内容。即使是一个非常简单的案例,我也遇到了一些麻烦。
我将以下内容放在源文件中simple.rs
:
并运行rustc --emit llvm-ir simple.rs
以获取文件simple.ll
,其中包含
然后我尝试使用命令运行它
但我收到错误消息
我可以对此进行最小复制,如下所示:我制作了一个名为 的文件s2.ll
,其中包含
并运行lli-3.9 s2.ll
给出相同的错误消息。但是,如果我将内容更改s2.ll
为
(即我已经更改了argc
in main 的类型)然后lli-3.9 s2.ll
运行,并echo $?
显示它确实返回了42
。
我不认为我应该i64
显式地传递 - 我的参数列表或 C 字符串应该被放入内存中的某个地方,并且指针和长度main
自动传递给,对吗?因此,我认为我在调用的方式上做错了lli
——但我不知道是什么。
haskell - 编译到 LLVM IR 的 Haskell 程序缺少 main
在这篇关于将 Haskell 程序编译为 LLVM IR 的 SO 帖子之后,我采用了相同的 Haskell 程序并尝试运行其生成的 LLVM IR 代码:
我首先将它编译为 LLVM IR
然后我将其转换为位码:
但是,当我尝试使用它运行它时,lli
我收到以下关于缺少 main 的错误:
难道我做错了什么?谢谢。
编辑:(来自 KA Buhr 的回答)