[binutils-gdb] Add additional information to relocation overflow errors.
Cary Coutant
ccoutant@sourceware.org
Sun Feb 7 18:17:00 GMT 2016
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=17ecd016113c77c7fead1725d2d315fe7b42aced
commit 17ecd016113c77c7fead1725d2d315fe7b42aced
Author: Cary Coutant <ccoutant@gmail.com>
Date: Sun Feb 7 10:17:01 2016 -0800
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.
Diff:
---
gold/ChangeLog | 7 +++++++
gold/x86_64.cc | 26 ++++++++++++++++++++++++--
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/gold/ChangeLog b/gold/ChangeLog
index d824511..b796a24 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -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.
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index b0780af..81126ef 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -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;
}
More information about the Binutils-cvs
mailing list