[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