From: Alan Modra Date: Thu, 14 Oct 2021 06:31:06 +0000 (+1030) Subject: [GOLD] Re: PowerPC64: Don't pretend to support multi-toc X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a1251fdcb58f99644c49b65d72507706f2d40200;p=binutils-gdb.git [GOLD] Re: PowerPC64: Don't pretend to support multi-toc We can't get at section->address() until everything is laid out, so trying to generalise the offset calculation rather than using a value of 0x8000 (the old object->toc_base_offset()) was bound to fail. got->g_o_t() is a little better than a hard-coded 0x8000. * powerpc.cc (Target_powerpc::Scan::local, global): Don't use toc_pointer() here. --- diff --git a/gold/powerpc.cc b/gold/powerpc.cc index d10b11e003b..4266268d639 100644 --- a/gold/powerpc.cc +++ b/gold/powerpc.cc @@ -8013,8 +8013,7 @@ Target_powerpc::Scan::local( break; Reloc_section* rela_dyn = target->rela_dyn_section(layout); - Address got_off = (target->toc_pointer() - - got->output_section()->address()); + Address got_off = got->g_o_t(); rela_dyn->add_output_section_relative(got->output_section(), elfcpp::R_POWERPC_RELATIVE, output_section, @@ -8740,8 +8739,7 @@ Target_powerpc::Scan::global( break; Reloc_section* rela_dyn = target->rela_dyn_section(layout); - Address got_off = (target->toc_pointer() - - got->output_section()->address()); + Address got_off = got->g_o_t(); rela_dyn->add_output_section_relative(got->output_section(), elfcpp::R_POWERPC_RELATIVE, output_section,