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