[GOLD, PowerPC64] Debug info relocation overflow
authorAlan Modra <amodra@gmail.com>
Wed, 19 Jul 2023 00:56:04 +0000 (10:26 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 19 Jul 2023 01:37:03 +0000 (11:07 +0930)
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.

gold/powerpc.cc

index 96fef7b8dde73a00cbb8640589f0dbb42a7cad68..d62bdea7ecbabc4c0d420cc1cb4460008142534b 100644 (file)
@@ -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;