mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 10:03:47 +08:00
Move elf_backend_always_size_sections earlier
* elflink.c (bfd_elf_size_dynamic_sections): Move plt/got init earlier and call elf_backend_always_size_sections at the start of this function.
This commit is contained in:
parent
d794dc3eb4
commit
6540edd52c
@ -6506,6 +6506,21 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
if (!is_elf_hash_table (info->hash))
|
||||
return true;
|
||||
|
||||
/* Any syms created from now on start with -1 in
|
||||
got.refcount/offset and plt.refcount/offset. */
|
||||
elf_hash_table (info)->init_got_refcount
|
||||
= elf_hash_table (info)->init_got_offset;
|
||||
elf_hash_table (info)->init_plt_refcount
|
||||
= elf_hash_table (info)->init_plt_offset;
|
||||
|
||||
bed = get_elf_backend_data (output_bfd);
|
||||
|
||||
/* The backend may have to create some sections regardless of whether
|
||||
we're dynamic or not. */
|
||||
if (bed->elf_backend_always_size_sections
|
||||
&& ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
|
||||
return false;
|
||||
|
||||
dynobj = elf_hash_table (info)->dynobj;
|
||||
|
||||
if (dynobj != NULL && elf_hash_table (info)->dynamic_sections_created)
|
||||
@ -6864,8 +6879,6 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
}
|
||||
}
|
||||
|
||||
bed = get_elf_backend_data (output_bfd);
|
||||
|
||||
if (info->gc_sections && bed->can_gc_sections)
|
||||
{
|
||||
struct elf_gc_sweep_symbol_info sweep_info;
|
||||
@ -6987,23 +7000,10 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
}
|
||||
}
|
||||
|
||||
/* Any syms created from now on start with -1 in
|
||||
got.refcount/offset and plt.refcount/offset. */
|
||||
elf_hash_table (info)->init_got_refcount
|
||||
= elf_hash_table (info)->init_got_offset;
|
||||
elf_hash_table (info)->init_plt_refcount
|
||||
= elf_hash_table (info)->init_plt_offset;
|
||||
|
||||
if (bfd_link_relocatable (info)
|
||||
&& !_bfd_elf_size_group_sections (info))
|
||||
return false;
|
||||
|
||||
/* The backend may have to create some sections regardless of whether
|
||||
we're dynamic or not. */
|
||||
if (bed->elf_backend_always_size_sections
|
||||
&& ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
|
||||
return false;
|
||||
|
||||
/* Determine any GNU_STACK segment requirements, after the backend
|
||||
has had a chance to set a default segment size. */
|
||||
if (info->execstack)
|
||||
|
Loading…
Reference in New Issue
Block a user