diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-09-24 11:09:17 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-09-25 17:54:50 +0200 |
| commit | 82cf762b0205f036677d234abb35bf1deafb5c7e (patch) | |
| tree | 509f818ba8e5d2162fe049913b3bb99fba70eb00 | |
| parent | db3db1150e48cf506593489dff93adda9e1111fe (diff) | |
| download | zig-82cf762b0205f036677d234abb35bf1deafb5c7e.tar.gz zig-82cf762b0205f036677d234abb35bf1deafb5c7e.zip | |
elf: reset (merge) sections sizes before updating
| -rw-r--r-- | src/link/Elf/AtomList.zig | 3 | ||||
| -rw-r--r-- | src/link/Elf/merge_section.zig | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/link/Elf/AtomList.zig b/src/link/Elf/AtomList.zig index 5fc1893376..dfabbe0ff7 100644 --- a/src/link/Elf/AtomList.zig +++ b/src/link/Elf/AtomList.zig @@ -19,6 +19,9 @@ pub fn offset(list: AtomList, elf_file: *Elf) u64 { } pub fn updateSize(list: *AtomList, elf_file: *Elf) void { + // TODO perhaps a 'stale' flag would be better here? + list.size = 0; + list.alignment = .@"1"; for (list.atoms.items) |ref| { const atom_ptr = elf_file.atom(ref).?; assert(atom_ptr.alive); diff --git a/src/link/Elf/merge_section.zig b/src/link/Elf/merge_section.zig index cf6506a9ea..dc6239d738 100644 --- a/src/link/Elf/merge_section.zig +++ b/src/link/Elf/merge_section.zig @@ -95,6 +95,10 @@ pub const MergeSection = struct { } pub fn updateSize(msec: *MergeSection) void { + // TODO a 'stale' flag would be better here perhaps? + msec.size = 0; + msec.alignment = .@"1"; + msec.entsize = 0; for (msec.finalized_subsections.items) |msub_index| { const msub = msec.mergeSubsection(msub_index); assert(msub.alive); |
