From 299ad5766921d593e11a42a8e4dec55b4b350876 Mon Sep 17 00:00:00 2001 From: Yuta Hayama Date: Mon, 31 Jul 2023 11:58:49 +0900 Subject: [PATCH] make LOAD segment extensions based on p_align instead of pagesize Since the p_align of the LOAD segment is no longer pagesize, the actual p_align value is used to calculate for the LOAD segment extension. If calculated with pagesize, new LOAD segment may be added even though the existing LOAD segment can be extended. Signed-off-by: Martin Jansa --- Upstream-Status: Submitted [https://github.com/NixOS/patchelf/pull/510] src/patchelf.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/patchelf.cc b/src/patchelf.cc index 6edb81a..86429c4 100644 --- a/src/patchelf.cc +++ b/src/patchelf.cc @@ -885,7 +885,7 @@ void ElfFile::rewriteSectionsLibrary() rdi(lastSeg.p_type) == PT_LOAD && rdi(lastSeg.p_flags) == (PF_R | PF_W) && rdi(lastSeg.p_align) == alignStartPage) { - auto segEnd = roundUp(rdi(lastSeg.p_offset) + rdi(lastSeg.p_memsz), getPageSize()); + auto segEnd = roundUp(rdi(lastSeg.p_offset) + rdi(lastSeg.p_memsz), alignStartPage); if (segEnd == startOffset) { auto newSz = startOffset + neededSpace - rdi(lastSeg.p_offset); wri(lastSeg.p_filesz, wri(lastSeg.p_memsz, newSz));