Do not choose a non-ELF format input file to hold the linker created GOT sections.
PR 21884 * elf32-i386.c (elf_i386_link_setup_gnu_properties): If the dynobj has not been set then use the bfd returned by _bfd_elf_link_setup_gnu_properties. If that is null then search through all the input bfds selecting the first normal, ELF format one. * elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Likewise.
This commit is contained in:
parent
2010d1a3f8
commit
b7a18930e3
@ -1,3 +1,13 @@
|
||||
2017-08-07 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 21884
|
||||
* elf32-i386.c (elf_i386_link_setup_gnu_properties): If the dynobj
|
||||
has not been set then use the bfd returned by
|
||||
_bfd_elf_link_setup_gnu_properties. If that is null then search
|
||||
through all the input bfds selecting the first normal, ELF format
|
||||
one.
|
||||
* elf64-x86-64.c (elf_x86_64_link_setup_gnu_properties): Likewise.
|
||||
|
||||
2017-08-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf32-i386.c (elf_i386_link_hash_entry): Change tls_get_addr
|
||||
|
@ -6886,20 +6886,29 @@ elf_i386_link_setup_gnu_properties (struct bfd_link_info *info)
|
||||
set it in check_relocs. */
|
||||
if (dynobj == NULL)
|
||||
{
|
||||
bfd *abfd;
|
||||
if (pbfd != NULL)
|
||||
{
|
||||
htab->elf.dynobj = pbfd;
|
||||
dynobj = pbfd;
|
||||
}
|
||||
else
|
||||
{
|
||||
bfd *abfd;
|
||||
|
||||
/* Find a normal input file to hold linker created
|
||||
sections. */
|
||||
for (abfd = info->input_bfds;
|
||||
abfd != NULL;
|
||||
abfd = abfd->link.next)
|
||||
if ((abfd->flags
|
||||
& (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
{
|
||||
htab->elf.dynobj = abfd;
|
||||
dynobj = abfd;
|
||||
break;
|
||||
}
|
||||
/* Find a normal input file to hold linker created
|
||||
sections. */
|
||||
for (abfd = info->input_bfds;
|
||||
abfd != NULL;
|
||||
abfd = abfd->link.next)
|
||||
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
|
||||
&& (abfd->flags
|
||||
& (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
{
|
||||
htab->elf.dynobj = abfd;
|
||||
dynobj = abfd;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Even when lazy binding is disabled by "-z now", the PLT0 entry may
|
||||
@ -6991,7 +7000,7 @@ elf_i386_link_setup_gnu_properties (struct bfd_link_info *info)
|
||||
return pbfd;
|
||||
|
||||
/* Since create_dynamic_sections isn't always called, but GOT
|
||||
relocations need GOT relocations, create them here so that we
|
||||
relocations need GOT sections, create them here so that we
|
||||
don't need to do it in check_relocs. */
|
||||
if (htab->elf.sgot == NULL
|
||||
&& !_bfd_elf_create_got_section (dynobj, info))
|
||||
|
@ -7427,8 +7427,9 @@ error_alignment:
|
||||
for (abfd = info->input_bfds;
|
||||
abfd != NULL;
|
||||
abfd = abfd->link.next)
|
||||
if ((abfd->flags
|
||||
& (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
|
||||
&& (abfd->flags
|
||||
& (DYNAMIC | BFD_LINKER_CREATED | BFD_PLUGIN)) == 0)
|
||||
{
|
||||
htab->elf.dynobj = abfd;
|
||||
dynobj = abfd;
|
||||
|
Loading…
Reference in New Issue
Block a user