mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
relocs_compatible test for gc-sections
I noticed when looking at pr22300 that before calling check_relocs we have an elf_object_id test (added for pr11933) as well as the relocs_compatible test. I believe backend gc_mark_hook and gc_sweep_hook ought to be protected similarly from being confused by unexpected relocations (for example, both elf64-ppc.c and elf32-ppc.c use _bfd_elf_relocs_compatible, so I think it would be possible for the ppc64 gc_mark_hook to be presented with a ppc32 relocatable object). * elflink.c (elf_gc_sweep): Test elf_object_id in addition to relocs_compatible. (bfd_elf_gc_sections): Likewise.
This commit is contained in:
parent
d336fa6d82
commit
81742b83e9
@ -1,3 +1,9 @@
|
||||
2017-10-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elflink.c (elf_gc_sweep): Test elf_object_id in addition to
|
||||
relocs_compatible.
|
||||
(bfd_elf_gc_sections): Likewise.
|
||||
|
||||
2017-10-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 22269
|
||||
|
@ -13034,6 +13034,7 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
|
||||
asection *o;
|
||||
|
||||
if (bfd_get_flavour (sub) != bfd_target_elf_flavour
|
||||
|| elf_object_id (sub) != elf_hash_table_id (elf_hash_table (info))
|
||||
|| !(*bed->relocs_compatible) (sub->xvec, abfd->xvec))
|
||||
continue;
|
||||
o = sub->sections;
|
||||
@ -13335,6 +13336,7 @@ bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
|
||||
asection *o;
|
||||
|
||||
if (bfd_get_flavour (sub) != bfd_target_elf_flavour
|
||||
|| elf_object_id (sub) != elf_hash_table_id (htab)
|
||||
|| !(*bed->relocs_compatible) (sub->xvec, abfd->xvec))
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user