第 2 のコーディング期間では、.debug_str_offsets
、.debug_rnglists
、および.debug_loclists
セクションを実装しました。以下の構文を使用して、これらの 3 つのセクションを手作りすることができます。
セクション | 構文 |
---|---|
debug_str_offsets | |
debug_rnglists | |
debug_loclists 注意:.debug_loclists セクションは実装されていますが、まだリリースされていません。 |
また、yaml2obj
にコンパイルユニットの長さを推測させるようにしました。これにより、.debug_info
セクションを手作りする際に長さフィールドを気にする必要がなくなりました。
セクション | 構文 |
---|---|
debug_info |
おそらく気づいたかもしれませんが、AbbrOffset
フィールドを手動で計算する必要があり、.debug_info
セクションを手作りするのが非常に困難です。次のコーディング期間では、この問題に取り組み、yaml2obj
がいくつかの DWARF セクションを相互リンクできるようにする予定です。時間が許せば、obj2yaml
にも DWARF サポートを追加したいと考えています。
改善が必要な領域#
第 2 のコーディング期間では、大きな変更をいくつかの小さなパッチに分割することが得意ではありませんでした。これはレビュワーに不便をもたらします。将来的にはこれを避けるようにします。James が指摘したように、他の人ともっとコミュニケーションを取るべきです。これらの DWARF セクションを実装する際には、人々の要件を学び、自分自身で行うのではなく、他の人の意見を尋ねるべきでした。私はそれが .debug_loclists
セクションで作業するまで気づきませんでした。Pavel Labath からいくつかの良いアドバイスとコメントをいただきましたが、それまでは考えも及びませんでした!
承認されたパッチ#
D84496 [DWARFYAML] Replace 'Format', 'Version', etc with 'FormParams'. NFC.
D84383 [DWARFYAML] Pull out common helper functions for rnglist and loclist tables. NFC.
D84008 [DWARFYAML] Refactor emitDebugInfo() to make the length be inferred.
D84239 [DWARFYAML] Refactor range list table to hold more data structure.
D83624 [DWARFYAML] Implement the .debug_rnglists section.
D83853 [DWARFYAML] Implement the .debug_str_offsets section.
D83749 [DWARFYAML] Add support for emitting value forms of strx, addrx, etc.
D83452 [DWARFYAML] Use override instead of virtual for better safety.
D83220 [DWARFYAML][unittest] Refactor parseDWARFYAML().
進行中のパッチ#
D84386 [DWARFYAML] Add support for emitting custom operands for range list entry.
D84234 [DWARFYAML] Implement the .debug_loclists section.