ELFHeader.cpp revision 9a7cbd14dcdc519f34d0bbefd650ed29bd3897c9
1#include "ELFHeader.h" 2 3char const *ELFHeaderHelperMixin::getClassStr(int clazz) { 4 switch (clazz) { 5 default: 6#define CASE_PAIR(A, B) case A: return B; 7 CASE_PAIR(ELFCLASSNONE, "Invalid class") 8 CASE_PAIR(ELFCLASS32, "32bit") 9 CASE_PAIR(ELFCLASS64, "64bit") 10#undef CASE_PAIR 11 } 12} 13 14char const *ELFHeaderHelperMixin::getEndiannessStr(int endianness) { 15 switch (endianness) { 16 default: 17#define CASE_PAIR(A, B) case A: return B; 18 CASE_PAIR(ELFDATANONE, "Invalid endianness") 19 CASE_PAIR(ELFDATA2LSB, "Little endian") 20 CASE_PAIR(ELFDATA2MSB, "Big endian") 21#undef CASE_PAIR 22 } 23} 24 25char const *ELFHeaderHelperMixin::getOSABIStr(int abi) { 26 if (abi >= 64 && abi <= 255) { 27 return "Architecture specific"; 28 } 29 30 switch (abi) { 31 default: return "Unknown OS ABI"; 32#define CASE_PAIR(A, B) case A: return B; 33 CASE_PAIR(ELFOSABI_NONE, "No extensions or not specified") 34 CASE_PAIR(ELFOSABI_HPUX, "HP-UX") 35 CASE_PAIR(ELFOSABI_NETBSD, "NetBSD") 36 CASE_PAIR(ELFOSABI_LINUX, "Linux") 37 CASE_PAIR(ELFOSABI_SOLARIS, "Solaris") 38 CASE_PAIR(ELFOSABI_AIX, "AIX") 39 CASE_PAIR(ELFOSABI_FREEBSD, "FreeBSD") 40 CASE_PAIR(ELFOSABI_TRU64, "Tru64") 41 CASE_PAIR(ELFOSABI_MODESTO, "Modesto") 42 CASE_PAIR(ELFOSABI_OPENBSD, "OpenBSD") 43#undef CASE_PAIR 44 } 45} 46 47char const *ELFHeaderHelperMixin::getObjectTypeStr(uint16_t type) { 48 switch (type) { 49 default: return "No file type"; 50 51 case ET_REL: return "Relocatable file"; 52 case ET_EXEC: return "Executable file"; 53 case ET_DYN: return "Shared object file"; 54 case ET_CORE: return "Core file"; 55 56 case ET_LOOS: case ET_HIOS: 57 return "Operating system-specific"; 58 59 case ET_LOPROC: case ET_HIPROC: 60 return "Processor-specific"; 61 } 62} 63 64char const *ELFHeaderHelperMixin::getMachineStr(uint16_t machine) { 65 switch (machine) { 66 default: return "No machine or unknown"; 67 case EM_386: return "Intel 80386 (X86)"; 68 case EM_X86_64: return "AMD x86-64 architecture"; 69 case EM_ARM: return "Advanced RISC Machine (ARM)"; 70 } 71} 72 73char const *ELFHeaderHelperMixin::getVersionStr(uint32_t version) { 74 switch (version) { 75 default: return "Invalid version"; 76 case EV_CURRENT: return "Current version"; 77 } 78} 79