diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-05-02 12:11:20 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-05-11 12:02:29 +0100 |
commit | 7e61f58125c7fb5f38ae8d170164be2016c399ef (patch) | |
tree | 2104a86a7d8e14ef0020fe97fd96a1a7c46bc18e /meta | |
parent | 865d46981a637dbb49bbb61fa6937379341f20c3 (diff) | |
download | poky-7e61f58125c7fb5f38ae8d170164be2016c399ef.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.
(From OE-Core rev: 69e5a81ceeba3104ba5954dadc7c65cfa4b1be9b)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit e464efc07a8997c43998a9c6a9544be11ab4f303)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/recipes-devtools/patchelf/patchelf/alignmentfix.patch | 20 |
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 | |||
31 | =================================================================== | 31 | =================================================================== |
32 | --- git.orig/src/patchelf.cc | 32 | --- git.orig/src/patchelf.cc |
33 | +++ git/src/patchelf.cc | 33 | +++ git/src/patchelf.cc |
34 | @@ -1035,6 +1035,8 @@ void ElfFile<ElfFileParamNames>::normali | 34 | @@ -1010,8 +1010,9 @@ void ElfFile<ElfFileParamNames>::normali |
35 | phdrs.push_back(new_phdr); | 35 | size_t size = 0; |
36 | 36 | for (const auto & shdr : shdrs) { | |
37 | curr_off += size; | 37 | if (rdi(shdr.sh_type) != SHT_NOTE) continue; |
38 | + /* The next section offset would be aligned */ | 38 | - if (rdi(shdr.sh_offset) != curr_off) continue; |
39 | + curr_off = roundUp(curr_off, sectionAlignment); | 39 | + if (rdi(shdr.sh_offset) != roundUp(curr_off, rdi(shdr.sh_addralign))) continue; |
40 | } | 40 | size = rdi(shdr.sh_size); |
41 | } | 41 | + curr_off = roundUp(curr_off, rdi(shdr.sh_addralign)); |
42 | wri(hdr->e_phnum, phdrs.size()); | 42 | break; |
43 | } | ||
44 | if (size == 0) | ||