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 {...@@ -847,10 +847,11 @@ const Entry = struct {
847 unit.len -| (unit.header_len + unit.trailer_len);847 unit.len -| (unit.header_len + unit.trailer_len);
848 if (entry_ptr.off + len > end) {848 if (entry_ptr.off + len > end) {
849 if (entry_ptr.next.unwrap()) |next_entry| {849 if (entry_ptr.next.unwrap()) |next_entry| {
850 if (entry_ptr.prev.unwrap()) |prev_entry|850 if (entry_ptr.prev.unwrap()) |prev_entry| {
851 unit.getEntry(prev_entry).next = entry_ptr.next851 const prev_entry_ptr = unit.getEntry(prev_entry);
852 else852 prev_entry_ptr.next = entry_ptr.next;
853 unit.first = entry_ptr.next;853 try prev_entry_ptr.pad(unit, sec, dwarf);
854 } else unit.first = entry_ptr.next;
854 const next_entry_ptr = unit.getEntry(next_entry);855 const next_entry_ptr = unit.getEntry(next_entry);
855 const entry = next_entry_ptr.prev;856 const entry = next_entry_ptr.prev;
856 next_entry_ptr.prev = entry_ptr.prev;857 next_entry_ptr.prev = entry_ptr.prev;
...@@ -860,6 +861,7 @@ const Entry = struct {...@@ -860,6 +861,7 @@ const Entry = struct {
860 entry_ptr.next = .none;861 entry_ptr.next = .none;
861 entry_ptr.off = last_entry_ptr.off + sec.padToIdeal(last_entry_ptr.len);862 entry_ptr.off = last_entry_ptr.off + sec.padToIdeal(last_entry_ptr.len);
862 unit.last = entry;863 unit.last = entry;
864 try last_entry_ptr.pad(unit, sec, dwarf);
863 }865 }
864 try unit.resize(sec, dwarf, 0, @intCast(unit.header_len + entry_ptr.off + sec.padToIdeal(len) + unit.trailer_len));866 try unit.resize(sec, dwarf, 0, @intCast(unit.header_len + entry_ptr.off + sec.padToIdeal(len) + unit.trailer_len));
865 }867 }