DORMANTno replies

[PATCH] patchelf: Fix alignment patch

From: Richard Purdie <hidden>
Date: 2021-05-02 22:20:01
Subsystem: the rest · Maintainer: Linus Torvalds

The previous fix was in the right direction but needed to account
for the section alignment of the current section. Tweak the patch
to handle this.

Signed-off-by: Richard Purdie <redacted>
---
 .../patchelf/patchelf/alignmentfix.patch      | 20 ++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch b/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch
index 62e11a5e7f8..a06876e50a1 100644
--- a/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch
+++ b/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch
@@ -31,12 +31,14 @@ Index: git/src/patchelf.cc
 ===================================================================
 --- git.orig/src/patchelf.cc
 +++ git/src/patchelf.cc
-@@ -1035,6 +1035,8 @@ void ElfFile<ElfFileParamNames>::normali
-                 phdrs.push_back(new_phdr);
- 
-             curr_off += size;
-+            /* The next section offset would be aligned */
-+            curr_off = roundUp(curr_off, sectionAlignment);
-         }
-     }
-     wri(hdr->e_phnum, phdrs.size());
+@@ -1010,8 +1010,9 @@ void ElfFile<ElfFileParamNames>::normali
+             size_t size = 0;
+             for (const auto & shdr : shdrs) {
+                 if (rdi(shdr.sh_type) != SHT_NOTE) continue;
+-                if (rdi(shdr.sh_offset) != curr_off) continue;
++                if (rdi(shdr.sh_offset) != roundUp(curr_off, rdi(shdr.sh_addralign))) continue;
+                 size = rdi(shdr.sh_size);
++                curr_off = roundUp(curr_off, rdi(shdr.sh_addralign));
+                 break;
+             }
+             if (size == 0)
-- 
2.30.2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help