objdump, readelf: Report errors from CTF archive iteration

We were failing to report errors from ctf_archive_iter, which results in
silent early termination if (for example) one CTF archive member in a
.ctf section is corrupted and cannot be opened.  Report the error in the
usual fashion instead.

binutils/ChangeLog
2020-11-20  Nick Alcock  <nick.alcock@oracle.com>

	* objdump.c (dump_ctf): Report errors from ctf_archive_iter.
	* readelf.c (dump_section_as_ctf): Likewise.
This commit is contained in:
Nick Alcock 2020-11-20 13:34:04 +00:00
parent ae41200ba8
commit 83d59285d5
3 changed files with 17 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2020-11-20 Nick Alcock <nick.alcock@oracle.com>
* objdump.c (dump_ctf): Report errors from ctf_archive_iter.
* readelf.c (dump_section_as_ctf): Likewise.
2020-11-20 Nick Alcock <nick.alcock@oracle.com>
* objdump.c (dump_ctf): Use ctf_dict_open, not

View File

@ -4203,7 +4203,12 @@ dump_ctf (bfd *abfd, const char *sect_name, const char *parent_name)
printf (_("Contents of CTF section %s:\n"), sanitize_string (sect_name));
ctf_archive_iter (ctfa, dump_ctf_archive_member, parent);
if ((err = ctf_archive_iter (ctfa, dump_ctf_archive_member, parent)) != 0)
{
dump_ctf_errs (NULL);
non_fatal (_("CTF archive member open failure: %s"), ctf_errmsg (err));
bfd_fatal (bfd_get_filename (abfd));
}
ctf_dict_close (parent);
ctf_close (ctfa);
ctf_close (parenta);

View File

@ -14787,8 +14787,12 @@ dump_section_as_ctf (Elf_Internal_Shdr * section, Filedata * filedata)
printf (_("\nDump of CTF section '%s':\n"),
printable_section_name (filedata, section));
if (ctf_archive_iter (ctfa, dump_ctf_archive_member, parent) != 0)
ret = FALSE;
if ((err = ctf_archive_iter (ctfa, dump_ctf_archive_member, parent)) != 0)
{
dump_ctf_errs (NULL);
error (_("CTF member open failure: %s\n"), ctf_errmsg (err));
ret = FALSE;
}
fail:
ctf_dict_close (parent);