PR 30569, always call elf_backend_size_dynamic_sections

This largely mechanical patch is preparation for a followup patch.

For quite some time I've thought that it would be useful to call
elf_backend_size_dynamic_sections even when no dynamic objects are
seen by the linker.  That's what this patch does, with some renaming.
There are no functional changes to the linker, just a move of the
dynobj test in bfd_elf_size_dynamic_sections to target backend
functions, replacing the asserts/aborts already there.  No doubt some
of the current always_size_sections functions could be moved to
size_dynamic_sections but I haven't made that change.

Because both hooks are now always called, I have renamed
always_size_sections to early_size_sections and size_dynamic_sections
to late_size_sections.  I condisdered calling late_size_sections plain
size_sections, since this is the usual target dynamic section sizing
hook, but decided that searching the sources for "size_sections" would
then hit early_size_sections and other functions.
This commit is contained in:
Alan Modra 2024-03-28 19:25:42 +10:30
parent f37f8c46c2
commit af969b14ae
61 changed files with 343 additions and 337 deletions

View File

@ -1187,7 +1187,7 @@ struct elf_backend_data
/* The ADJUST_DYNAMIC_SYMBOL function is called by the ELF backend
linker for every symbol which is defined by a dynamic object and
referenced by a regular object. This is called after all the
input files have been seen, but before the SIZE_DYNAMIC_SECTIONS
input files have been seen, but before the LATE_SIZE_SECTIONS
function has been called. The hash table entry should be
bfd_link_hash_defined ore bfd_link_hash_defweak, and it should be
defined in a section from a dynamic object. Dynamic object
@ -1199,24 +1199,23 @@ struct elf_backend_data
bool (*elf_backend_adjust_dynamic_symbol)
(struct bfd_link_info *info, struct elf_link_hash_entry *h);
/* The ALWAYS_SIZE_SECTIONS function is called by the backend linker
after all the linker input files have been seen but before the
section sizes have been set. This is called after
ADJUST_DYNAMIC_SYMBOL, but before SIZE_DYNAMIC_SECTIONS. */
bool (*elf_backend_always_size_sections)
/* The EARLY_SIZE_SECTIONS and LATE_SIZE_SECTIONS functions are
called by the backend linker after all linker input files have
been seen and sections have been assigned to output sections, but
before the section sizes have been set. Both of these functions
are called even when no dynamic object is seen by the linker.
Between them, they must set the sizes of the dynamic sections and
other backend specific sections, and may fill in their contents.
Most backends need only use LATE_SIZE_SECTIONS.
EARLY_SIZE_SECTIONS is called before --export-dynamic makes some
symbols dynamic and before ADJUST_DYNAMIC_SYMBOL processes
dynamic symbols, LATE_SIZE_SECTIONS afterwards. The generic ELF
linker can handle the .dynsym, .dynstr and .hash sections.
Besides those, these functions must handle the .interp section
and any other sections created by CREATE_DYNAMIC_SECTIONS. */
bool (*elf_backend_early_size_sections)
(bfd *output_bfd, struct bfd_link_info *info);
/* The SIZE_DYNAMIC_SECTIONS function is called by the ELF backend
linker after all the linker input files have been seen but before
the sections sizes have been set. This is called after
ADJUST_DYNAMIC_SYMBOL has been called on all appropriate symbols.
It is only called when linking against a dynamic object. It must
set the sizes of the dynamic sections, and may fill in their
contents as well. The generic ELF linker can handle the .dynsym,
.dynstr and .hash sections. This function must handle the
.interp section and any sections created by the
CREATE_DYNAMIC_SECTIONS entry point. */
bool (*elf_backend_size_dynamic_sections)
bool (*elf_backend_late_size_sections)
(bfd *output_bfd, struct bfd_link_info *info);
/* The STRIP_ZERO_SIZED_DYNAMIC_SECTIONS function is called by the

View File

@ -5015,8 +5015,8 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
/* Set the sizes of the dynamic sections. */
static bool
_bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
struct bfd_link_info * info)
_bfd_mn10300_elf_late_size_sections (bfd * output_bfd,
struct bfd_link_info * info)
{
struct elf32_mn10300_link_hash_table *htab = elf32_mn10300_hash_table (info);
bfd * dynobj;
@ -5024,7 +5024,8 @@ _bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
bool relocs;
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -5511,8 +5512,8 @@ mn10300_elf_mkobject (bfd *abfd)
_bfd_mn10300_elf_create_dynamic_sections
#define elf_backend_adjust_dynamic_symbol \
_bfd_mn10300_elf_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
_bfd_mn10300_elf_size_dynamic_sections
#define elf_backend_late_size_sections \
_bfd_mn10300_elf_late_size_sections
#define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
#define elf_backend_finish_dynamic_symbol \
_bfd_mn10300_elf_finish_dynamic_symbol

View File

@ -2712,8 +2712,8 @@ elf_arc_finish_dynamic_sections (bfd * output_bfd,
/* Set the sizes of the dynamic sections. */
static bool
elf_arc_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_arc_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
@ -2721,7 +2721,8 @@ elf_arc_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct elf_link_hash_table *htab = elf_hash_table (info);
dynobj = htab->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->dynamic_sections_created)
{
@ -3137,7 +3138,7 @@ arc_elf_relax_section (bfd *abfd, asection *sec,
#define elf_backend_finish_dynamic_symbol elf_arc_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections elf_arc_finish_dynamic_sections
#define elf_backend_size_dynamic_sections elf_arc_size_dynamic_sections
#define elf_backend_late_size_sections elf_arc_late_size_sections
#define elf_backend_can_gc_sections 1
#define elf_backend_want_got_plt 1

View File

@ -16725,8 +16725,8 @@ bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *info,
/* Set the sizes of the dynamic sections. */
static bool
elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info * info)
elf32_arm_late_size_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info * info)
{
bfd * dynobj;
asection * s;
@ -16739,7 +16739,9 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
check_use_blx (htab);
if (elf_hash_table (info)->dynamic_sections_created)
@ -17111,8 +17113,7 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
_TLS_MODULE_BASE_, if needed. */
static bool
elf32_arm_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf32_arm_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
asection *tls_sec;
struct elf32_arm_link_hash_table *htab;
@ -20312,8 +20313,8 @@ elf32_arm_backend_symbol_processing (bfd *abfd, asymbol *sym)
#define elf_backend_create_dynamic_sections elf32_arm_create_dynamic_sections
#define elf_backend_finish_dynamic_symbol elf32_arm_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections elf32_arm_finish_dynamic_sections
#define elf_backend_size_dynamic_sections elf32_arm_size_dynamic_sections
#define elf_backend_always_size_sections elf32_arm_always_size_sections
#define elf_backend_late_size_sections elf32_arm_late_size_sections
#define elf_backend_early_size_sections elf32_arm_early_size_sections
#define elf_backend_init_index_section _bfd_elf_init_2_index_sections
#define elf_backend_init_file_header elf32_arm_init_file_header
#define elf_backend_reloc_type_class elf32_arm_reloc_type_class

View File

@ -4027,8 +4027,8 @@ _bfinfdpic_size_got_plt (bfd *output_bfd,
/* Set the sizes of the dynamic sections. */
static bool
elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf32_bfinfdpic_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct elf_link_hash_table *htab;
bfd *dynobj;
@ -4037,7 +4037,8 @@ elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
htab = elf_hash_table (info);
dynobj = htab->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->dynamic_sections_created)
{
@ -4086,7 +4087,7 @@ elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
}
static bool
elf32_bfinfdpic_always_size_sections (bfd *output_bfd,
elf32_bfinfdpic_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
if (!bfd_link_relocatable (info)
@ -5123,15 +5124,16 @@ bfin_discard_copies (struct elf_link_hash_entry *h, void * inf)
}
static bool
bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
bfin_late_size_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
bool relocs;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -5423,8 +5425,7 @@ struct bfd_elf_special_section const elf32_bfin_special_sections[] =
#define elf_backend_check_relocs bfin_check_relocs
#define elf_backend_adjust_dynamic_symbol \
bfin_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
bfin_size_dynamic_sections
#define elf_backend_late_size_sections bfin_late_size_sections
#define elf_backend_relocate_section bfin_relocate_section
#define elf_backend_finish_dynamic_symbol \
bfin_finish_dynamic_symbol
@ -5470,9 +5471,9 @@ struct bfd_elf_special_section const elf32_bfin_special_sections[] =
#undef bfd_elf32_bfd_link_hash_table_create
#define bfd_elf32_bfd_link_hash_table_create \
bfinfdpic_elf_link_hash_table_create
#undef elf_backend_always_size_sections
#define elf_backend_always_size_sections \
elf32_bfinfdpic_always_size_sections
#undef elf_backend_early_size_sections
#define elf_backend_early_size_sections \
elf32_bfinfdpic_early_size_sections
#undef elf_backend_create_dynamic_sections
#define elf_backend_create_dynamic_sections \
@ -5480,9 +5481,9 @@ struct bfd_elf_special_section const elf32_bfin_special_sections[] =
#undef elf_backend_adjust_dynamic_symbol
#define elf_backend_adjust_dynamic_symbol \
elf32_bfinfdpic_adjust_dynamic_symbol
#undef elf_backend_size_dynamic_sections
#define elf_backend_size_dynamic_sections \
elf32_bfinfdpic_size_dynamic_sections
#undef elf_backend_late_size_sections
#define elf_backend_late_size_sections \
elf32_bfinfdpic_late_size_sections
#undef elf_backend_finish_dynamic_symbol
#define elf_backend_finish_dynamic_symbol \
elf32_bfinfdpic_finish_dynamic_symbol

View File

@ -2391,15 +2391,16 @@ _bfd_cr16_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
/* Set the sizes of the dynamic sections. */
static bool
_bfd_cr16_elf_size_dynamic_sections (bfd * output_bfd,
struct bfd_link_info * info)
_bfd_cr16_elf_late_size_sections (bfd * output_bfd,
struct bfd_link_info * info)
{
bfd * dynobj;
asection * s;
bool relocs;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -2836,8 +2837,8 @@ _bfd_cr16_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSE
_bfd_cr16_elf_create_dynamic_sections
#define elf_backend_adjust_dynamic_symbol \
_bfd_cr16_elf_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
_bfd_cr16_elf_size_dynamic_sections
#define elf_backend_late_size_sections \
_bfd_cr16_elf_late_size_sections
#define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
#define elf_backend_finish_dynamic_symbol \
_bfd_cr16_elf_finish_dynamic_symbol

View File

@ -2525,7 +2525,7 @@ cris_elf_plt_sym_val (bfd_vma i ATTRIBUTE_UNUSED, const asection *plt,
entry but we found we will not create any. Called when we find we will
not have any PLT for this symbol, by for example
elf_cris_adjust_dynamic_symbol when we're doing a proper dynamic link,
or elf_cris_size_dynamic_sections if no dynamic sections will be
or elf_cris_late_size_sections if no dynamic sections will be
created (we're only linking static objects). */
static bool
@ -3506,8 +3506,8 @@ cris_elf_check_relocs (bfd *abfd,
/* Set the sizes of the dynamic sections. */
static bool
elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_cris_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_cris_link_hash_table * htab;
bfd *dynobj;
@ -3519,7 +3519,8 @@ elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->root.dynamic_sections_created)
{
@ -4088,8 +4089,8 @@ elf_cris_got_elt_size (bfd *abfd ATTRIBUTE_UNUSED,
elf_cris_adjust_dynamic_symbol
#define elf_backend_copy_indirect_symbol \
elf_cris_copy_indirect_symbol
#define elf_backend_size_dynamic_sections \
elf_cris_size_dynamic_sections
#define elf_backend_late_size_sections \
elf_cris_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_finish_dynamic_symbol \
elf_cris_finish_dynamic_symbol

View File

@ -1893,8 +1893,8 @@ csky_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
/* Set the sizes of the dynamic sections. */
static bool
csky_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
csky_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct csky_elf_link_hash_table *htab;
bfd *dynobj;
@ -1907,7 +1907,7 @@ csky_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = htab->elf.dynobj;
if (dynobj == NULL)
return false;
return true;
if (htab->elf.dynamic_sections_created)
{
@ -5331,7 +5331,7 @@ elf32_csky_obj_attrs_handle_unknown (bfd *abfd ATTRIBUTE_UNUSED,
/* Dynamic relocate related API. */
#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
#define elf_backend_adjust_dynamic_symbol csky_elf_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections csky_elf_size_dynamic_sections
#define elf_backend_late_size_sections csky_elf_late_size_sections
#define elf_backend_finish_dynamic_symbol csky_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections csky_elf_finish_dynamic_sections
#define elf_backend_rela_normal 1

View File

@ -5423,15 +5423,16 @@ _frvfdpic_size_got_plt (bfd *output_bfd,
/* Set the sizes of the dynamic sections. */
static bool
elf32_frvfdpic_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf32_frvfdpic_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
struct _frvfdpic_dynamic_got_plt_info gpinfo;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -5472,8 +5473,8 @@ elf32_frvfdpic_size_dynamic_sections (bfd *output_bfd,
}
static bool
elf32_frvfdpic_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf32_frvfdpic_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
if (!bfd_link_relocatable (info)
&& !bfd_elf_stack_segment_size (output_bfd, info,
@ -6817,9 +6818,9 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#undef bfd_elf32_bfd_link_hash_table_create
#define bfd_elf32_bfd_link_hash_table_create \
frvfdpic_elf_link_hash_table_create
#undef elf_backend_always_size_sections
#define elf_backend_always_size_sections \
elf32_frvfdpic_always_size_sections
#undef elf_backend_early_size_sections
#define elf_backend_early_size_sections \
elf32_frvfdpic_early_size_sections
#undef elf_backend_create_dynamic_sections
#define elf_backend_create_dynamic_sections \
@ -6827,9 +6828,9 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#undef elf_backend_adjust_dynamic_symbol
#define elf_backend_adjust_dynamic_symbol \
elf32_frvfdpic_adjust_dynamic_symbol
#undef elf_backend_size_dynamic_sections
#define elf_backend_size_dynamic_sections \
elf32_frvfdpic_size_dynamic_sections
#undef elf_backend_late_size_sections
#define elf_backend_late_size_sections \
elf32_frvfdpic_late_size_sections
#undef bfd_elf32_bfd_relax_section
#define bfd_elf32_bfd_relax_section \
elf32_frvfdpic_relax_section

View File

@ -2042,8 +2042,8 @@ clobber_millicode_symbols (struct elf_link_hash_entry *eh,
/* Set the sizes of the dynamic sections. */
static bool
elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf32_hppa_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf32_hppa_link_hash_table *htab;
bfd *dynobj;
@ -2057,7 +2057,7 @@ elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
dynobj = htab->etab.dynobj;
if (dynobj == NULL)
abort ();
return true;
if (htab->etab.dynamic_sections_created)
{
@ -4494,7 +4494,7 @@ elf32_hppa_elf_get_symbol_type (Elf_Internal_Sym *elf_sym, int type)
#define elf_backend_hide_symbol elf32_hppa_hide_symbol
#define elf_backend_finish_dynamic_symbol elf32_hppa_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections elf32_hppa_finish_dynamic_sections
#define elf_backend_size_dynamic_sections elf32_hppa_size_dynamic_sections
#define elf_backend_late_size_sections elf32_hppa_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_gc_mark_hook elf32_hppa_gc_mark_hook
#define elf_backend_grok_prstatus elf32_hppa_grok_prstatus

View File

@ -1957,8 +1957,7 @@ elf_i386_scan_relocs (bfd *abfd,
}
static bool
elf_i386_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf_i386_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
bfd *abfd;
@ -1971,7 +1970,7 @@ elf_i386_always_size_sections (bfd *output_bfd,
elf_i386_scan_relocs))
return false;
return _bfd_x86_elf_always_size_sections (output_bfd, info);
return _bfd_x86_elf_early_size_sections (output_bfd, info);
}
/* Set the correct type for an x86 ELF section. We do this by the
@ -4477,7 +4476,7 @@ elf_i386_link_setup_gnu_properties (struct bfd_link_info *info)
#define bfd_elf32_get_synthetic_symtab elf_i386_get_synthetic_symtab
#define elf_backend_relocs_compatible _bfd_elf_relocs_compatible
#define elf_backend_always_size_sections elf_i386_always_size_sections
#define elf_backend_early_size_sections elf_i386_early_size_sections
#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
#define elf_backend_fake_sections elf_i386_fake_sections
#define elf_backend_finish_dynamic_sections elf_i386_finish_dynamic_sections

View File

@ -1904,8 +1904,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
/* Set the sizes of the dynamic sections. */
static bool
lm32_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
lm32_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct elf_lm32_link_hash_table *htab;
bfd *dynobj;
@ -1918,7 +1918,8 @@ lm32_elf_size_dynamic_sections (bfd *output_bfd,
return false;
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->root.dynamic_sections_created)
{
@ -2307,7 +2308,7 @@ lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
}
static bool
lm32_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
lm32_elf_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
if (!bfd_link_relocatable (info))
{
@ -2393,7 +2394,7 @@ lm32_elf_fdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
#define bfd_elf32_bfd_link_hash_table_create lm32_elf_link_hash_table_create
#define elf_backend_check_relocs lm32_elf_check_relocs
#define elf_backend_reloc_type_class lm32_elf_reloc_type_class
#define elf_backend_size_dynamic_sections lm32_elf_size_dynamic_sections
#define elf_backend_late_size_sections lm32_elf_late_size_sections
#define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
#define elf_backend_create_dynamic_sections lm32_elf_create_dynamic_sections
#define elf_backend_finish_dynamic_sections lm32_elf_finish_dynamic_sections
@ -2414,8 +2415,8 @@ lm32_elf_fdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
#undef elf32_bed
#define elf32_bed elf32_lm32fdpic_bed
#undef elf_backend_always_size_sections
#define elf_backend_always_size_sections lm32_elf_always_size_sections
#undef elf_backend_early_size_sections
#define elf_backend_early_size_sections lm32_elf_early_size_sections
#undef bfd_elf32_bfd_copy_private_bfd_data
#define bfd_elf32_bfd_copy_private_bfd_data lm32_elf_fdpic_copy_private_bfd_data

View File

@ -773,8 +773,8 @@ m32c_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
}
static bool
m32c_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
m32c_elf_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *splt;
@ -2132,8 +2132,8 @@ _bfd_m32c_elf_eh_frame_address_size (bfd *abfd,
#define elf_backend_check_relocs m32c_elf_check_relocs
#define elf_backend_object_p m32c_elf_object_p
#define elf_symbol_leading_char ('_')
#define elf_backend_always_size_sections \
m32c_elf_always_size_sections
#define elf_backend_early_size_sections \
m32c_elf_early_size_sections
#define elf_backend_finish_dynamic_sections \
m32c_elf_finish_dynamic_sections

View File

@ -1958,8 +1958,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
/* Set the sizes of the dynamic sections. */
static bool
m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
m32r_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_link_hash_table *htab;
bfd *dynobj;
@ -1968,7 +1968,7 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
bfd *ibfd;
#ifdef DEBUG_PIC
printf ("m32r_elf_size_dynamic_sections()\n");
printf ("m32r_elf_late_size_sections()\n");
#endif
htab = m32r_elf_hash_table (info);
@ -1976,7 +1976,8 @@ m32r_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = htab->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->dynamic_sections_created)
{
@ -3656,7 +3657,7 @@ m32r_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
#define elf_backend_create_dynamic_sections m32r_elf_create_dynamic_sections
#define bfd_elf32_bfd_link_hash_table_create m32r_elf_link_hash_table_create
#define elf_backend_size_dynamic_sections m32r_elf_size_dynamic_sections
#define elf_backend_late_size_sections m32r_elf_late_size_sections
#define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
#define elf_backend_finish_dynamic_sections m32r_elf_finish_dynamic_sections
#define elf_backend_adjust_dynamic_symbol m32r_elf_adjust_dynamic_symbol

View File

@ -2934,7 +2934,7 @@ elf_m68k_get_plt_info (bfd *output_bfd)
It's a convenient place to determine the PLT style. */
static bool
elf_m68k_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
elf_m68k_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
/* Bind input BFDs to GOTs and calculate sizes of .got and .rela.got
sections. */
@ -3107,15 +3107,16 @@ elf_m68k_adjust_dynamic_symbol (struct bfd_link_info *info,
/* Set the sizes of the dynamic sections. */
static bool
elf_m68k_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_m68k_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
bool relocs;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -4628,12 +4629,11 @@ elf_m68k_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#define bfd_elf32_bfd_final_link bfd_elf_final_link
#define elf_backend_check_relocs elf_m68k_check_relocs
#define elf_backend_always_size_sections \
elf_m68k_always_size_sections
#define elf_backend_early_size_sections \
elf_m68k_early_size_sections
#define elf_backend_adjust_dynamic_symbol \
elf_m68k_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
elf_m68k_size_dynamic_sections
#define elf_backend_late_size_sections elf_m68k_late_size_sections
#define elf_backend_final_write_processing elf_m68k_final_write_processing
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_relocate_section elf_m68k_relocate_section

View File

@ -2717,8 +2717,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
/* Set the sizes of the dynamic sections. */
static bool
elf_metag_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_metag_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_metag_link_hash_table *htab;
bfd *dynobj;
@ -2729,7 +2729,7 @@ elf_metag_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
htab = metag_link_hash_table (info);
dynobj = htab->etab.dynobj;
if (dynobj == NULL)
abort ();
return true;
if (htab->etab.dynamic_sections_created)
{
@ -4019,7 +4019,7 @@ elf_metag_plt_sym_val (bfd_vma i, const asection *plt,
#define elf_backend_adjust_dynamic_symbol elf_metag_adjust_dynamic_symbol
#define elf_backend_finish_dynamic_symbol elf_metag_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections elf_metag_finish_dynamic_sections
#define elf_backend_size_dynamic_sections elf_metag_size_dynamic_sections
#define elf_backend_late_size_sections elf_metag_late_size_sections
#define elf_backend_omit_section_dynsym \
_bfd_elf_omit_section_dynsym_all
#define elf_backend_init_file_header elf_metag_init_file_header

View File

@ -2966,8 +2966,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * dat)
/* Set the sizes of the dynamic sections. */
static bool
microblaze_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
microblaze_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf32_mb_link_hash_table *htab;
bfd *dynobj;
@ -2979,7 +2979,8 @@ microblaze_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = htab->elf.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
/* Set up .got offsets for local syms, and space for local dynamic
relocs. */
@ -3495,7 +3496,7 @@ microblaze_elf_add_symbol_hook (bfd *abfd,
#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
#define elf_backend_finish_dynamic_sections microblaze_elf_finish_dynamic_sections
#define elf_backend_finish_dynamic_symbol microblaze_elf_finish_dynamic_symbol
#define elf_backend_size_dynamic_sections microblaze_elf_size_dynamic_sections
#define elf_backend_late_size_sections microblaze_elf_late_size_sections
#define elf_backend_add_symbol_hook microblaze_elf_add_symbol_hook
#include "elf32-target.h"

View File

@ -2537,10 +2537,8 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
#define elf_backend_get_target_dtag _bfd_mips_elf_get_target_dtag
#define elf_backend_adjust_dynamic_symbol \
_bfd_mips_elf_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
_bfd_mips_elf_always_size_sections
#define elf_backend_size_dynamic_sections \
_bfd_mips_elf_size_dynamic_sections
#define elf_backend_early_size_sections _bfd_mips_elf_early_size_sections
#define elf_backend_late_size_sections _bfd_mips_elf_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_relocate_section _bfd_mips_elf_relocate_section
#define elf_backend_finish_dynamic_symbol \

View File

@ -4302,8 +4302,8 @@ elf32_nds32_add_dynreloc (bfd *output_bfd,
/* Set the sizes of the dynamic sections. */
static bool
nds32_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
nds32_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_nds32_link_hash_table *htab;
bfd *dynobj;
@ -4316,7 +4316,8 @@ nds32_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -13984,7 +13985,7 @@ nds32_elf_unify_tls_model (bfd *inbfd, asection *insec, bfd_byte *incontents,
#define elf_backend_create_dynamic_sections nds32_elf_create_dynamic_sections
#define elf_backend_finish_dynamic_sections nds32_elf_finish_dynamic_sections
#define elf_backend_finish_dynamic_symbol nds32_elf_finish_dynamic_symbol
#define elf_backend_size_dynamic_sections nds32_elf_size_dynamic_sections
#define elf_backend_late_size_sections nds32_elf_late_size_sections
#define elf_backend_relocate_section nds32_elf_relocate_section
#define elf_backend_gc_mark_hook nds32_elf_gc_mark_hook
#define elf_backend_grok_prstatus nds32_elf_grok_prstatus

View File

@ -5413,7 +5413,7 @@ nios2_elf32_adjust_dynamic_symbol (struct bfd_link_info *info,
return true;
}
/* Worker function for nios2_elf32_size_dynamic_sections. */
/* Worker function for nios2_elf32_late_size_sections. */
static bool
adjust_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
@ -5440,7 +5440,7 @@ adjust_dynrelocs (struct elf_link_hash_entry *h, void *inf)
return true;
}
/* Another worker function for nios2_elf32_size_dynamic_sections.
/* Another worker function for nios2_elf32_late_size_sections.
Allocate space in .plt, .got and associated reloc sections for
dynamic relocs. */
static bool
@ -5675,11 +5675,11 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
return true;
}
/* Implement elf_backend_size_dynamic_sections:
/* Implement elf_backend_late_size_sections:
Set the sizes of the dynamic sections. */
static bool
nios2_elf32_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
nios2_elf32_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
@ -5689,7 +5689,8 @@ nios2_elf32_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
htab = elf32_nios2_hash_table (info);
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
htab->res_n_size = 0;
if (htab->root.dynamic_sections_created)
@ -6060,7 +6061,7 @@ const struct bfd_elf_special_section elf32_nios2_special_sections[] =
nios2_elf32_finish_dynamic_sections
#define elf_backend_adjust_dynamic_symbol nios2_elf32_adjust_dynamic_symbol
#define elf_backend_reloc_type_class nios2_elf32_reloc_type_class
#define elf_backend_size_dynamic_sections nios2_elf32_size_dynamic_sections
#define elf_backend_late_size_sections nios2_elf32_late_size_sections
#define elf_backend_add_symbol_hook nios2_elf_add_symbol_hook
#define elf_backend_copy_indirect_symbol nios2_elf32_copy_indirect_symbol
#define elf_backend_object_p nios2_elf32_object_p

View File

@ -3045,8 +3045,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
/* Set the sizes of the dynamic sections. */
static bool
or1k_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
or1k_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_or1k_link_hash_table *htab;
bfd *dynobj;
@ -3059,7 +3059,8 @@ or1k_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->root.dynamic_sections_created)
{
@ -3412,7 +3413,7 @@ or1k_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#define elf_backend_copy_indirect_symbol or1k_elf_copy_indirect_symbol
#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
#define elf_backend_finish_dynamic_sections or1k_elf_finish_dynamic_sections
#define elf_backend_size_dynamic_sections or1k_elf_size_dynamic_sections
#define elf_backend_late_size_sections or1k_elf_late_size_sections
#define elf_backend_adjust_dynamic_symbol or1k_elf_adjust_dynamic_symbol
#define elf_backend_finish_dynamic_symbol or1k_elf_finish_dynamic_symbol

View File

@ -5479,8 +5479,8 @@ static const unsigned char glink_eh_frame_cie[] =
/* Set the sizes of the dynamic sections. */
static bool
ppc_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
ppc_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct ppc_elf_link_hash_table *htab;
asection *s;
@ -5488,11 +5488,12 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd,
bfd *ibfd;
#ifdef DEBUG
fprintf (stderr, "ppc_elf_size_dynamic_sections called\n");
fprintf (stderr, "ppc_elf_late_size_sections called\n");
#endif
htab = ppc_elf_hash_table (info);
BFD_ASSERT (htab->elf.dynobj != NULL);
if (htab->elf.dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -10433,7 +10434,7 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd,
#define elf_backend_copy_indirect_symbol ppc_elf_copy_indirect_symbol
#define elf_backend_adjust_dynamic_symbol ppc_elf_adjust_dynamic_symbol
#define elf_backend_add_symbol_hook ppc_elf_add_symbol_hook
#define elf_backend_size_dynamic_sections ppc_elf_size_dynamic_sections
#define elf_backend_late_size_sections ppc_elf_late_size_sections
#define elf_backend_hash_symbol ppc_elf_hash_symbol
#define elf_backend_finish_dynamic_symbol ppc_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections ppc_elf_finish_dynamic_sections

View File

@ -1440,8 +1440,8 @@ rl78_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
}
static bool
rl78_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
rl78_elf_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *splt;
@ -2610,8 +2610,8 @@ rl78_elf_relax_section (bfd *abfd,
#define bfd_elf32_bfd_relax_section rl78_elf_relax_section
#define elf_backend_check_relocs rl78_elf_check_relocs
#define elf_backend_always_size_sections \
rl78_elf_always_size_sections
#define elf_backend_early_size_sections \
rl78_elf_early_size_sections
#define elf_backend_finish_dynamic_sections \
rl78_elf_finish_dynamic_sections

View File

@ -1366,7 +1366,7 @@ elf_s390_gc_mark_hook (asection *sec,
entry but we found we will not create any. Called when we find we will
not have any PLT for this symbol, by for example
elf_s390_adjust_dynamic_symbol when we're doing a proper dynamic link,
or elf_s390_size_dynamic_sections if no dynamic sections will be
or elf_s390_late_size_sections if no dynamic sections will be
created (we're only linking static objects). */
static void
@ -1776,8 +1776,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
/* Set the sizes of the dynamic sections. */
static bool
elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_s390_link_hash_table *htab;
bfd *dynobj;
@ -1788,7 +1788,7 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
htab = elf_s390_hash_table (info);
dynobj = htab->elf.dynobj;
if (dynobj == NULL)
abort ();
return true;
if (htab->elf.dynamic_sections_created)
{
@ -3925,7 +3925,7 @@ elf32_s390_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
#define elf_backend_gc_mark_hook elf_s390_gc_mark_hook
#define elf_backend_reloc_type_class elf_s390_reloc_type_class
#define elf_backend_relocate_section elf_s390_relocate_section
#define elf_backend_size_dynamic_sections elf_s390_size_dynamic_sections
#define elf_backend_late_size_sections elf_s390_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_grok_prstatus elf_s390_grok_prstatus
#define elf_backend_grok_psinfo elf_s390_grok_psinfo

View File

@ -1089,7 +1089,7 @@ score_elf_got_info (bfd *abfd, asection **sgotp)
appear towards the end. This reduces the amount of GOT space
required. MAX_LOCAL is used to set the number of local symbols
known to be in the dynamic symbol table. During
s3_bfd_score_elf_size_dynamic_sections, this value is 1. Afterward, the
s3_bfd_score_elf_late_size_sections, this value is 1. Afterward, the
section symbols are added and the count is higher. */
static bool
score_elf_sort_hash_table (struct bfd_link_info *info,
@ -3160,8 +3160,8 @@ s3_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
/* This function is called after all the input files have been read,
and the input sections have been assigned to output sections. */
static bool
s3_bfd_score_elf_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
s3_bfd_score_elf_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
@ -3237,14 +3237,15 @@ s3_bfd_score_elf_always_size_sections (bfd *output_bfd,
/* Set the sizes of the dynamic sections. */
static bool
s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
s3_bfd_score_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
bool reltext;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -3313,7 +3314,7 @@ s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
}
else if (startswith (name, ".got"))
{
/* s3_bfd_score_elf_always_size_sections() has already done
/* s3_bfd_score_elf_early_size_sections() has already done
most of the work, but some symbols may have been mapped
to versions that we must now resolve in the got_entries
hash tables. */
@ -4183,22 +4184,22 @@ _bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
}
static bool
_bfd_score_elf_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
_bfd_score_elf_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
if (bfd_get_mach (output_bfd) == bfd_mach_score3)
return s3_bfd_score_elf_always_size_sections (output_bfd, info);
return s3_bfd_score_elf_early_size_sections (output_bfd, info);
else
return s7_bfd_score_elf_always_size_sections (output_bfd, info);
return s7_bfd_score_elf_early_size_sections (output_bfd, info);
}
static bool
_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
_bfd_score_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
if (bfd_get_mach (output_bfd) == bfd_mach_score3)
return s3_bfd_score_elf_size_dynamic_sections (output_bfd, info);
return s3_bfd_score_elf_late_size_sections (output_bfd, info);
else
return s7_bfd_score_elf_size_dynamic_sections (output_bfd, info);
return s7_bfd_score_elf_late_size_sections (output_bfd, info);
}
static bool
@ -4461,10 +4462,10 @@ _bfd_score_elf_common_definition (Elf_Internal_Sym *sym)
_bfd_score_elf_section_from_bfd_section
#define elf_backend_adjust_dynamic_symbol \
_bfd_score_elf_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
_bfd_score_elf_always_size_sections
#define elf_backend_size_dynamic_sections \
_bfd_score_elf_size_dynamic_sections
#define elf_backend_early_size_sections \
_bfd_score_elf_early_size_sections
#define elf_backend_late_size_sections \
_bfd_score_elf_late_size_sections
#define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
#define elf_backend_create_dynamic_sections \
_bfd_score_elf_create_dynamic_sections

View File

@ -78,10 +78,10 @@ s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *,
struct elf_link_hash_entry *);
extern bool
s7_bfd_score_elf_always_size_sections (bfd *, struct bfd_link_info *);
s7_bfd_score_elf_early_size_sections (bfd *, struct bfd_link_info *);
extern bool
s7_bfd_score_elf_size_dynamic_sections (bfd *, struct bfd_link_info *);
s7_bfd_score_elf_late_size_sections (bfd *, struct bfd_link_info *);
extern bool
s7_bfd_score_elf_create_dynamic_sections (bfd *, struct bfd_link_info *);

View File

@ -975,7 +975,7 @@ score_elf_got_info (bfd *abfd, asection **sgotp)
appear towards the end. This reduces the amount of GOT space
required. MAX_LOCAL is used to set the number of local symbols
known to be in the dynamic symbol table. During
s7_bfd_score_elf_size_dynamic_sections, this value is 1. Afterward, the
s7_bfd_score_elf_late_size_sections, this value is 1. Afterward, the
section symbols are added and the count is higher. */
static bool
@ -2969,8 +2969,8 @@ s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
and the input sections have been assigned to output sections. */
bool
s7_bfd_score_elf_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
s7_bfd_score_elf_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
@ -3047,14 +3047,15 @@ s7_bfd_score_elf_always_size_sections (bfd *output_bfd,
/* Set the sizes of the dynamic sections. */
bool
s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
s7_bfd_score_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
bool reltext;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -3123,7 +3124,7 @@ s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *i
}
else if (startswith (name, ".got"))
{
/* s7_bfd_score_elf_always_size_sections() has already done
/* s7_bfd_score_elf_early_size_sections() has already done
most of the work, but some symbols may have been mapped
to versions that we must now resolve in the got_entries
hash tables. */

View File

@ -2927,7 +2927,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
It's a convenient place to determine the PLT style. */
static bool
sh_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
sh_elf_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
sh_elf_hash_table (info)->plt_info = get_plt_info (output_bfd,
bfd_link_pic (info));
@ -2942,8 +2942,8 @@ sh_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
/* Set the sizes of the dynamic sections. */
static bool
sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
sh_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_sh_link_hash_table *htab;
bfd *dynobj;
@ -2956,7 +2956,8 @@ sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->root.dynamic_sections_created)
{
@ -6598,10 +6599,8 @@ sh_elf_encode_eh_address (bfd *abfd,
sh_elf_link_hash_table_create
#define elf_backend_adjust_dynamic_symbol \
sh_elf_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
sh_elf_always_size_sections
#define elf_backend_size_dynamic_sections \
sh_elf_size_dynamic_sections
#define elf_backend_early_size_sections sh_elf_early_size_sections
#define elf_backend_late_size_sections sh_elf_late_size_sections
#define elf_backend_omit_section_dynsym sh_elf_omit_section_dynsym
#define elf_backend_finish_dynamic_symbol \
sh_elf_finish_dynamic_symbol

View File

@ -248,8 +248,7 @@ elf32_sparc_reloc_type_class (const struct bfd_link_info *info,
#define elf_backend_adjust_dynamic_symbol \
_bfd_sparc_elf_adjust_dynamic_symbol
#define elf_backend_omit_section_dynsym _bfd_sparc_elf_omit_section_dynsym
#define elf_backend_size_dynamic_sections \
_bfd_sparc_elf_size_dynamic_sections
#define elf_backend_late_size_sections _bfd_sparc_elf_late_size_sections
#define elf_backend_relocate_section _bfd_sparc_elf_relocate_section
#define elf_backend_finish_dynamic_symbol \
_bfd_sparc_elf_finish_dynamic_symbol

View File

@ -3160,7 +3160,7 @@ elf32_tic6x_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
/* Set the sizes of the dynamic sections. */
static bool
elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
elf32_tic6x_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
struct elf32_tic6x_link_hash_table *htab;
bfd *dynobj;
@ -3171,7 +3171,7 @@ elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
htab = elf32_tic6x_hash_table (info);
dynobj = htab->elf.dynobj;
if (dynobj == NULL)
abort ();
return true;
if (htab->elf.dynamic_sections_created)
{
@ -3358,7 +3358,7 @@ elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
and the input sections have been assigned to output sections. */
static bool
elf32_tic6x_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
elf32_tic6x_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
if (elf32_tic6x_using_dsbt (output_bfd) && !bfd_link_relocatable (info)
&& !bfd_elf_stack_segment_size (output_bfd, info,
@ -4261,10 +4261,10 @@ elf32_tic6x_write_section (bfd *output_bfd,
#define elf_backend_relocs_compatible _bfd_elf_relocs_compatible
#define elf_backend_finish_dynamic_symbol \
elf32_tic6x_finish_dynamic_symbol
#define elf_backend_always_size_sections \
elf32_tic6x_always_size_sections
#define elf_backend_size_dynamic_sections \
elf32_tic6x_size_dynamic_sections
#define elf_backend_early_size_sections \
elf32_tic6x_early_size_sections
#define elf_backend_late_size_sections \
elf32_tic6x_late_size_sections
#define elf_backend_finish_dynamic_sections \
elf32_tic6x_finish_dynamic_sections
#define bfd_elf32_bfd_final_link \

View File

@ -105,7 +105,7 @@ tilegx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#define elf_backend_check_relocs tilegx_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol tilegx_elf_adjust_dynamic_symbol
#define elf_backend_omit_section_dynsym tilegx_elf_omit_section_dynsym
#define elf_backend_size_dynamic_sections tilegx_elf_size_dynamic_sections
#define elf_backend_late_size_sections tilegx_elf_late_size_sections
#define elf_backend_relocate_section tilegx_elf_relocate_section
#define elf_backend_finish_dynamic_symbol tilegx_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections tilegx_elf_finish_dynamic_sections

View File

@ -2182,11 +2182,9 @@ tilepro_elf_omit_section_dynsym (bfd *output_bfd,
#define ELF32_DYNAMIC_INTERPRETER "/lib/ld.so.1"
static bool
tilepro_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
tilepro_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
(void)output_bfd;
struct elf_link_hash_table *htab;
bfd *dynobj;
asection *s;
@ -2195,7 +2193,8 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
htab = tilepro_elf_hash_table (info);
BFD_ASSERT (htab != NULL);
dynobj = htab->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -3739,7 +3738,7 @@ tilepro_additional_program_headers (bfd *abfd,
#define elf_backend_check_relocs tilepro_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol tilepro_elf_adjust_dynamic_symbol
#define elf_backend_omit_section_dynsym tilepro_elf_omit_section_dynsym
#define elf_backend_size_dynamic_sections tilepro_elf_size_dynamic_sections
#define elf_backend_late_size_sections tilepro_elf_late_size_sections
#define elf_backend_relocate_section tilepro_elf_relocate_section
#define elf_backend_finish_dynamic_symbol tilepro_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections tilepro_elf_finish_dynamic_sections

View File

@ -36,7 +36,6 @@ static bool elf_vax_check_relocs (bfd *, struct bfd_link_info *,
asection *, const Elf_Internal_Rela *);
static bool elf_vax_adjust_dynamic_symbol (struct bfd_link_info *,
struct elf_link_hash_entry *);
static bool elf_vax_size_dynamic_sections (bfd *, struct bfd_link_info *);
static int elf_vax_relocate_section (bfd *, struct bfd_link_info *,
bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *,
@ -985,8 +984,8 @@ elf_vax_discard_got_entries (struct elf_link_hash_entry *h,
/* Discard unused dynamic data if this is a static link. */
static bool
elf_vax_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_vax_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
@ -1024,14 +1023,15 @@ elf_vax_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
/* Set the sizes of the dynamic sections. */
static bool
elf_vax_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
elf_vax_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
bool relocs;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -1861,10 +1861,8 @@ elf_vax_plt_sym_val (bfd_vma i, const asection *plt,
#define elf_backend_check_relocs elf_vax_check_relocs
#define elf_backend_adjust_dynamic_symbol \
elf_vax_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
elf_vax_always_size_sections
#define elf_backend_size_dynamic_sections \
elf_vax_size_dynamic_sections
#define elf_backend_early_size_sections elf_vax_early_size_sections
#define elf_backend_late_size_sections elf_vax_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_relocate_section elf_vax_relocate_section
#define elf_backend_finish_dynamic_symbol \

View File

@ -706,8 +706,8 @@ xstormy16_elf_relax_section (bfd *dynobj,
}
static bool
xstormy16_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
xstormy16_elf_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *splt;
@ -1013,8 +1013,8 @@ xstormy16_elf_gc_mark_hook (asection *sec,
#define elf_backend_relocate_section xstormy16_elf_relocate_section
#define elf_backend_gc_mark_hook xstormy16_elf_gc_mark_hook
#define elf_backend_check_relocs xstormy16_elf_check_relocs
#define elf_backend_always_size_sections \
xstormy16_elf_always_size_sections
#define elf_backend_early_size_sections \
xstormy16_elf_early_size_sections
#define elf_backend_omit_section_dynsym \
_bfd_elf_omit_section_dynsym_all
#define elf_backend_finish_dynamic_sections \

View File

@ -1557,8 +1557,8 @@ elf_xtensa_allocate_local_got_size (struct bfd_link_info *info)
/* Set the sizes of the dynamic sections. */
static bool
elf_xtensa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_xtensa_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_xtensa_link_hash_table *htab;
bfd *dynobj, *abfd;
@ -1575,7 +1575,7 @@ elf_xtensa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
dynobj = elf_hash_table (info)->dynobj;
if (dynobj == NULL)
abort ();
return true;
srelgot = htab->elf.srelgot;
srelplt = htab->elf.srelplt;
@ -1780,8 +1780,7 @@ elf_xtensa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
}
static bool
elf_xtensa_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf_xtensa_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
struct elf_xtensa_link_hash_table *htab;
asection *tls_sec;
@ -11512,8 +11511,8 @@ static const struct bfd_elf_special_section elf_xtensa_special_sections[] =
#define elf_backend_object_p elf_xtensa_object_p
#define elf_backend_reloc_type_class elf_xtensa_reloc_type_class
#define elf_backend_relocate_section elf_xtensa_relocate_section
#define elf_backend_size_dynamic_sections elf_xtensa_size_dynamic_sections
#define elf_backend_always_size_sections elf_xtensa_always_size_sections
#define elf_backend_late_size_sections elf_xtensa_late_size_sections
#define elf_backend_early_size_sections elf_xtensa_early_size_sections
#define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
#define elf_backend_special_sections elf_xtensa_special_sections
#define elf_backend_action_discarded elf_xtensa_action_discarded

View File

@ -2562,8 +2562,8 @@ elf64_alpha_size_plt_section (struct bfd_link_info *info)
}
static bool
elf64_alpha_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf64_alpha_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *i;
struct alpha_elf_link_hash_table * htab;
@ -2789,8 +2789,8 @@ elf64_alpha_size_rela_got_section (struct bfd_link_info *info)
/* Set the sizes of the dynamic sections. */
static bool
elf64_alpha_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf64_alpha_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
@ -2802,7 +2802,8 @@ elf64_alpha_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
return false;
dynobj = elf_hash_table(info)->dynobj;
BFD_ASSERT(dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -5448,10 +5449,10 @@ static const struct elf_size_info alpha_elf_size_info =
elf64_alpha_merge_symbol_attribute
#define elf_backend_copy_indirect_symbol \
elf64_alpha_copy_indirect_symbol
#define elf_backend_always_size_sections \
elf64_alpha_always_size_sections
#define elf_backend_size_dynamic_sections \
elf64_alpha_size_dynamic_sections
#define elf_backend_early_size_sections \
elf64_alpha_early_size_sections
#define elf_backend_late_size_sections \
elf64_alpha_late_size_sections
#define elf_backend_omit_section_dynsym \
_bfd_elf_omit_section_dynsym_all
#define elf_backend_relocate_section \

View File

@ -176,9 +176,6 @@ static bool elf64_hppa_adjust_dynamic_symbol
static bool elf64_hppa_mark_milli_and_exported_functions
(struct elf_link_hash_entry *, void *);
static bool elf64_hppa_size_dynamic_sections
(bfd *, struct bfd_link_info *);
static int elf64_hppa_link_output_symbol_hook
(struct bfd_link_info *, const char *, Elf_Internal_Sym *,
asection *, struct elf_link_hash_entry *);
@ -1520,7 +1517,7 @@ elf64_hppa_mark_milli_and_exported_functions (struct elf_link_hash_entry *eh,
the contents of our special sections. */
static bool
elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
elf64_hppa_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
struct elf64_hppa_link_hash_table *hppa_info;
struct elf64_hppa_allocate_data data;
@ -1534,7 +1531,8 @@ elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
return false;
dynobj = hppa_info->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
/* Mark each function this program exports so that we will allocate
space in the .opd section for each function's FPTR. If we are
@ -3982,8 +3980,7 @@ const struct elf_size_info hppa64_elf_size_info =
#define elf_backend_adjust_dynamic_symbol \
elf64_hppa_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
elf64_hppa_size_dynamic_sections
#define elf_backend_late_size_sections elf64_hppa_late_size_sections
#define elf_backend_finish_dynamic_symbol \
elf64_hppa_finish_dynamic_symbol

View File

@ -2591,8 +2591,8 @@ elf64_ia64_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
}
static bool
elf64_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf64_ia64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf64_ia64_allocate_data data;
struct elf64_ia64_link_hash_table *ia64_info;
@ -2601,11 +2601,12 @@ elf64_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct elf_link_hash_table *hash_table;
hash_table = elf_hash_table (info);
dynobj = hash_table->dynobj;
ia64_info = elf64_ia64_hash_table (info);
if (ia64_info == NULL)
return false;
BFD_ASSERT(dynobj != NULL);
dynobj = hash_table->dynobj;
if (dynobj == NULL)
return true;
data.info = info;
/* Allocate the GOT entries. */
@ -5486,8 +5487,8 @@ static const struct elf_size_info elf64_ia64_vms_size_info = {
elf64_ia64_check_relocs
#define elf_backend_adjust_dynamic_symbol \
elf64_ia64_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
elf64_ia64_size_dynamic_sections
#define elf_backend_late_size_sections \
elf64_ia64_late_size_sections
#define elf_backend_omit_section_dynsym \
_bfd_elf_omit_section_dynsym_all
#define elf_backend_relocate_section \

View File

@ -4748,10 +4748,10 @@ const struct elf_size_info mips_elf64_size_info =
#define elf_backend_get_target_dtag _bfd_mips_elf_get_target_dtag
#define elf_backend_adjust_dynamic_symbol \
_bfd_mips_elf_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
_bfd_mips_elf_always_size_sections
#define elf_backend_size_dynamic_sections \
_bfd_mips_elf_size_dynamic_sections
#define elf_backend_early_size_sections \
_bfd_mips_elf_early_size_sections
#define elf_backend_late_size_sections \
_bfd_mips_elf_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_relocate_section _bfd_mips_elf_relocate_section
#define elf_backend_finish_dynamic_symbol \

View File

@ -119,8 +119,8 @@ static bfd_vma opd_entry_value
#define elf_backend_adjust_dynamic_symbol ppc64_elf_adjust_dynamic_symbol
#define elf_backend_hide_symbol ppc64_elf_hide_symbol
#define elf_backend_maybe_function_sym ppc64_elf_maybe_function_sym
#define elf_backend_always_size_sections ppc64_elf_edit
#define elf_backend_size_dynamic_sections ppc64_elf_size_dynamic_sections
#define elf_backend_early_size_sections ppc64_elf_edit
#define elf_backend_late_size_sections ppc64_elf_late_size_sections
#define elf_backend_hash_symbol ppc64_elf_hash_symbol
#define elf_backend_init_index_section _bfd_elf_init_2_index_sections
#define elf_backend_action_discarded ppc64_elf_action_discarded
@ -10148,7 +10148,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
((((v) & 0x3ffff0000ULL) << 16) | (v & 0xffff))
#define HA34(v) ((v + (1ULL << 33)) >> 34)
/* Called via elf_link_hash_traverse from ppc64_elf_size_dynamic_sections
/* Called via elf_link_hash_traverse from ppc64_elf_late_size_sections
to set up space for global entry stubs. These are put in glink,
after the branch table. */
@ -10225,8 +10225,8 @@ size_global_entry_stubs (struct elf_link_hash_entry *h, void *inf)
/* Set the sizes of the dynamic sections. */
static bool
ppc64_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
ppc64_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct ppc_link_hash_table *htab;
bfd *dynobj;
@ -10241,7 +10241,7 @@ ppc64_elf_size_dynamic_sections (bfd *output_bfd,
dynobj = htab->elf.dynobj;
if (dynobj == NULL)
abort ();
return true;
if (htab->elf.dynamic_sections_created)
{

View File

@ -1301,7 +1301,7 @@ elf_s390_gc_mark_hook (asection *sec,
entry but we found we will not create any. Called when we find we will
not have any PLT for this symbol, by for example
elf_s390_adjust_dynamic_symbol when we're doing a proper dynamic link,
or elf_s390_size_dynamic_sections if no dynamic sections will be
or elf_s390_late_size_sections if no dynamic sections will be
created (we're only linking static objects). */
static void
@ -1714,8 +1714,8 @@ allocate_dynrelocs (struct elf_link_hash_entry *h,
/* Set the sizes of the dynamic sections. */
static bool
elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_s390_link_hash_table *htab;
bfd *dynobj;
@ -1729,7 +1729,7 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
dynobj = htab->elf.dynobj;
if (dynobj == NULL)
abort ();
return true;
if (htab->elf.dynamic_sections_created)
{
@ -3965,7 +3965,7 @@ const struct elf_size_info s390_elf64_size_info =
#define elf_backend_gc_mark_hook elf_s390_gc_mark_hook
#define elf_backend_reloc_type_class elf_s390_reloc_type_class
#define elf_backend_relocate_section elf_s390_relocate_section
#define elf_backend_size_dynamic_sections elf_s390_size_dynamic_sections
#define elf_backend_late_size_sections elf_s390_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_grok_prstatus elf_s390_grok_prstatus
#define elf_backend_grok_psinfo elf_s390_grok_psinfo

View File

@ -953,8 +953,8 @@ const struct elf_size_info elf64_sparc_size_info =
_bfd_sparc_elf_adjust_dynamic_symbol
#define elf_backend_omit_section_dynsym \
_bfd_sparc_elf_omit_section_dynsym
#define elf_backend_size_dynamic_sections \
_bfd_sparc_elf_size_dynamic_sections
#define elf_backend_late_size_sections \
_bfd_sparc_elf_late_size_sections
#define elf_backend_relocate_section \
_bfd_sparc_elf_relocate_section
#define elf_backend_finish_dynamic_symbol \

View File

@ -106,7 +106,7 @@ tilegx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
#define elf_backend_check_relocs tilegx_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol tilegx_elf_adjust_dynamic_symbol
#define elf_backend_omit_section_dynsym tilegx_elf_omit_section_dynsym
#define elf_backend_size_dynamic_sections tilegx_elf_size_dynamic_sections
#define elf_backend_late_size_sections tilegx_elf_late_size_sections
#define elf_backend_relocate_section tilegx_elf_relocate_section
#define elf_backend_finish_dynamic_symbol tilegx_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections tilegx_elf_finish_dynamic_sections

View File

@ -2615,8 +2615,7 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info,
}
static bool
elf_x86_64_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elf_x86_64_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
bfd *abfd;
@ -2629,7 +2628,7 @@ elf_x86_64_always_size_sections (bfd *output_bfd,
elf_x86_64_scan_relocs))
return false;
return _bfd_x86_elf_always_size_sections (output_bfd, info);
return _bfd_x86_elf_early_size_sections (output_bfd, info);
}
/* Return the relocation value for @tpoff relocation
@ -5747,7 +5746,7 @@ elf_x86_64_special_sections[]=
elf_x86_64_reloc_name_lookup
#define elf_backend_relocs_compatible elf_x86_64_relocs_compatible
#define elf_backend_always_size_sections elf_x86_64_always_size_sections
#define elf_backend_early_size_sections elf_x86_64_early_size_sections
#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
#define elf_backend_finish_dynamic_sections elf_x86_64_finish_dynamic_sections
#define elf_backend_finish_dynamic_symbol elf_x86_64_finish_dynamic_symbol

View File

@ -6667,8 +6667,8 @@ bfd_elf_size_dynamic_sections (bfd *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))
if (bed->elf_backend_early_size_sections
&& !bed->elf_backend_early_size_sections (output_bfd, info))
return false;
dynobj = elf_hash_table (info)->dynobj;
@ -7474,9 +7474,8 @@ NOTE: This behaviour is deprecated and will be removed in a future version of th
/* The backend must work out the sizes of all the other dynamic
sections. */
if (dynobj != NULL
&& bed->elf_backend_size_dynamic_sections != NULL
&& ! (*bed->elf_backend_size_dynamic_sections) (output_bfd, info))
if (bed->elf_backend_late_size_sections != NULL
&& !bed->elf_backend_late_size_sections (output_bfd, info))
return false;
if (dynobj != NULL && elf_hash_table (info)->dynamic_sections_created)

View File

@ -4138,10 +4138,8 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
#define elf_backend_get_target_dtag _bfd_mips_elf_get_target_dtag
#define elf_backend_adjust_dynamic_symbol \
_bfd_mips_elf_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
_bfd_mips_elf_always_size_sections
#define elf_backend_size_dynamic_sections \
_bfd_mips_elf_size_dynamic_sections
#define elf_backend_early_size_sections _bfd_mips_elf_early_size_sections
#define elf_backend_late_size_sections _bfd_mips_elf_late_size_sections
#define elf_backend_init_index_section _bfd_elf_init_1_index_section
#define elf_backend_relocate_section _bfd_mips_elf_relocate_section
#define elf_backend_finish_dynamic_symbol \

View File

@ -112,7 +112,7 @@
allocate space for one relocation on the slot. Record the GOT offset
for this symbol.
elfNN_aarch64_size_dynamic_sections ()
elfNN_aarch64_late_size_sections ()
Iterate all input BFDS, look for in the local symbol data structure
constructed earlier for local TLS symbols and allocate them double
@ -9173,8 +9173,8 @@ elfNN_aarch64_allocate_local_ifunc_dynrelocs (void **slot, void *inf)
though ! */
static bool
elfNN_aarch64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elfNN_aarch64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_aarch64_link_hash_table *htab;
bfd *dynobj;
@ -9185,7 +9185,8 @@ elfNN_aarch64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
htab = elf_aarch64_hash_table ((info));
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->root.dynamic_sections_created)
{
@ -9587,8 +9588,8 @@ elfNN_aarch64_create_small_pltn_entry (struct elf_link_hash_entry *h,
_TLS_MODULE_BASE_, if needed. */
static bool
elfNN_aarch64_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elfNN_aarch64_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
asection *tls_sec;
@ -10320,8 +10321,8 @@ const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_adjust_dynamic_symbol \
elfNN_aarch64_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
elfNN_aarch64_always_size_sections
#define elf_backend_early_size_sections \
elfNN_aarch64_early_size_sections
#define elf_backend_check_relocs \
elfNN_aarch64_check_relocs
@ -10376,8 +10377,8 @@ const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_modify_headers \
elfNN_aarch64_modify_headers
#define elf_backend_size_dynamic_sections \
elfNN_aarch64_size_dynamic_sections
#define elf_backend_late_size_sections \
elfNN_aarch64_late_size_sections
#define elf_backend_size_info \
elfNN_aarch64_size_info

View File

@ -2987,8 +2987,8 @@ elfNN_ia64_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
}
static bool
elfNN_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elfNN_ia64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elfNN_ia64_allocate_data data;
struct elfNN_ia64_link_hash_table *ia64_info;
@ -2999,8 +2999,9 @@ elfNN_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
if (ia64_info == NULL)
return false;
dynobj = ia64_info->root.dynobj;
if (dynobj == NULL)
return true;
ia64_info->self_dtpmod_offset = (bfd_vma) -1;
BFD_ASSERT(dynobj != NULL);
data.info = info;
/* Set the contents of the .interp section to the interpreter. */
@ -5034,8 +5035,8 @@ ignore_errors (const char *fmt ATTRIBUTE_UNUSED, ...)
elfNN_ia64_check_relocs
#define elf_backend_adjust_dynamic_symbol \
elfNN_ia64_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections \
elfNN_ia64_size_dynamic_sections
#define elf_backend_late_size_sections \
elfNN_ia64_late_size_sections
#define elf_backend_omit_section_dynsym \
_bfd_elf_omit_section_dynsym_all
#define elf_backend_relocate_section \

View File

@ -4031,8 +4031,8 @@ kvx_readonly_dynrelocs (struct elf_link_hash_entry * h, void * inf)
/* This is the most important function of all . Innocuosly named
though ! */
static bool
elfNN_kvx_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
elfNN_kvx_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct elf_kvx_link_hash_table *htab;
bfd *dynobj;
@ -4042,8 +4042,8 @@ elfNN_kvx_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
htab = elf_kvx_hash_table ((info));
dynobj = htab->root.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->root.dynamic_sections_created)
{
@ -4357,8 +4357,7 @@ elfNN_kvx_create_small_pltn_entry (struct elf_link_hash_entry *h,
_TLS_MODULE_BASE_, if needed. */
static bool
elfNN_kvx_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
elfNN_kvx_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
asection *tls_sec;
@ -4713,8 +4712,8 @@ elfNN_kvx_plt_sym_val (bfd_vma i, const asection *plt,
#define elf_backend_adjust_dynamic_symbol \
elfNN_kvx_adjust_dynamic_symbol
#define elf_backend_always_size_sections \
elfNN_kvx_always_size_sections
#define elf_backend_early_size_sections \
elfNN_kvx_early_size_sections
#define elf_backend_check_relocs \
elfNN_kvx_check_relocs
@ -4757,8 +4756,8 @@ elfNN_kvx_plt_sym_val (bfd_vma i, const asection *plt,
#define elf_backend_reloc_type_class \
elfNN_kvx_reloc_type_class
#define elf_backend_size_dynamic_sections \
elfNN_kvx_size_dynamic_sections
#define elf_backend_late_size_sections \
elfNN_kvx_late_size_sections
#define elf_backend_can_refcount 1
#define elf_backend_can_gc_sections 1

View File

@ -1741,8 +1741,8 @@ maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
}
static bool
loongarch_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
loongarch_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct loongarch_elf_link_hash_table *htab;
bfd *dynobj;
@ -1752,7 +1752,8 @@ loongarch_elf_size_dynamic_sections (bfd *output_bfd,
htab = loongarch_elf_hash_table (info);
BFD_ASSERT (htab != NULL);
dynobj = htab->elf.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (htab->elf.dynamic_sections_created)
{
@ -5497,7 +5498,7 @@ loongarch_elf_is_rela_normal (Elf_Internal_Rela *rel)
loongarch_elf_create_dynamic_sections
#define elf_backend_check_relocs loongarch_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol loongarch_elf_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections loongarch_elf_size_dynamic_sections
#define elf_backend_late_size_sections loongarch_elf_late_size_sections
#define elf_backend_relocate_section loongarch_elf_relocate_section
#define elf_backend_finish_dynamic_symbol loongarch_elf_finish_dynamic_symbol
#define elf_backend_output_arch_local_syms \

View File

@ -1500,7 +1500,7 @@ allocate_local_ifunc_dynrelocs (void **slot, void *inf)
}
static bool
riscv_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
riscv_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
struct riscv_elf_link_hash_table *htab;
bfd *dynobj;
@ -1510,7 +1510,8 @@ riscv_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
htab = riscv_elf_hash_table (info);
BFD_ASSERT (htab != NULL);
dynobj = htab->elf.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -5667,7 +5668,7 @@ riscv_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
#define elf_backend_create_dynamic_sections riscv_elf_create_dynamic_sections
#define elf_backend_check_relocs riscv_elf_check_relocs
#define elf_backend_adjust_dynamic_symbol riscv_elf_adjust_dynamic_symbol
#define elf_backend_size_dynamic_sections riscv_elf_size_dynamic_sections
#define elf_backend_late_size_sections riscv_elf_late_size_sections
#define elf_backend_relocate_section riscv_elf_relocate_section
#define elf_backend_finish_dynamic_symbol riscv_elf_finish_dynamic_symbol
#define elf_backend_finish_dynamic_sections riscv_elf_finish_dynamic_sections

View File

@ -9649,8 +9649,8 @@ _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
check for any mips16 stub sections that we can discard. */
bool
_bfd_mips_elf_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
_bfd_mips_elf_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
asection *sect;
struct mips_elf_link_hash_table *htab;
@ -9993,8 +9993,8 @@ mips_elf_set_plt_sym_value (struct mips_elf_link_hash_entry *h, void *data)
/* Set the sizes of the dynamic sections. */
bool
_bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
_bfd_mips_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s, *sreldyn;
@ -10004,7 +10004,8 @@ _bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
htab = mips_elf_hash_table (info);
BFD_ASSERT (htab != NULL);
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{
@ -14943,7 +14944,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
input_section->flags &= ~SEC_HAS_CONTENTS;
}
/* Size has been set in _bfd_mips_elf_always_size_sections. */
/* Size has been set in _bfd_mips_elf_early_size_sections. */
BFD_ASSERT(o->size == sizeof (Elf_External_ABIFlags_v0));
/* Skip this section later on (I don't think this currently
@ -15002,7 +15003,7 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
input_section->flags &= ~SEC_HAS_CONTENTS;
}
/* Size has been set in _bfd_mips_elf_always_size_sections. */
/* Size has been set in _bfd_mips_elf_early_size_sections. */
BFD_ASSERT(o->size == sizeof (Elf32_External_RegInfo));
/* Skip this section later on (I don't think this currently

View File

@ -67,9 +67,9 @@ extern bool _bfd_mips_elf_check_relocs
(bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
extern bool _bfd_mips_elf_adjust_dynamic_symbol
(struct bfd_link_info *, struct elf_link_hash_entry *);
extern bool _bfd_mips_elf_always_size_sections
extern bool _bfd_mips_elf_early_size_sections
(bfd *, struct bfd_link_info *);
extern bool _bfd_mips_elf_size_dynamic_sections
extern bool _bfd_mips_elf_late_size_sections
(bfd *, struct bfd_link_info *);
extern int _bfd_mips_elf_relocate_section
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,

View File

@ -2381,8 +2381,8 @@ _bfd_sparc_elf_omit_section_dynsym (bfd *output_bfd,
/* Set the sizes of the dynamic sections. */
bool
_bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
_bfd_sparc_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct _bfd_sparc_elf_link_hash_table *htab;
bfd *dynobj;
@ -2392,7 +2392,8 @@ _bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
htab = _bfd_sparc_elf_hash_table (info);
BFD_ASSERT (htab != NULL);
dynobj = htab->elf.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{

View File

@ -117,7 +117,7 @@ extern bool _bfd_sparc_elf_adjust_dynamic_symbol
(struct bfd_link_info *, struct elf_link_hash_entry *);
extern bool _bfd_sparc_elf_omit_section_dynsym
(bfd *, struct bfd_link_info *, asection *);
extern bool _bfd_sparc_elf_size_dynamic_sections
extern bool _bfd_sparc_elf_late_size_sections
(bfd *, struct bfd_link_info *);
extern bool _bfd_sparc_elf_new_section_hook
(bfd *, asection *);

View File

@ -489,11 +489,11 @@
#ifndef elf_backend_adjust_dynamic_symbol
#define elf_backend_adjust_dynamic_symbol 0
#endif
#ifndef elf_backend_always_size_sections
#define elf_backend_always_size_sections 0
#ifndef elf_backend_early_size_sections
#define elf_backend_early_size_sections 0
#endif
#ifndef elf_backend_size_dynamic_sections
#define elf_backend_size_dynamic_sections 0
#ifndef elf_backend_late_size_sections
#define elf_backend_late_size_sections 0
#endif
#ifndef elf_backend_strip_zero_sized_dynamic_sections
#define elf_backend_strip_zero_sized_dynamic_sections 0
@ -859,8 +859,8 @@ static const struct elf_backend_data elfNN_bed =
elf_backend_check_directives,
elf_backend_notice_as_needed,
elf_backend_adjust_dynamic_symbol,
elf_backend_always_size_sections,
elf_backend_size_dynamic_sections,
elf_backend_early_size_sections,
elf_backend_late_size_sections,
elf_backend_strip_zero_sized_dynamic_sections,
elf_backend_init_index_section,
elf_backend_relocate_section,

View File

@ -2430,8 +2430,8 @@ tilegx_elf_omit_section_dynsym (bfd *output_bfd,
}
bool
tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
tilegx_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
struct tilegx_elf_link_hash_table *htab;
bfd *dynobj;
@ -2441,7 +2441,8 @@ tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
htab = tilegx_elf_hash_table (info);
BFD_ASSERT (htab != NULL);
dynobj = htab->elf.dynobj;
BFD_ASSERT (dynobj != NULL);
if (dynobj == NULL)
return true;
if (elf_hash_table (info)->dynamic_sections_created)
{

View File

@ -57,7 +57,7 @@ tilegx_elf_omit_section_dynsym (bfd *,
asection *);
extern bool
tilegx_elf_size_dynamic_sections (bfd *, struct bfd_link_info *);
tilegx_elf_late_size_sections (bfd *, struct bfd_link_info *);
extern int
tilegx_elf_relocate_section (bfd *, struct bfd_link_info *,

View File

@ -2241,7 +2241,7 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
/* Set the sizes of the dynamic sections. */
bool
_bfd_x86_elf_size_dynamic_sections (bfd *output_bfd,
_bfd_x86_elf_late_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
struct elf_x86_link_hash_table *htab;
@ -2257,7 +2257,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd *output_bfd,
return false;
dynobj = htab->elf.dynobj;
if (dynobj == NULL)
abort ();
return true;
/* Set up .got offsets for local syms, and space for local dynamic
relocs. */
@ -3003,8 +3003,8 @@ _bfd_x86_elf_finish_dynamic_sections (bfd *output_bfd,
bool
_bfd_x86_elf_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
_bfd_x86_elf_early_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
asection *tls_sec = elf_hash_table (info)->tls_sec;

View File

@ -853,13 +853,13 @@ extern bool _bfd_elf_x86_valid_reloc_p
const Elf_Internal_Rela *, struct elf_link_hash_entry *,
Elf_Internal_Sym *, Elf_Internal_Shdr *, bool *) ATTRIBUTE_HIDDEN;
extern bool _bfd_x86_elf_size_dynamic_sections
extern bool _bfd_x86_elf_late_size_sections
(bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
extern struct elf_x86_link_hash_table *_bfd_x86_elf_finish_dynamic_sections
(bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
extern bool _bfd_x86_elf_always_size_sections
extern bool _bfd_x86_elf_early_size_sections
(bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
extern void _bfd_x86_elf_merge_symbol_attribute
@ -934,8 +934,8 @@ extern void _bfd_x86_elf_link_report_relative_reloc
#define elf_backend_check_relocs \
_bfd_x86_elf_check_relocs
#define elf_backend_size_dynamic_sections \
_bfd_x86_elf_size_dynamic_sections
#define elf_backend_late_size_sections \
_bfd_x86_elf_late_size_sections
#define elf_backend_merge_symbol_attribute \
_bfd_x86_elf_merge_symbol_attribute
#define elf_backend_copy_indirect_symbol \

View File

@ -197,10 +197,9 @@ gld${EMULATION_NAME}_before_allocation (void)
/* The backend must work out the sizes of all the other dynamic
sections. */
if (elf_hash_table (&link_info)->dynamic_sections_created
&& bed->elf_backend_size_dynamic_sections
&& ! (*bed->elf_backend_size_dynamic_sections) (link_info.output_bfd,
&link_info))
if (bed->elf_backend_late_size_sections
&& !bed->elf_backend_late_size_sections (link_info.output_bfd,
&link_info))
einfo (_("%F%P: failed to set dynamic section sizes: %E\n"));
before_allocation_default ();