aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog5
-rw-r--r--gold/archive.cc13
2 files changed, 16 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 2379536..5c5bca2 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,8 @@
+2018-12-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * archive.cc (Archive::get_elf_object_for_member): Also print
+ archive member and non-ELF/non-IR info on error.
+
2018-12-05 Alan Modra <amodra@gmail.com>
* symtab.h (Symbol::Symbol): Avoid -Wclass-memaccess warning.
diff --git a/gold/archive.cc b/gold/archive.cc
index 4df9e74..fe2a507 100644
--- a/gold/archive.cc
+++ b/gold/archive.cc
@@ -690,6 +690,7 @@ Archive::get_elf_object_for_member(off_t off, bool* punconfigured)
int read_size;
Object *obj = NULL;
bool is_elf_obj = false;
+ bool unclaimed = false;
if (is_elf_object(input_file, memoff, &ehdr, &read_size))
{
@@ -716,12 +717,20 @@ Archive::get_elf_object_for_member(off_t off, bool* punconfigured)
delete obj;
return plugin_obj;
}
+
+ unclaimed = true;
}
if (!is_elf_obj)
{
- gold_error(_("%s: member at %zu is not an ELF object"),
- this->name().c_str(), static_cast<size_t>(off));
+ if (unclaimed)
+ gold_error(_("%s: plugin failed to claim member %s at %zu"),
+ this->name().c_str(), member_name.c_str(),
+ static_cast<size_t>(off));
+ else
+ gold_error(_("%s: member %s at %zu is not an ELF object"),
+ this->name().c_str(), member_name.c_str(),
+ static_cast<size_t>(off));
return NULL;
}