summaryrefslogtreecommitdiff
path: root/bfd/elfxx-target.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2022-01-06 09:24:41 -0800
committerH.J. Lu <hjl.tools@gmail.com>2022-01-12 06:04:51 -0800
commit23cc1de50b006fa10e295bdb4455540f001515e9 (patch)
treed25d69445f837310c737233f5987861c9ca88a49 /bfd/elfxx-target.h
parent6a91be866619c592762cd7e9b034a9f7ad27ef37 (diff)
downloadbinutils-gdb-23cc1de50b006fa10e295bdb4455540f001515e9.tar.gz
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.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 360b056ff58..e31985ef777 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,