mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-03-04 15:37:54 +00:00
PR 4888
* objcopy.c (setup_section): Do modify section flags for ELF STRIP_NONDEBUG (reverting part of 2007-05-30 change). Prevent header rewrite by twiddling input section flags instead. Simplify code setting SHT_NOBITS.
This commit is contained in:
parent
474d0d0c7a
commit
6612555199
@ -1,3 +1,11 @@
|
||||
2007-08-04 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
PR 4888
|
||||
* objcopy.c (setup_section): Do modify section flags for ELF
|
||||
STRIP_NONDEBUG (reverting part of 2007-05-30 change). Prevent
|
||||
header rewrite by twiddling input section flags instead.
|
||||
Simplify code setting SHT_NOBITS.
|
||||
|
||||
2007-07-28 Christopher Faylor <me+binutils@cgf.cx>
|
||||
|
||||
* MAINTAINERS: Update my email address.
|
||||
|
@ -2165,6 +2165,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
|
||||
const char *err;
|
||||
const char * name;
|
||||
char *prefix = NULL;
|
||||
bfd_boolean make_nobits;
|
||||
|
||||
if (is_strip_section (ibfd, isection))
|
||||
return;
|
||||
@ -2193,12 +2194,26 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
|
||||
name = n;
|
||||
}
|
||||
|
||||
make_nobits = FALSE;
|
||||
if (p != NULL && p->set_flags)
|
||||
flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC));
|
||||
else if (strip_symbols == STRIP_NONDEBUG
|
||||
&& obfd->xvec->flavour != bfd_target_elf_flavour
|
||||
&& (flags & SEC_ALLOC) != 0)
|
||||
&& (flags & SEC_ALLOC) != 0
|
||||
&& (ibfd->xvec->flavour != bfd_target_elf_flavour
|
||||
|| elf_section_type (isection) != SHT_NOTE))
|
||||
{
|
||||
flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD);
|
||||
if (obfd->xvec->flavour == bfd_target_elf_flavour)
|
||||
{
|
||||
make_nobits = TRUE;
|
||||
|
||||
/* Twiddle the input section flags so that it seems to
|
||||
elf.c:copy_private_bfd_data that section flags have not
|
||||
changed between input and output sections. This hack
|
||||
prevents wholesale rewriting of the program headers. */
|
||||
isection->flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD);
|
||||
}
|
||||
}
|
||||
|
||||
osection = bfd_make_section_anyway_with_flags (obfd, name, flags);
|
||||
|
||||
@ -2208,13 +2223,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
|
||||
goto loser;
|
||||
}
|
||||
|
||||
if (strip_symbols == STRIP_NONDEBUG
|
||||
&& obfd->xvec->flavour == bfd_target_elf_flavour
|
||||
&& (flags & SEC_ALLOC) != 0
|
||||
&& elf_section_type (osection) != SHT_NOTE
|
||||
&& (ibfd->xvec->flavour != bfd_target_elf_flavour
|
||||
|| elf_section_type (isection) != SHT_NOTE)
|
||||
&& (p == NULL || !p->set_flags))
|
||||
if (make_nobits)
|
||||
elf_section_type (osection) = SHT_NOBITS;
|
||||
|
||||
size = bfd_section_size (ibfd, isection);
|
||||
|
Loading…
x
Reference in New Issue
Block a user