authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-09-04 08:47:17-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-09-10 08:29:31-04:00
log778519bb0d883eed7b2a4e89ae7db68c15271ee3
treef505364c4cc25e421a1fa6f8e927c4a0f81bb478
parent90075345519f165a0164c52b62b78453068c6ce6

Dwarf: fix missing padding before incrementally updated entries


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

src/link/Dwarf.zig+6-4
......@@ -847,10 +847,11 @@ const Entry = struct {
847847 unit.len -| (unit.header_len + unit.trailer_len);
848848 if (entry_ptr.off + len > end) {
849849 if (entry_ptr.next.unwrap()) |next_entry| {
850 if (entry_ptr.prev.unwrap()) |prev_entry|
851 unit.getEntry(prev_entry).next = entry_ptr.next
852 else
853 unit.first = entry_ptr.next;
850 if (entry_ptr.prev.unwrap()) |prev_entry| {
851 const prev_entry_ptr = unit.getEntry(prev_entry);
852 prev_entry_ptr.next = entry_ptr.next;
853 try prev_entry_ptr.pad(unit, sec, dwarf);
854 } else unit.first = entry_ptr.next;
854855 const next_entry_ptr = unit.getEntry(next_entry);
855856 const entry = next_entry_ptr.prev;
856857 next_entry_ptr.prev = entry_ptr.prev;
......@@ -860,6 +861,7 @@ const Entry = struct {
860861 entry_ptr.next = .none;
861862 entry_ptr.off = last_entry_ptr.off + sec.padToIdeal(last_entry_ptr.len);
862863 unit.last = entry;
864 try last_entry_ptr.pad(unit, sec, dwarf);
863865 }
864866 try unit.resize(sec, dwarf, 0, @intCast(unit.header_len + entry_ptr.off + sec.padToIdeal(len) + unit.trailer_len));
865867 }