Add additional information to relocation overflow errors.

gold/
	PR gold/18695
	* x86_64.cc (Target_x86_64::Relocate::relocate): Add additional
	information to relocation overflow errors.
This commit is contained in:
Cary Coutant 2016-02-07 10:17:01 -08:00
parent 7c8b700c92
commit 17ecd01611
2 changed files with 31 additions and 2 deletions

View file

@ -1,5 +1,12 @@
2016-02-07 Cary Coutant <ccoutant@gmail.com>
PR gold/18695
* x86_64.cc (Target_x86_64::Relocate::relocate): Add additional
information to relocation overflow errors.
2016-02-06 Cary Coutant <ccoutant@gmail.com>
PR gold/18695
* x86_64.cc (X86_64_relocate_functions::pcrela32_check): Fix x32
overflow checking when symbol value + addend < 0.

View file

@ -3701,8 +3701,30 @@ Target_x86_64<size>::Relocate::relocate(
}
if (rstatus == Reloc_funcs::RELOC_OVERFLOW)
gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
_("relocation overflow"));
{
if (gsym == NULL)
{
unsigned int r_sym = elfcpp::elf_r_sym<size>(rela.get_r_info());
gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
_("relocation overflow: "
"reference to local symbol %u in %s"),
r_sym, object->name().c_str());
}
else if (gsym->is_defined() && gsym->source() == Symbol::FROM_OBJECT)
{
gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
_("relocation overflow: "
"reference to '%s' defined in %s"),
gsym->name(),
gsym->object()->name().c_str());
}
else
{
gold_error_at_location(relinfo, relnum, rela.get_r_offset(),
_("relocation overflow: reference to '%s'"),
gsym->name());
}
}
return true;
}