在第二个编码周期中,我们实现了 .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 部分。