问题标签 [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.

0 投票
2 回答
679 浏览

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(不幸的是,直接在这里嵌入它太大了)

0 投票
1 回答
440 浏览

c++ - llvm 错误:尚未实施重定位!在 orcjit 或 lli 中运行 RxCpp 时

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

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

错误信息:

问题:

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

有解决方法吗?- 我可以应用任何 LLVM-IR 转换来完成这项工作(例如,通过编译器标志)?

RxCpp 使用了哪些特殊功能导致 llvm 的 orcjit 出现此问题?

测试:

0 投票
1 回答
4195 浏览

c++ - LLVM 中的命名混淆

我一直在尝试构建和执行 LLVM 模块。我生成模块的代码很长,所以我不会在这里发布。相反,我的问题是关于 Clang 和 LLVM 如何协同工作以实现名称修改。我将解释我的具体问题以激发问题。

这是我的 LLVM 模块之一的源代码:

这是生成的 LLVM IR;对于 StackOverflow 来说太大了。

当我尝试使用 执行我的模块lli时,我收到以下错误:

通过 demangler 运行符号,缺少的符号是:

extra_可疑,IR 中似乎存在没有前导下划线的功能!

我在 macOS 上,所以可以预期一个前导下划线,但我认为 Clang 可能会添加两次

我查看了 LLVM / Clang 源代码,似乎有两个修改步骤:

  1. 采用可能重载的 C++ 函数并将它们修改为 LLVM IR 的唯一名称
  2. 从 LLVM IR 中取一个损坏的名称并添加任何特定于平台的怪癖,例如前导下划线

然而,这只是我的理论。有人可以解释一下 Clang 和 LLVM 中的重整过程是如何工作的吗?我应该如何创建我的llvm::DataLayout对象来为我的平台获得正确的修饰?



当我尝试编译 IR 时,出现此错误:

0 投票
0 回答
241 浏览

llvm - 来自标准库的外部函数在 lli 中未解析

我正在尝试在 llvm lli 中运行简单的代码(根据Getting Started with the LLVM System

我得到了 .bc 文件

但得到下一个错误:

我认为这是非常基本的错误,但我不明白我做错了什么。在窗户上工作。

0 投票
1 回答
1252 浏览

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

0 投票
0 回答
62 浏览

c++ - 如何在 IR 转换过程中执行 TargetLowering?

为了向 orcjit 提供 TLS 支持,我想将没有 TLS 模拟的 llvm::Modules 转换为模拟 TLS 并依赖于运行时的模块。

类似的功能已经在 中实现TargetLowering::LowerToTLSEmulatedModel,但是它不能在 IR 上运行。

那么,我如何以 llvm::Pass 的形式实现和执行此操作?

0 投票
2 回答
871 浏览

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?

0 投票
0 回答
925 浏览

llvm - bash:/usr/local/bin/lli:无法执行二进制文件:执行格式错误

我正在尝试使用lli file.ll但出现此错误

可能是什么问题呢?

0 投票
1 回答
327 浏览

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

(即我已经更改了argcin main 的类型)然后lli-3.9 s2.ll运行,并echo $?显示它确实返回了42

我不认为我应该i64显式地传递 - 我的参数列表或 C 字符串应该被放入内存中的某个地方,并且指针和长度main自动传递给,对吗?因此,我认为我在调用的方式上做错了lli——但我不知道是什么。

0 投票
1 回答
323 浏览

haskell - 编译到 LLVM IR 的 Haskell 程序缺少 main

这篇关于将 Haskell 程序编译为 LLVM IR 的 SO 帖子之后,我采用了相同的 Haskell 程序并尝试运行其生成的 LLVM IR 代码:

我首先将它编译为 LLVM IR

然后我将其转换为位码:

但是,当我尝试使用它运行它时,lli我收到以下关于缺少 main 的错误:

难道我做错了什么?谢谢。

编辑:(来自 KA Buhr 的回答)