authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-08-16 14:44:41-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-08-16 15:22:56-04:00
log00ca818805e035a5ba6d982a20b19bfa3f4f1232
tree4e1644dc3b2a602b81d0f9ac3e6398ec14f221f6
parentad634537ce1cf94e45ea13469dfb2032e1e219f8

Dwarf: incremental also needs `end_sequence`

The spec says that addresses can only increase within a sequence, so every decl must be a separate sequence since they are not sorted.

1 files changed, 4 insertions(+), 6 deletions(-)

src/link/Dwarf.zig+4-6
...@@ -1855,12 +1855,10 @@ pub fn finishWipNav(...@@ -1855,12 +1855,10 @@ pub fn finishWipNav(
18551855
1856 try dwarf.debug_info.section.replaceEntry(wip_nav.unit, wip_nav.entry, dwarf, wip_nav.debug_info.items);1856 try dwarf.debug_info.section.replaceEntry(wip_nav.unit, wip_nav.entry, dwarf, wip_nav.debug_info.items);
1857 if (wip_nav.debug_line.items.len > 0) {1857 if (wip_nav.debug_line.items.len > 0) {
1858 if (!dwarf.incremental()) {1858 const dlw = wip_nav.debug_line.writer(dwarf.gpa);
1859 const dlw = wip_nav.debug_line.writer(dwarf.gpa);1859 try dlw.writeByte(DW.LNS.extended_op);
1860 try dlw.writeByte(DW.LNS.extended_op);1860 try uleb128(dlw, 1);
1861 try uleb128(dlw, 1);1861 try dlw.writeByte(DW.LNE.end_sequence);
1862 try dlw.writeByte(DW.LNE.end_sequence);
1863 }
1864 try dwarf.debug_line.section.replaceEntry(wip_nav.unit, wip_nav.entry, dwarf, wip_nav.debug_line.items);1862 try dwarf.debug_line.section.replaceEntry(wip_nav.unit, wip_nav.entry, dwarf, wip_nav.debug_line.items);
1865 }1863 }
1866 try dwarf.debug_loclists.section.replaceEntry(wip_nav.unit, wip_nav.entry, dwarf, wip_nav.debug_loclists.items);1864 try dwarf.debug_loclists.section.replaceEntry(wip_nav.unit, wip_nav.entry, dwarf, wip_nav.debug_loclists.items);