diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2022-01-06 09:24:41 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2022-01-12 06:04:51 -0800 |
commit | 23cc1de50b006fa10e295bdb4455540f001515e9 (patch) | |
tree | d25d69445f837310c737233f5987861c9ca88a49 /bfd/elfxx-target.h | |
parent | 6a91be866619c592762cd7e9b034a9f7ad27ef37 (diff) | |
download | gdb-23cc1de50b006fa10e295bdb4455540f001515e9.zip gdb-23cc1de50b006fa10e295bdb4455540f001515e9.tar.gz gdb-23cc1de50b006fa10e295bdb4455540f001515e9.tar.bz2 |
elf: Add size_relative_relocs and finish_relative_relocs
On some targets, the DT_RELR section size can be computed only after all
symbols addresses can be determined. Set the preliminary DT_RELR section
size before mapping sections to segments and set the final DT_RELR section
size after regular symbol processing is done.
* elf-bfd.h (elf_backend_data): Add size_relative_relocs and
finish_relative_relocs.
* elf.c (_bfd_elf_map_sections_to_segments): Call
size_relative_relocs if DT_RELR is enabled.
* elflink.c (bfd_elf_final_link): Call finish_relative_relocs
after regular symbol processing is finished if DT_RELR is enabled.
* elfxx-target.h (elf_backend_size_relative_relocs): New.
(elf_backend_finish_relative_relocs): Likewise.
(elfNN_bed): Add elf_backend_size_relative_relocs and
elf_backend_finish_relative_relocs.
Diffstat (limited to 'bfd/elfxx-target.h')
-rw-r--r-- | bfd/elfxx-target.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index 360b056..e31985e 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -478,6 +478,12 @@ #ifndef elf_backend_check_relocs #define elf_backend_check_relocs 0 #endif +#ifndef elf_backend_size_relative_relocs +#define elf_backend_size_relative_relocs 0 +#endif +#ifndef elf_backend_finish_relative_relocs +#define elf_backend_finish_relative_relocs 0 +#endif #ifndef elf_backend_check_directives #define elf_backend_check_directives 0 #endif @@ -842,6 +848,8 @@ static const struct elf_backend_data elfNN_bed = elf_backend_omit_section_dynsym, elf_backend_relocs_compatible, elf_backend_check_relocs, + elf_backend_size_relative_relocs, + elf_backend_finish_relative_relocs, elf_backend_check_directives, elf_backend_notice_as_needed, elf_backend_adjust_dynamic_symbol, |