diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-08-17 22:41:36 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-08-17 22:41:36 (GMT) |
commit | 643d8886dbc8e04de7a3bab1207c6997ea2549d7 (patch) | |
tree | 9172189bfeee70a1422d09968b8fda9fb4911231 /src/format/elf/program.c | |
parent | 9841343bcf0e93fd5d72e5f41c7e2b9939063568 (diff) |
Resolved some extra program header types specific to ARM.
Diffstat (limited to 'src/format/elf/program.c')
-rw-r--r-- | src/format/elf/program.c | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/format/elf/program.c b/src/format/elf/program.c index f14dac2..3016feb 100644 --- a/src/format/elf/program.c +++ b/src/format/elf/program.c @@ -25,12 +25,14 @@ #include "elf-int.h" +#include "helper_arm.h" /****************************************************************************** * * -* Paramètres : p_type = type associé à un en-tête de programme. * +* Paramètres : format = description de l'exécutable à consulter. * +* p_type = type associé à un en-tête de programme. * * * * Description : Fournit la description humaine d'un type de segment ELF. * * * @@ -40,7 +42,7 @@ * * ******************************************************************************/ -const char *get_elf_program_type_desc(uint32_t p_type) +const char *get_elf_program_type_desc(const GElfFormat *format, uint32_t p_type) { const char *result; /* Description à renvoyer */ @@ -68,10 +70,36 @@ const char *get_elf_program_type_desc(uint32_t p_type) MAKE_STRING_FROM_PT(PT_HIPROC); default: - result = "PT_???"; + result = NULL; break; + } + if (result == NULL) + switch (ELF_HDR(format, format->header, e_machine)) + { + case EM_ARM: + result = get_elf_program_arm_type_desc(p_type); + break; + + default: + break; + + } + + if (result == NULL) + switch(p_type) + { + MAKE_STRING_FROM_PT(PT_LOOS); + MAKE_STRING_FROM_PT(PT_HIOS); + MAKE_STRING_FROM_PT(PT_LOPROC); + MAKE_STRING_FROM_PT(PT_HIPROC); + + default: + result = "PT_???"; + break; + } + return result; } |