From 03c02b696e90714a0ae2c0200d3c65cfffcaa1ee Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 19 Jul 2023 10:26:04 +0930 Subject: [PATCH] [GOLD, PowerPC64] Debug info relocation overflow 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 | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) 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::Relocate::relocate( && gsym->is_undefined() && is_branch_reloc(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; -- 2.30.2