aboutsummaryrefslogtreecommitdiff
path: root/gold/testsuite/relr_1.s
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/testsuite/relr_1.s
parent92228a334ba2a775277fc4a8441dd926c26d33c1 (diff)
downloadgdb-users/maskray/gold-relr.zip
gdb-users/maskray/gold-relr.tar.gz
gdb-users/maskray/gold-relr.tar.bz2
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/testsuite/relr_1.s')
-rw-r--r--gold/testsuite/relr_1.s14
1 files changed, 14 insertions, 0 deletions
diff --git a/gold/testsuite/relr_1.s b/gold/testsuite/relr_1.s
new file mode 100644
index 0000000..7828ac8
--- /dev/null
+++ b/gold/testsuite/relr_1.s
@@ -0,0 +1,14 @@
+.data
+.balign 8
+.globl data
+data:
+
+.dc.a .data
+.dc.a 0
+.dc.a data + 2
+.dc.a __ehdr_start + 4
+.dc.a __ehdr_start + 9
+
+.byte 0
+// Offset is not a multiple of 2. Don't use RELR.
+.dc.a __ehdr_start + 10