LLVM ORC-从ORCJIT中添加和删除目标文件导致分段错误

时间:2020-07-29 10:20:22

标签: c llvm llvm-clang llvm-ir object-files

使用LLVM 8和Clang 8。

有多个(1 + N)C程序。 1 C程序(acts行main)具有访问其他程序(N)中所有其他功能的功能。我正在使用Clang将其编译为目标文件,并将其移植到另一台机器(虽然使用相同的Flavor),并使用LLVM ORC JIT执行引擎在运行时加载对象以执行。

进程启动时,它将加载系统中所有可用的对象(1 + N)。 N中的一个C程序将有更新。我们将编译1个Sub C程序和更改后的主程序,并将其发送到系统中以供执行。执行过程将从内存中删除旧对象,并添加新对象并继续执行。

这很好。但是偶尔会发生崩溃(少于2%) SEGV(分段错误)。当对 Globals或Constant 进行访问时会发生崩溃。因此,问题似乎在数据段中。

Compiler option used during Object file creation

"clang", "clang", "-c", "-g3", "-Wunused-variable", "-O0", "-fPIC", "-fpic" ....

API Used to add object to ORC JIT

LLVMOrcCreateInstance
LLVMOrcAddObjectFile
LLVMOrcRemoveModule

0 个答案:

没有答案