diff options
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; |