diff options
author | Alan Modra <amodra@gmail.com> | 2023-06-23 09:38:13 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2023-06-23 21:02:48 +0930 |
commit | bdad2ad579f7e7a6307f61e67ef70315506a26f6 (patch) | |
tree | ac16c422e917dfe8cde08116d7c8029c881c40a9 /gold/mips.cc | |
parent | 027614abf11de9e79a335df4e1f9a788b7ab0063 (diff) | |
download | gdb-bdad2ad579f7e7a6307f61e67ef70315506a26f6.zip gdb-bdad2ad579f7e7a6307f61e67ef70315506a26f6.tar.gz gdb-bdad2ad579f7e7a6307f61e67ef70315506a26f6.tar.bz2 |
[GOLD] Support setting DT_RELACOUNT late
PowerPC gold adds relative dynamic relocs in do_relax. These aren't
accounted for in the value set in add_target_dynamic_tags, which is
called before do_relax. Provide a way of setting DT_RELCOUNT and
DT_RELACOUNT at the point where .dynamic is written.
* layout.cc (Layout::add_target_dynamic_tags): Add custom_relcount
parameter. Emit DT_RELCOUNT/RELACOUNT as a custom target handled
dynamic tag if set.
* layout.h(Layout::add_target_dynamic_tags): Update prototype.
* aarch64.cc (Target_aarch64::do_finalize_sections): Adjust
add_target_dynamic_tags call.
* arm.cc (Target_arm::do_finalize_sections): Likewise.
* i386.cc (Target_i386::do_finalize_sections): Likewise.
* mips.cc (Target_mips::do_finalize_sections): Likewise.
* s390.cc (Target_s390::do_finalize_sections): Likewise.
* sparc.cc (Target_sparc::do_finalize_sections): Likewise.
* tilegx.cc (Target_tilegx::do_finalize_sections): Likewise.
* x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
* powerpc.cc (Target_powerpc::do_finalize_sections): Likewise.
(Target_powerpc::do_dynamic_tag_custom_value): New function.
Diffstat (limited to 'gold/mips.cc')
-rw-r--r-- | gold/mips.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gold/mips.cc b/gold/mips.cc index bd7353b..a6a41d7 100644 --- a/gold/mips.cc +++ b/gold/mips.cc @@ -9826,7 +9826,7 @@ Target_mips<size, big_endian>::do_finalize_sections(Layout* layout, const Reloc_section* rel_plt = (this->plt_ == NULL ? NULL : this->plt_->rel_plt()); layout->add_target_dynamic_tags(true, this->got_, rel_plt, - this->rel_dyn_, true, false); + this->rel_dyn_, true, false, false); Output_data_dynamic* const odyn = layout->dynamic_data(); if (odyn != NULL |