:: commit a648d763e628a3b41a168fb8ac0ad5d7b7363916

Mintsuki <mintsuki@protonmail.com> — 2025-06-07 04:43

parents: 28f19d1bc2

lib/elf: Only add bss span to mem to skip if highest address PHDR

Fixes #504
diff --git a/common/lib/elf.c b/common/lib/elf.c
index 0a39df95..e54322c0 100644
--- a/common/lib/elf.c
+++ b/common/lib/elf.c
@@ -877,7 +877,9 @@ again:
 
         memcpy((void *)(uintptr_t)load_addr, elf + (phdr->p_offset), phdr->p_filesz);
 
-        bss_size = phdr->p_memsz - phdr->p_filesz;
+        if (phdr->p_vaddr + phdr->p_memsz == max_vaddr) {
+            bss_size = phdr->p_memsz - phdr->p_filesz;
+        }
 
         if (!elf64_apply_relocations(elf, hdr, (void *)(uintptr_t)load_addr, phdr->p_vaddr, phdr->p_memsz, slide)) {
             panic(true, "elf: Failed to apply relocations");
tab: 248 wrap: offon