authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-09-24 11:09:17+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-09-25 17:54:50+02:00
log82cf762b0205f036677d234abb35bf1deafb5c7e
tree509f818ba8e5d2162fe049913b3bb99fba70eb00
parentdb3db1150e48cf506593489dff93adda9e1111fe

elf: reset (merge) sections sizes before updating


2 files changed, 7 insertions(+), 0 deletions(-)

src/link/Elf/AtomList.zig+3
...@@ -19,6 +19,9 @@ pub fn offset(list: AtomList, elf_file: *Elf) u64 {...@@ -19,6 +19,9 @@ pub fn offset(list: AtomList, elf_file: *Elf) u64 {
19}19}
2020
21pub fn updateSize(list: *AtomList, elf_file: *Elf) void {21pub fn updateSize(list: *AtomList, elf_file: *Elf) void {
22 // TODO perhaps a 'stale' flag would be better here?
23 list.size = 0;
24 list.alignment = .@"1";
22 for (list.atoms.items) |ref| {25 for (list.atoms.items) |ref| {
23 const atom_ptr = elf_file.atom(ref).?;26 const atom_ptr = elf_file.atom(ref).?;
24 assert(atom_ptr.alive);27 assert(atom_ptr.alive);
src/link/Elf/merge_section.zig+4
...@@ -95,6 +95,10 @@ pub const MergeSection = struct {...@@ -95,6 +95,10 @@ pub const MergeSection = struct {
95 }95 }
9696
97 pub fn updateSize(msec: *MergeSection) void {97 pub fn updateSize(msec: *MergeSection) void {
98 // TODO a 'stale' flag would be better here perhaps?
99 msec.size = 0;
100 msec.alignment = .@"1";
101 msec.entsize = 0;
98 for (msec.finalized_subsections.items) |msub_index| {102 for (msec.finalized_subsections.items) |msub_index| {
99 const msub = msec.mergeSubsection(msub_index);103 const msub = msec.mergeSubsection(msub_index);
100 assert(msub.alive);104 assert(msub.alive);