From bf71bcc2f6209eecb77c8913450edcef6ca2cdb0 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 21 Jun 2025 06:36:56 +0800 Subject: [PATCH v2] objcopy: Don't extend the output section size Since the output section contents are copied from the input, don't extend the output section size beyond the input section size. PR binutils/33049 * objcopy.c (copy_section): Don't extend the output section size beyond the input section size. Signed-off-by: H.J. Lu --- binutils/objcopy.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 366e1079d82..2e98ba44c01 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -4650,6 +4650,7 @@ copy_section (bfd *ibfd, sec_ptr isection, bfd *obfd) char *to = (char *) memhunk; char *end = (char *) memhunk + size; int i; + bfd_size_type memhunk_size = size; /* If the section address is not exactly divisible by the interleave, then we must bias the from address. If the copy_byte is less than @@ -4669,6 +4670,11 @@ copy_section (bfd *ibfd, sec_ptr isection, bfd *obfd) } size = (size + interleave - 1 - copy_byte) / interleave * copy_width; + + /* Don't extend the output section size. */ + if (size > memhunk_size) + size = memhunk_size; + osection->lma /= interleave; if (copy_byte < extra) osection->lma++; -- 2.49.0