浏览代码

package/frr: fix elf_py TLS section handling

Fix the following build failure raised on mipsel, or1k, powerpc raised
since bump to version 8.1 in commit
ca2753fd47d47e5ad0eec16ea62f7b7f096331b6:

struct.error: unpack requires a buffer of 20 bytes

Fixes:
 - http://autobuild.buildroot.org/results/74f39c6f14e3f60babdcabceb5e42656f69cdaa7

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Fabrice Fontaine 3 年之前
父节点
当前提交
43c8f8b77b
共有 1 个文件被更改,包括 31 次插入0 次删除
  1. 31 0
      package/frr/0002-lib-fix-elf_py-TLS-section-handling.patch

+ 31 - 0
package/frr/0002-lib-fix-elf_py-TLS-section-handling.patch

@@ -0,0 +1,31 @@
+From 3942ee1f7bc754dd0dd9ae79f89d0f2635be334f Mon Sep 17 00:00:00 2001
+From: David Lamparter <equinox@opensourcerouting.org>
+Date: Wed, 10 Nov 2021 15:30:07 +0100
+Subject: [PATCH] lib: fix elf_py TLS section handling
+
+... need to ignore TLS sections, their address is effectively
+meaningless but can overlap other sections we actually need to access.
+
+Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
+
+[Retrieved from:
+https://github.com/FRRouting/frr/commit/3942ee1f7bc754dd0dd9ae79f89d0f2635be334f]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ lib/elf_py.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/lib/elf_py.c b/lib/elf_py.c
+index 1c306893ad8..f230add6957 100644
+--- a/lib/elf_py.c
++++ b/lib/elf_py.c
+@@ -636,6 +636,9 @@ static Elf_Scn *elf_find_addr(struct elffile *ef, uint64_t addr, size_t *idx)
+ 		Elf_Scn *scn = elf_getscn(ef->elf, i);
+ 		GElf_Shdr _shdr, *shdr = gelf_getshdr(scn, &_shdr);
+ 
++		/* virtual address is kinda meaningless for TLS sections */
++		if (shdr->sh_flags & SHF_TLS)
++			continue;
+ 		if (addr < shdr->sh_addr ||
+ 		    addr >= shdr->sh_addr + shdr->sh_size)
+ 			continue;