diff options
author | Alan Modra <amodra@gmail.com> | 2022-01-28 23:08:27 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-01-29 11:29:17 +1030 |
commit | 7c4643efe7befea8e5063e8b56c0400fd8cee2d5 (patch) | |
tree | d507544018b72f387fa5ebd19ee7488f53728489 /binutils | |
parent | 5800c9abd08ab38aebbb67315364fe64be5a06bf (diff) | |
download | gdb-7c4643efe7befea8e5063e8b56c0400fd8cee2d5.zip gdb-7c4643efe7befea8e5063e8b56c0400fd8cee2d5.tar.gz gdb-7c4643efe7befea8e5063e8b56c0400fd8cee2d5.tar.bz2 |
objcopy --only-keep-debug
From: Peilin Ye <peilin.ye@bytedance.com>
objcopy's --only-keep-debug option has been broken for ELF files since
commit 8c803a2dd7d3.
1. binutils/objcopy.c:setup_section() marks non-debug sections as
SHT_NOBITS, then calls bfd_copy_private_section_data();
2. If ISEC and OSEC share the same section flags,
bfd/elf.c:_bfd_elf_init_private_section_data() restores OSEC's
section type back to ISEC's section type, effectively undoing
"make_nobits".
* objcopy.c (setup_section): Act on make_nobits after calling
bfd_copy_private_section_data.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/objcopy.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c index d16d8ee..d53aa5c 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -4085,9 +4085,6 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg) goto loser; } - if (make_nobits) - elf_section_type (osection) = SHT_NOBITS; - size = bfd_section_size (isection); size = bfd_convert_section_size (ibfd, isection, obfd, size); if (copy_byte >= 0) @@ -4181,6 +4178,9 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg) goto loser; } + if (make_nobits) + elf_section_type (osection) = SHT_NOBITS; + /* All went well. */ return; |