[PATCH] debugedit: Use ELF_F_PERMISSIVE when using ELF_F_LAYOUT
Mark Wielaard
mark@klomp.org
Fri Jun 5 13:07:04 GMT 2026
Normally elf_update will do some strict checks on sections,
specifically it will check that sh_size is a multiple of sh_entsize
(if not zero). This might prevent debugedit from writing out some
sections it just wants to keep unchanged (even if they aren't strictly
valid ELF).
* tools/debugedit.c (fdopen_dso): Set elf_flagelf
ELF_F_PERMISSIVE.
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
tools/debugedit.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/tools/debugedit.c b/tools/debugedit.c
index 03788ff92a70..d473b80dae4b 100644
--- a/tools/debugedit.c
+++ b/tools/debugedit.c
@@ -3638,7 +3638,15 @@ fdopen_dso (int fd, const char *name)
/* If there are phdrs we want to maintain the layout of the
allocated sections in the file. */
if (phnum != 0)
- elf_flagelf (elf, ELF_C_SET, ELF_F_LAYOUT);
+ {
+ elf_flagelf (elf, ELF_C_SET, ELF_F_LAYOUT);
+ /* Normally elf_update will do some strict checks on sections,
+ specifically it will check that sh_size is a multiple of
+ sh_entsize (if not zero). This might prevent debugedit from
+ writing out some sections it just wants to keep unchanged
+ (even if they aren't strictly valid ELF). */
+ elf_flagelf (elf, ELF_C_SET, ELF_F_PERMISSIVE);
+ }
memset (dso, 0, sizeof(DSO));
dso->elf = elf;
--
2.54.0
More information about the Debugedit
mailing list