gpt4 book ai didi

compilation - 如何为 GDB 的 JIT 代码生成 ELF 文件格式?

转载 作者:行者123 更新时间:2023-12-04 03:39:05 36 4
gpt4 key购买 nike

背景:

我正在生成 JIT 代码(生成 x86-64 代码)。在 JIT 流程结束后,我生成了一个 .text 部分、一个 .data 部分和一个 .eh_frame 部分(.eh_frame 用于堆栈展开)。我能够成功执行此 JIT 代码。但问题是GDB。我希望能够使用 GDB 调试此 JIT 代码(特别是 GDB 的“回溯”命令应该起作用)。

问题:

我需要告诉 GDB 关于这个加载的 JIT 代码(特别是我需要告诉 GDB 关于 .eh_frame 以便它可以使用该框架进行堆栈展开)。我看到 GDB 有一个 JIT 接口(interface):https://sourceware.org/gdb/current/onlinedocs/gdb/JIT-Interface.html

可能的解决方案:

这里有两个选项:

  1. 将一个ELF文件交给GDB
  2. 编写一个 Customer Jit-Reader 插件来处理自定义对象文件的调试。

现在我有一个自定义目标文件(只是一堆加载到内存中的三个独立部分)。我不想编写自己的 Jit Reader 插件。

阻塞问题:

有谁知道现有的代码可以帮助我将这三个独立的部分打包成一个简单的 ELF 文件(然后我可以通过调用 __jit_debug_register_code() 向 GDB 注册)?我猜我需要做的就是写一些标题(符合 ELF 规范),其中包含名称和指向该部分的指针。是否有现成的开源代码,如果没有,有人可以告诉我如何自己打包吗?

我需要最低限度的 ELF 文件,以便 GDB 满意(我不需要加载 ELF 文件,因为 .text 和 .data 部分已经加载)

最佳答案

libelf 可能有助于构建 ELF 对象。有可用的开源实现:

关于compilation - 如何为 GDB 的 JIT 代码生成 ELF 文件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66374799/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com