[GOLD,PowerPC64] Debug info relocation overflow

Message ID ZLc/ckC/wa90hisa@squeak.grove.modra.org
State Accepted
Headers
Series [GOLD,PowerPC64] Debug info relocation overflow |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Alan Modra July 19, 2023, 1:42 a.m. UTC
  It is possible to build huge binaries on powerpc64, where 32-bit
addresses in debug info are insufficient to descibe locations in the
binary.  Help out the user, and only warn about debug overflows.

	* powerpc.cc (Target_powerpc::Relocate::relocate): Warn on
	relocation overflows in debug info.
  

Patch

diff --git a/gold/powerpc.cc b/gold/powerpc.cc
index 96fef7b8dde..d62bdea7ecb 100644
--- a/gold/powerpc.cc
+++ b/gold/powerpc.cc
@@ -12420,10 +12420,19 @@  Target_powerpc<size, big_endian>::Relocate::relocate(
 	       && gsym->is_undefined()
 	       && is_branch_reloc<size>(r_type))))
     {
-      gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
-			     _("relocation overflow"));
-      if (has_stub_value)
-	gold_info(_("try relinking with a smaller --stub-group-size"));
+      if (os->flags() & elfcpp::SHF_ALLOC)
+	{
+	  gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
+				 _("relocation overflow"));
+	  if (has_stub_value)
+	    gold_info(_("try relinking with a smaller --stub-group-size"));
+	}
+      else
+	{
+	  gold_warning_at_location(relinfo, relnum, rela.get_r_offset(),
+				   _("relocation overflow"));
+	  gold_info(_("debug info may be unreliable, compile with -gdwarf64"));
+	}
     }
 
   return true;