Fix a snafu in a previous update to readelf that stopped it from printing archive...
authorNick Clifton <nickc@redhat.com>
Fri, 17 Nov 2017 12:05:34 +0000 (12:05 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 17 Nov 2017 12:05:34 +0000 (12:05 +0000)
--
This patch causes problems for glibc linknamespace tests because of how it
changes the output format of readelf on .a files.

Previously, "readelf -W -s libc.a" would produce output starting e.g.:

File: /scratch/jmyers/glibc/many8/build/glibcs/x86_64-linux-gnu/glibc/libc.a(init-first.o)

Symbol table '.symtab' contains 30 entries:

and continuing with symbol information for each object in that .a file.
After this commit, instead it starts:

File: /scratch/jmyers/glibc/many8/build/glibcs/x86_64-linux-gnu/glibc/libc.a

Symbol table '.symtab' contains 30 entries:

and every object's symbol information starts with the same File: line,
missing any information about which object's symbols (within libc.a) are
being listed.

I think the previous File: lines that said libc.a(init-first.o) etc.,
identifying the particular object within libc.a, were clearly preferable,
and the glibc linknamespace tests rely on having that information about
the individual object within libc.a.
--

binutils * readelf.c (process_archive): Include member name in the
file_name of the filedata structure.

binutils/ChangeLog
binutils/readelf.c

index a469e37c8279784c41c37f3276ae86949efb8b59..16e93d763ac9117ac7eb7a07d4bde88e22111a1f 100644 (file)
@@ -1,3 +1,8 @@
+2017-11-17  Nick Clifton  <nickc@redhat.com>
+
+       * readelf.c (process_archive): Include member name in the
+       file_name of the filedata structure.
+
 2017-11-15  Alan Modra  <amodra@gmail.com>
 
        PR 22426
index b7f1e091e0798c4e860bf60028821839fce8e03d..b1130a77e634ef4b5a4fe3c37872b76b26de201b 100644 (file)
@@ -18715,6 +18715,7 @@ process_archive (Filedata * filedata, bfd_boolean is_thin_archive)
           archive_file_offset = arch.next_arhdr_offset;
           arch.next_arhdr_offset += archive_file_size;
 
+         filedata->file_name = qualified_name;
           if (! process_object (filedata))
            ret = FALSE;
         }