elf: set shdr/phdr file size before growing in VM

This commit is contained in:
Jakub Konka 2023-09-29 21:43:01 +02:00
parent 304d38e844
commit 8e90b41ae0

View File

@ -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);
}