From: Mark Wielaard Date: Tue, 21 Nov 2017 10:13:00 +0000 (+0100) Subject: readelf: Print attribute name and form in error message. X-Git-Tag: elfutils-0.171~105 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=080e3f5b39eb722edd7ced68c072a82a6cc5bffb;p=thirdparty%2Felfutils.git readelf: Print attribute name and form in error message. Now an error getting the attribute value will not only print the DIE offset and the reason, but also the attribute name and form. e.g. DIE [b] cannot get attribute 'ranges' (sec_offset) value: .debug_ranges section missing Also we don't abort, but try to print the other attributes of the DIE anyway. It might just be one attribute whose value cannot be resolved. Signed-off-by: Mark Wielaard --- diff --git a/src/ChangeLog b/src/ChangeLog index d112cd2e5..c56c323cc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2017-11-21 Mark Wielaard + + * readelf.c (attr_callback): Print attribute name and form in error + message. If only the value cannot be retrieved/resolved don't abort. + 2017-10-03 Mark Wielaard * readelf.c (attr_callback): Print DIE offset in error messages. diff --git a/src/readelf.c b/src/readelf.c index e364583c8..a9168d1e2 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -5968,9 +5968,14 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) attrval_out: if (!cbargs->silent) error (0, 0, gettext ("DIE [%" PRIx64 "] " - "cannot get attribute value: %s"), - dwarf_dieoffset (die), dwarf_errmsg (-1)); - return DWARF_CB_ABORT; + "cannot get attribute '%s' (%s) value: " + "%s"), + dwarf_dieoffset (die), + dwarf_attr_name (attr), + dwarf_form_name (form), + dwarf_errmsg (-1)); + /* Don't ABORT, it might be other attributes can be resolved. */ + return DWARF_CB_OK; } char *a = format_dwarf_addr (cbargs->dwflmod, cbargs->addrsize, addr, addr);