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 支持。

需要改進的地方#

在第二個編碼階段,我不擅長將一個巨大的變更拆分為幾個小補丁,這給審核者帶來了不便。我會在未來努力避免這種情況。正如詹姆斯所指出的,我應該多與他人溝通。在實現這些 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 區段。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。