在第二個編碼階段,我們實現了 .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 支持。
需要改進的地方#
在第二個編碼階段,我不擅長將一個巨大的變更拆分為幾個小補丁,這給審核者帶來了不便。我會在未來努力避免這種情況。正如詹姆斯所指出的,我應該多與他人溝通。在實現這些 DWARF 區段時,我應該了解人們的需求,並詢問他人的意見,而不是自己獨自思考並實現我心中的想法。直到我在 .debug_loclists
區段工作時,我才意識到這一點。帕維爾・拉巴斯給了我一些很好的建議和評論,這些都是我之前沒有想到的!
已接受的補丁#
D84496 [DWARFYAML] 將 'Format'、'Version' 等替換為 'FormParams'。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 區段。