higuoxing

higuoxing

github
twitter

我与LLVM的旅程(GSoC'20 第二阶段)

在第二个编码周期中,我们实现了 .debug_str_offsets.debug_rnglists.debug_loclists 部分。我们能够通过以下语法手动构建这三个部分。

部分语法
debug_str_offsets
debug_rnglists
debug_loclists

注意: .debug_loclists 部分已实现,但尚未合并。

我们还教会了 yaml2obj 推断编译单元的长度。现在,我们能够手动构建 .debug_info 部分,而不必担心长度字段。

部分语法
debug_info

你可能注意到,我们仍然需要手动计算 AbbrOffset 字段,这使得手动构建 .debug_info 部分变得非常困难。在下一个编码周期中,我们将解决这个问题,并使 yaml2obj 能够相互链接一些 DWARF 部分。如果时间允许,我们还希望为 obj2yaml 添加 DWARF 支持。

需要改进的领域#

在第二个编码周期中,我不擅长将一个巨大的更改拆分成几个小补丁,这给审阅者带来了不便。我会在未来尽量避免这样。正如 James 指出的那样,我应该与他人多沟通。当我实现这些 DWARF 部分时,我应该了解人们的需求并询问他人的意见,而不是自己单干,实施我心中的想法。直到我处理 .debug_loclists 部分时,我才意识到这一点。Pavel Labath 给了我一些很好的建议和评论,这是我之前没有想到的!

已接受的补丁#

D84496 [DWARFYAML] 用 'FormParams' 替换 'Format'、'Version' 等。NFC.

D84383 [DWARFYAML] 提取 rnglist 和 loclist 表的公共辅助函数。NFC.

D84008 [DWARFYAML] 重构 emitDebugInfo () 以推断长度。

D84239 [DWARFYAML] 重构范围列表表以容纳更多数据结构。

D83624 [DWARFYAML] 实现 .debug_rnglists 部分。

D83853 [DWARFYAML] 实现 .debug_str_offsets 部分。

D83749 [DWARFYAML] 添加对发出 strx、addrx 等值形式的支持。

D83452 [DWARFYAML] 为了更好的安全性,使用 override 而不是 virtual。

D83220 [DWARFYAML][unittest] 重构 parseDWARFYAML ()。

进行中的补丁#

D84386 [DWARFYAML] 添加对发出范围列表条目的自定义操作数的支持。

D84234 [DWARFYAML] 实现 .debug_loclists 部分。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。