diff options
author | Mark Wielaard <mjw@redhat.com> | 2012-08-11 14:50:38 +0200 |
---|---|---|
committer | Mark Wielaard <mjw@redhat.com> | 2012-08-16 22:26:23 +0200 |
commit | bcae57f780b5ef3c5a5a05c31ff35886927fe0c9 (patch) | |
tree | d5a97c7d5b1184041c2829d7c4df05efe9b37224 /src/readelf.c | |
parent | a985e57862fa0aed33314de079cd44908a6b59cc (diff) | |
download | elfutils-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.c | 30 |
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; |