[binutils-gdb] strip: don't corrupt PE binary's section/file alignment

Jan Beulich jbeulich@sourceware.org
Fri Mar 21 07:35:38 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=daf53ffeaa968694f783d4ad6ee0531b9f2bd9a6

commit daf53ffeaa968694f783d4ad6ee0531b9f2bd9a6
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Mar 21 08:33:58 2025 +0100

    strip: don't corrupt PE binary's section/file alignment
    
    Section and file alignment are supposed to remain unaltered when PE
    binaries are stripped. While this is the case when they're strip-ed
    individually, passing multiple such files to strip would reset the
    two values to their defaults in all but the first of those binaries.

Diff:
---
 binutils/objcopy.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/binutils/objcopy.c b/binutils/objcopy.c
index e2e6bd7ee83..572f22c9d36 100644
--- a/binutils/objcopy.c
+++ b/binutils/objcopy.c
@@ -2832,7 +2832,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 
       if (pe_file_alignment != (bfd_vma) -1)
 	pe->pe_opthdr.FileAlignment = pe_file_alignment;
-      else
+      else if (!is_strip)
 	pe_file_alignment = PE_DEF_FILE_ALIGNMENT;
 
       if (pe_heap_commit != (bfd_vma) -1)
@@ -2846,7 +2846,7 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
 
       if (pe_section_alignment != (bfd_vma) -1)
 	pe->pe_opthdr.SectionAlignment = pe_section_alignment;
-      else
+      else if (!is_strip)
 	pe_section_alignment = PE_DEF_SECTION_ALIGNMENT;
 
       if (pe_stack_commit != (bfd_vma) -1)


More information about the Binutils-cvs mailing list