问题标签 [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.
llvm - 如何获取 lli 执行跟踪
有没有办法获得 lli 执行跟踪。作为给定程序的示例:
我想要一些运行时输出,例如:
我找到了一个 XRay 项目,但它似乎很复杂。是否有任何 llc 本机方式来输出执行跟踪?
llvm - 如何使用 LLVM JIT 在 windows 上执行 c++ ir 代码
C++代码:
使用 clang & lli:
clang++ -S -emit-llvm hello.cpp -o hello.ll
lli.exe你好.ll
它报告了一个致命错误,例如“程序使用了无法解析的外部函数??_7type_info@@6B@”。我该如何解决该链接问题?符号 ??_7type_info@@6B@ 定义在?
linker - 如何在 lli (LLVM) 中使用 I Address Sanitizer
我想运行一个带有地址清理器参数的位码,但我有一个问题,如果我运行它,就会发生分段错误。
c++ - 在使用 LLVM 解释器时查找变量名
当使用 LLVM Interpreter(Aka lli
) 时,Instruction
对象在Interpreter::run()
函数中运行,就像在代码中一样。
带有DEBUG
预处理器的行将打印这样的 .ll 文件中写入的指令。
即将解释:%retval = alloca i32, align 4
如何获取 LLVM IR 变量的名称?
在这种情况下会%retval
。
memory-leaks - 在 LLVM LLI 解释器上禁用内存异常
有没有办法在运行 lli 解释器时禁用异常?我想禁用以下崩溃,以便我可以进行内存分析——它目前在释放后释放错误后中止:
我正在使用的程序是:
然后我将其转换为 LLVM IR,然后使用 lli 进行解释:
c++ - clang 解释器未能实现符号
我是 LLVM 工具套件的新手,我想做的是获得一个非常简单的“hello-world”C++ 程序来编译到 LLVM IR,然后使用 lli 工具运行它。
所以这里是程序代码(hello.cpp):
以下是我为实现该目标而采取的步骤:
我了解某些符号未加载(C++ 标准库符号)。我不确定如何将这些符号的位置指定给 lli 工具(我尝试了 --extra-object 选项但没有效果)。
有人可以让我知道我错过了什么或做错了什么吗?任何帮助是极大的赞赏!!!
-- 谢谢,伊戈尔
堆栈转储:
c - LLVM 解释器 (lli) 和共享对象加载
我正在尝试使用lli
解释/JIT 编译a.bc
使用共享对象中定义的函数的位码文件afl-llvm-rt.so
。当我尝试像这样使用 lli
我得到:
进一步调查gdb
显示未设置函数地址:
但是,如果我像往常一样编译文件clang a.bc ./afl-llvm-rt.so
,输出可执行文件就可以了。
如何进行动态lli
链接?a.bc
afl-llvm-rt.so
编辑:我编译afl-llvm-rt.so
为 LLVM IR 文件,然后我llvm-link a.bc afl-llvm-rt.bc -o result.bc
将它们链接在一起。之后,我尝试lli result.bc
了,它给出了以下内容:
但如果 I clang result.bc -o result
,result
可执行文件执行得很好。
gdb - GDB 显示 LLVM IR 变量失败
我构建了一个简单的应用程序:
你好ç
使用 LLVM IR 表示:
使用debug.ir工具,我将其转换为:
你好.dbg.ll
现在运行 gdb:
当我尝试获取变量值时,我会得到一个错误:
我应该如何获得%3
变量的值?
llvm - 在 LLVM IR 中使用 printf
因此,我一直在使用 Rust 为简单的 lisp 编写编译器,并使用Inkwell crate 生成 LLVM IR。在尝试找到一种将值打印到标准输出的方法时,我遇到了许多使用打印函数的答案,就像在 C/C++ 中一样。在大多数情况下,它似乎没有任何问题。
然而,只有函数声明出现在生成的 IR 中,所以这可能意味着定义被 llvm 本身链接到某个地方(目前使用 lli 解释器,因为它更容易测试)。无论如何,我只是想了解这个函数的定义位置。就像在 llvm 中定义的核心模块一样吗?还是使用依赖于类 Unix 平台的 printf 而不是 llvm 的东西,因为大多数 llvm 函数似乎都有“llvm”前缀?
c# - 使用进程调用 cmd.exe 命令的 NUnit 测试未通过
所以我正在创建一个 NUnit 项目,其中每个测试:
- 运行一个新
Process
的System.Diagnostics
- 用于
cmd.exe
以lli.exe
LLVM 代码文件作为参数进行调用 - 检查此命令的退出代码和输出
一切顺利,测试在单独运行时通过,从测试资源管理器中逐一运行。但是,当我尝试在一次运行中运行多个测试时,就会出现问题。这是我的代码:
当我在一次运行中运行所有 3 个测试时,只有第一个TestFile1
通过,其余的在这个断言处停止:
Assert.AreEqual(0, proc.ExitCode);
等于proc.ExitCode
1。此外,result
字符串是空的(因为它不应该是 的情况下TestFile3
)。
并行运行不是这种情况,我按顺序运行它们。此外,添加[NonParallelizable]
属性不会改变任何内容。创建的文件Compiler
是正确创建的,并且可以使用lli.exe
.
我使用 VSCode 2019 16.10.2。该项目在 .Net Framework 4.8 和 NUnit 3.13.2 上运行。(我知道我可以使用 .net core 或 .net5,但这是项目的要求)。
我的想法用完了,需要帮助!:)