aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-09-29 21:43:01 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-09-29 21:43:01 +0200
commit8e90b41ae044d976a710d608c95a7c801672d932 (patch)
treed39fa843d427e351d2761ba9452a78ac047d9f2c
parent304d38e844f5c2aeb42e3879a230f5916e704c0d (diff)
downloadzig-8e90b41ae044d976a710d608c95a7c801672d932.tar.gz
zig-8e90b41ae044d976a710d608c95a7c801672d932.zip
elf: set shdr/phdr file size before growing in VM
-rw-r--r--src/link/Elf.zig10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index c669c80221..32e8c79441 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -926,6 +926,11 @@ pub fn growAllocSection(self: *Elf, shdr_index: u16, needed_size: u64) !void {
phdr.p_offset = new_offset;
}
+ shdr.sh_size = needed_size;
+ if (!is_zerofill) {
+ phdr.p_filesz = needed_size;
+ }
+
const mem_capacity = self.allocatedVirtualSize(phdr.p_vaddr);
if (needed_size > mem_capacity) {
// We are exceeding our allocated VM capacity so we need to shift everything in memory
@@ -952,13 +957,8 @@ pub fn growAllocSection(self: *Elf, shdr_index: u16, needed_size: u64) !void {
}
}
- shdr.sh_size = needed_size;
phdr.p_memsz = needed_size;
- if (!is_zerofill) {
- phdr.p_filesz = needed_size;
- }
-
self.markDirty(shdr_index, phdr_index);
}