PR23850, strip should not discard/move .rela.plt in executable
strip/objcopy can't deal with alloc reloc sections, not .rela.dyn or .rela.plt in a dynamic executable, or .rela.plt/.rela.iplt in a static executable. So, don't have BFD treat them as side-channel data associated with the section they are relocating. PR 23850 * elf.c (bfd_section_from_shdr): Treat SHF_ALLOC SHT_REL* sections in an executable or shared library as normal sections.
This commit is contained in:
parent
3ba2ee38a6
commit
a4bcd73371
|
@ -1,3 +1,9 @@
|
||||||
|
2018-11-02 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 23850
|
||||||
|
* elf.c (bfd_section_from_shdr): Treat SHF_ALLOC SHT_REL* sections
|
||||||
|
in an executable or shared library as normal sections.
|
||||||
|
|
||||||
2018-10-31 Renlin Li <renlin.li@arm.com>
|
2018-10-31 Renlin Li <renlin.li@arm.com>
|
||||||
|
|
||||||
* elfnn-aarch64.c (elfNN_aarch64_check_relocs): Don't create got
|
* elfnn-aarch64.c (elfNN_aarch64_check_relocs): Don't create got
|
||||||
|
|
19
bfd/elf.c
19
bfd/elf.c
|
@ -2384,15 +2384,18 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
|
||||||
&& ! bfd_section_from_shdr (abfd, hdr->sh_link))
|
&& ! bfd_section_from_shdr (abfd, hdr->sh_link))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
/* If this reloc section does not use the main symbol table we
|
/* If this is an alloc section in an executable or shared
|
||||||
don't treat it as a reloc section. BFD can't adequately
|
library, or the reloc section does not use the main symbol
|
||||||
represent such a section, so at least for now, we don't
|
table we don't treat it as a reloc section. BFD can't
|
||||||
try. We just present it as a normal section. We also
|
adequately represent such a section, so at least for now,
|
||||||
can't use it as a reloc section if it points to the null
|
we don't try. We just present it as a normal section. We
|
||||||
section, an invalid section, another reloc section, or its
|
also can't use it as a reloc section if it points to the
|
||||||
sh_link points to the null section. */
|
null section, an invalid section, another reloc section, or
|
||||||
if (hdr->sh_link != elf_onesymtab (abfd)
|
its sh_link points to the null section. */
|
||||||
|
if (((abfd->flags & (DYNAMIC | EXEC_P)) != 0
|
||||||
|
&& (hdr->sh_flags & SHF_ALLOC) != 0)
|
||||||
|| hdr->sh_link == SHN_UNDEF
|
|| hdr->sh_link == SHN_UNDEF
|
||||||
|
|| hdr->sh_link != elf_onesymtab (abfd)
|
||||||
|| hdr->sh_info == SHN_UNDEF
|
|| hdr->sh_info == SHN_UNDEF
|
||||||
|| hdr->sh_info >= num_sec
|
|| hdr->sh_info >= num_sec
|
||||||
|| elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
|
|| elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
|
||||||
|
|
Loading…
Reference in New Issue