This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] gold: Provide more failed archive member info in error message


On Tue, Dec 4, 2018 at 12:00 AM Cary Coutant <ccoutant@gmail.com> wrote:
>
> > +  bool plugin_failed = 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;
> >          }
> > +
> > +      plugin_failed = true;
>
> An unclaimed file is not a plugin "failure". I'd prefer to name this
> variable "unclaimed".
>

Like this?

-- 
H.J.
From 4acd227f1891c4a4c17ddc08feece8be409f0dcb Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Fri, 28 Sep 2018 12:21:51 -0700
Subject: [PATCH] gold: Provide more failed archive member info in error
 message

When gold fails to get an archive member, its error message doesn't
have information for

1. The failed archive member name.
2. The cause of failure: non-ELF object vs non-IR object.

This patch adds the failed archive member name and non-ELF/non-IR info
to gold error message.

	* archive.cc (Archive::get_elf_object_for_member): Also print
	archive member and non-ELF/non-IR info on error.
---
 gold/archive.cc | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/gold/archive.cc b/gold/archive.cc
index 4df9e74b07..fe2a507da7 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;
     }
 
-- 
2.19.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]