summaryrefslogtreecommitdiff
path: root/gold/layout.h
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2021-11-24 18:05:45 -0800
committerFangrui Song <maskray@google.com>2021-12-03 14:59:51 -0800
commitf48364f97320ffc60dd4b567dd4e4f2336c5e619 (patch)
treefb1125ae7212902da6f886238aa9ebb02e0c2b46 /gold/layout.h
parent92228a334ba2a775277fc4a8441dd926c26d33c1 (diff)
downloadbinutils-gdb-users/maskray/gold-relr.tar.gz
gold: Add --pack-dyn-relocs=relr for arm/aarch64/x86-64 [PR 28601]users/maskray/gold-relr
elfcpp/ * elfcpp.h (SHT): New constant SHT_RELR. (DT): New constants DT_SYMTAB_SHNDX/DT_RELRSZ/DT_RELR/DT_RELRENT. (Elf_sizes): New static data member relr_size. gold/ * options.h (class General_options): Add pack_dyn_relocs, Pack_dyn_relocs, relr_relocs, and pack_dyn_relocs_enum_. * options.cc (General_options::relr_relocs): Define. * reloc-types.h (Reloc_types<elfcpp::SHT_RELR, size, big_endian>): New. * layout.h (Layout::add_target_dynamic_tags): Add dyn_relr. * layout.cc (Layout::add_target_dynamic_tags): Add dyn_relr. * output.h (set_current_data_size_for_child): Remove assert. (Output_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>): New. (Output_data_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>): New. * output.cc (Output_data_reloc_base): Set entsize for SHT_RELR. (do_write): Define. (Output_data_reloc<elfcpp::SHT_RELR, true, *, *>): Instantiate. * aarch64.cc (Target_aarch64): Add Relr_section, relr_dyn_section, and relr_dyn_. (do_relax): Check SHT_RELR. (Target_aarch64::Scan::local): Check SHT_RELR. (Target_aarch64::Scan::global): Check SHT_RELR. * arm.cc (Target_arm): Add Relr_section, relr_dyn_section, and relr_dyn_. (do_relax): Check SHT_RELR. (Target_arm::Scan::local): Check SHT_RELR. (Target_arm::Scan::global): Check SHT_RELR. * x86_64.cc (Target_x86_64): Add Relr_section, relr_dyn_section, and relr_dyn_. (do_relax): Check SHT_RELR. (Target_x86_64::Scan::local): Check SHT_RELR. (Target_x86_64::Scan::global): Check SHT_RELR. * testsuite/Makefile.am: New tests relr_arm.sh relr_aarch64.sh relr_x86_64.sh. * testsuite/relr_1.s: New.
Diffstat (limited to 'gold/layout.h')
-rw-r--r--gold/layout.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/gold/layout.h b/gold/layout.h
index 05c31714e47..a4a4f6596bd 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -950,7 +950,8 @@ class Layout
add_target_dynamic_tags(bool use_rel, const Output_data* plt_got,
const Output_data* plt_rel,
const Output_data_reloc_generic* dyn_rel,
- bool add_debug, bool dynrel_includes_plt);
+ bool add_debug, bool dynrel_includes_plt,
+ const Output_data_reloc_generic* dyn_relr = NULL);
// Add a target-specific dynamic tag with constant value.
void