[gold commit] PR 18695: Add additional information to relocation overflow errors

Cary Coutant ccoutant@gmail.com
Sun Feb 7 18:18:00 GMT 2016
This patch adds some additional useful information to the relocation
overflow errors for x86_64.

-cary


2016-02-07  Cary Coutant  <ccoutant@gmail.com>

gold/
        PR gold/18695
        * x86_64.cc (Target_x86_64::Relocate::relocate): Add additional
        information to relocation overflow errors.

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 mailing list