summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2021-05-02 12:11:20 +0100
committerAnuj Mittal <anuj.mittal@intel.com>2021-05-06 10:09:37 +0800
commit69e5a81ceeba3104ba5954dadc7c65cfa4b1be9b (patch)
treead6892265fdd7af89050e9d93ea5a4f4da05f051
parentc0ecb7a67de478b402e1e915d51ca9bbeb662d6c (diff)
downloadopenembedded-core-69e5a81ceeba3104ba5954dadc7c65cfa4b1be9b.tar.gz
patchelf: Fix alignment patch
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 <richard.purdie@linuxfoundation.org> (cherry picked from commit e464efc07a8997c43998a9c6a9544be11ab4f303) Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
-rw-r--r--meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch20
1 files changed, 11 insertions, 9 deletions
diff --git a/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch b/meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch
index 62e11a5e7f..a06876e50a 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)