aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-09-24 11:09:17 +0200
committerJakub Konka <kubkon@jakubkonka.com>2024-09-25 17:54:50 +0200
commit82cf762b0205f036677d234abb35bf1deafb5c7e (patch)
tree509f818ba8e5d2162fe049913b3bb99fba70eb00
parentdb3db1150e48cf506593489dff93adda9e1111fe (diff)
downloadzig-82cf762b0205f036677d234abb35bf1deafb5c7e.tar.gz
zig-82cf762b0205f036677d234abb35bf1deafb5c7e.zip
elf: reset (merge) sections sizes before updating
-rw-r--r--src/link/Elf/AtomList.zig3
-rw-r--r--src/link/Elf/merge_section.zig4
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);