diff options
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/archive.cc | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 2379536e702..5c5bca290ca 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 4df9e74b07a..fe2a507da7b 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; } |