summaryrefslogtreecommitdiff
path: root/src/readelf.c
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2012-08-11 14:50:38 +0200
committerMark Wielaard <mjw@redhat.com>2012-08-16 22:26:23 +0200
commitbcae57f780b5ef3c5a5a05c31ff35886927fe0c9 (patch)
treed5a97c7d5b1184041c2829d7c4df05efe9b37224 /src/readelf.c
parenta985e57862fa0aed33314de079cd44908a6b59cc (diff)
downloadelfutils-bcae57f780b5ef3c5a5a05c31ff35886927fe0c9.tar.gz
Add dwarf_endianity_string and dwarf_decimal_sign_string.mjw/dwarfstrings
dwarf_endianity_string for DW_END codes used with DW_AT_endianity. dwarf_decimal_sign_string for DW_DS codes used with DW_AT_decimal_sign. Signed-off-by: Mark Wielaard <mjw@redhat.com>
Diffstat (limited to 'src/readelf.c')
-rw-r--r--src/readelf.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/readelf.c b/src/readelf.c
index 2711006d..c649c84c 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -3352,6 +3352,30 @@ dwarf_discr_list_name (unsigned int code)
return result;
}
+static const char *
+dwarf_endianity_name (unsigned int code)
+{
+ const char *result = dwarf_endianity_string (code);
+ if (unlikely (result == NULL))
+ {
+ if (code >= DW_END_lo_user && code <= DW_END_hi_user)
+ snprintf (unknown_buf, sizeof unknown_buf, "lo_user+%#x",
+ code - DW_END_lo_user);
+ else
+ return "???"; /* Numeric value is always already printed. */
+ result = unknown_buf;
+ }
+ return result;
+}
+
+static const char *
+dwarf_decimal_sign_name (unsigned int code)
+{
+ const char *result = dwarf_decimal_sign_string (code);
+ if (unlikely (result == NULL))
+ result = "???"; /* Numeric value is always already printed. */
+ return result;
+}
static void
print_block (size_t n, const void *block)
@@ -5025,6 +5049,12 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
case DW_AT_discr_list:
valuestr = dwarf_discr_list_name (num);
break;
+ case DW_AT_endianity:
+ valuestr = dwarf_endianity_name (num);
+ break;
+ case DW_AT_decimal_sign:
+ valuestr = dwarf_decimal_sign_name (num);
+ break;
default:
/* Nothing. */
break;