zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 778519bb0d883eed7b2a4e89ae7db68c15271ee3 (tree)
parent 90075345519f165a0164c52b62b78453068c6ce6
Author: Jacob Young <jacobly0@users.noreply.github.com>
Date:   Wed,  4 Sep 2024 08:47:17 -0400

Dwarf: fix missing padding before incrementally updated entries

Diffstat:
Msrc/link/Dwarf.zig | 10++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig @@ -847,10 +847,11 @@ const Entry = struct { unit.len -| (unit.header_len + unit.trailer_len); if (entry_ptr.off + len > end) { if (entry_ptr.next.unwrap()) |next_entry| { - if (entry_ptr.prev.unwrap()) |prev_entry| - unit.getEntry(prev_entry).next = entry_ptr.next - else - unit.first = entry_ptr.next; + if (entry_ptr.prev.unwrap()) |prev_entry| { + const prev_entry_ptr = unit.getEntry(prev_entry); + prev_entry_ptr.next = entry_ptr.next; + try prev_entry_ptr.pad(unit, sec, dwarf); + } else unit.first = entry_ptr.next; const next_entry_ptr = unit.getEntry(next_entry); const entry = next_entry_ptr.prev; next_entry_ptr.prev = entry_ptr.prev; @@ -860,6 +861,7 @@ const Entry = struct { entry_ptr.next = .none; entry_ptr.off = last_entry_ptr.off + sec.padToIdeal(last_entry_ptr.len); unit.last = entry; + try last_entry_ptr.pad(unit, sec, dwarf); } try unit.resize(sec, dwarf, 0, @intCast(unit.header_len + entry_ptr.off + sec.padToIdeal(len) + unit.trailer_len)); }