diff options
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 6 | ||||
-rw-r--r-- | binutils/readelf.c | 22 |
2 files changed, 27 insertions, 1 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 7a19cc7..7eea2c0 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2016-04-29 Nick Clifton <nickc@redhat.com> + + PR 19938 + * readelf.c (get_solaris_segment_type): New function. + (get_segment_type): Call it. + 2016-04-28 Nick Clifton <nickc@redhat.com> * po/zh_CN.po: Updated Chinese (simplified) translation. diff --git a/binutils/readelf.c b/binutils/readelf.c index cf91755..b6454d3 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -3689,6 +3689,23 @@ get_tic6x_segment_type (unsigned long type) } static const char * +get_solaris_segment_type (unsigned long type) +{ + switch (type) + { + case 0x6464e550: return "PT_SUNW_UNWIND"; + case 0x6474e550: return "PT_SUNW_EH_FRAME"; + case 0x6ffffff7: return "PT_LOSUNW"; + case 0x6ffffffa: return "PT_SUNWBSS"; + case 0x6ffffffb: return "PT_SUNWSTACK"; + case 0x6ffffffc: return "PT_SUNWDTRACE"; + case 0x6ffffffd: return "PT_SUNWCAP"; + case 0x6fffffff: return "PT_HISUNW"; + default: return NULL; + } +} + +static const char * get_segment_type (unsigned long p_type) { static char buff[32]; @@ -3758,7 +3775,10 @@ get_segment_type (unsigned long p_type) result = get_ia64_segment_type (p_type); break; default: - result = NULL; + if (elf_header.e_ident[EI_OSABI] == ELFOSABI_SOLARIS) + result = get_solaris_segment_type (p_type); + else + result = NULL; break; } |