[GOLD] PowerPC64 relocation overflow for -Os register save/restore funcs

Message ID YRyILwaM3dazBLD5@squeak.grove.modra.org
State New
Headers show
Series
  • [GOLD] PowerPC64 relocation overflow for -Os register save/restore funcs
Related show

Commit Message

Alan Modra via Binutils Aug. 18, 2021, 4:10 a.m.
Fixes a silly mistake in calculating the address of -Os out-of-line
register save/restore function copies.  Copies of these linker defined
functions are added to stub sections when the original (in
target->savres_section) can't be reached.

	* powerpc.cc (Target_powerpc::Relocate::relocate): Correct address
	calculation of out-of-line save/restore function copies.


-- 
Alan Modra
Australia Development Lab, IBM

Patch

diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index 6b12ed8869b..11b98695e64 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -11201,6 +11201,8 @@  Target_powerpc<size, big_endian>::Relocate::relocate(
 		{
 		  if (ent->save_res_)
 		    value = (value - target->savres_section()->address()
+			     + stub_table->stub_address()
+			     + stub_table->plt_size()
 			     + stub_table->branch_size());
 		  else
 		    {