1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
|
/* From llvm/Support/ELF.h */
#ifndef LIEF_ELF_STRUCTURES_H_
#define LIEF_ELF_STRUCTURES_H_
#include <cstring>
#include "LIEF/types.hpp"
#include "LIEF/ELF/enums.hpp"
namespace LIEF {
//! @brief Namespace related to the LIEF's ELF module
namespace ELF {
@LIEF_ELF_STRUCTURES@
static const ELF_SECTION_FLAGS section_flags_array[] = {
ELF_SECTION_FLAGS::SHF_NONE, ELF_SECTION_FLAGS::SHF_WRITE, ELF_SECTION_FLAGS::SHF_ALLOC, ELF_SECTION_FLAGS::SHF_EXECINSTR,
ELF_SECTION_FLAGS::SHF_MERGE, ELF_SECTION_FLAGS::SHF_STRINGS, ELF_SECTION_FLAGS::SHF_INFO_LINK,
ELF_SECTION_FLAGS::SHF_LINK_ORDER, ELF_SECTION_FLAGS::SHF_OS_NONCONFORMING, ELF_SECTION_FLAGS::SHF_GROUP,
ELF_SECTION_FLAGS::SHF_TLS, ELF_SECTION_FLAGS::SHF_EXCLUDE, ELF_SECTION_FLAGS::XCORE_SHF_CP_SECTION,
ELF_SECTION_FLAGS::XCORE_SHF_DP_SECTION, ELF_SECTION_FLAGS::SHF_MASKOS, ELF_SECTION_FLAGS::SHF_MASKPROC,
ELF_SECTION_FLAGS::SHF_HEX_GPREL, ELF_SECTION_FLAGS::SHF_MIPS_NODUPES, ELF_SECTION_FLAGS::SHF_MIPS_NAMES,
ELF_SECTION_FLAGS::SHF_MIPS_LOCAL, ELF_SECTION_FLAGS::SHF_MIPS_NOSTRIP, ELF_SECTION_FLAGS::SHF_MIPS_GPREL,
ELF_SECTION_FLAGS::SHF_MIPS_MERGE, ELF_SECTION_FLAGS::SHF_MIPS_ADDR, ELF_SECTION_FLAGS::SHF_MIPS_STRING
};
static const ARM_EFLAGS arm_eflags_array[] = {
ARM_EFLAGS::EF_ARM_SOFT_FLOAT,
ARM_EFLAGS::EF_ARM_VFP_FLOAT,
ARM_EFLAGS::EF_ARM_EABI_UNKNOWN,
ARM_EFLAGS::EF_ARM_EABI_VER1,
ARM_EFLAGS::EF_ARM_EABI_VER2,
ARM_EFLAGS::EF_ARM_EABI_VER3,
ARM_EFLAGS::EF_ARM_EABI_VER4,
ARM_EFLAGS::EF_ARM_EABI_VER5,
};
static const PPC64_EFLAGS ppc64_eflags_array[] = {
PPC64_EFLAGS::EF_PPC64_ABI,
};
static const MIPS_EFLAGS mips_eflags_array[] = {
MIPS_EFLAGS::EF_MIPS_NOREORDER,
MIPS_EFLAGS::EF_MIPS_PIC,
MIPS_EFLAGS::EF_MIPS_CPIC,
MIPS_EFLAGS::EF_MIPS_ABI2,
MIPS_EFLAGS::EF_MIPS_32BITMODE,
MIPS_EFLAGS::EF_MIPS_FP64,
MIPS_EFLAGS::EF_MIPS_NAN2008,
MIPS_EFLAGS::EF_MIPS_ABI_O32,
MIPS_EFLAGS::EF_MIPS_ABI_O64,
MIPS_EFLAGS::EF_MIPS_ABI_EABI32,
MIPS_EFLAGS::EF_MIPS_ABI_EABI64,
MIPS_EFLAGS::EF_MIPS_MACH_3900,
MIPS_EFLAGS::EF_MIPS_MACH_4010,
MIPS_EFLAGS::EF_MIPS_MACH_4100,
MIPS_EFLAGS::EF_MIPS_MACH_4650,
MIPS_EFLAGS::EF_MIPS_MACH_4120,
MIPS_EFLAGS::EF_MIPS_MACH_4111,
MIPS_EFLAGS::EF_MIPS_MACH_SB1,
MIPS_EFLAGS::EF_MIPS_MACH_OCTEON,
MIPS_EFLAGS::EF_MIPS_MACH_XLR,
MIPS_EFLAGS::EF_MIPS_MACH_OCTEON2,
MIPS_EFLAGS::EF_MIPS_MACH_OCTEON3,
MIPS_EFLAGS::EF_MIPS_MACH_5400,
MIPS_EFLAGS::EF_MIPS_MACH_5900,
MIPS_EFLAGS::EF_MIPS_MACH_5500,
MIPS_EFLAGS::EF_MIPS_MACH_9000,
MIPS_EFLAGS::EF_MIPS_MACH_LS2E,
MIPS_EFLAGS::EF_MIPS_MACH_LS2F,
MIPS_EFLAGS::EF_MIPS_MACH_LS3A,
MIPS_EFLAGS::EF_MIPS_MICROMIPS,
MIPS_EFLAGS::EF_MIPS_ARCH_ASE_M16,
MIPS_EFLAGS::EF_MIPS_ARCH_ASE_MDMX,
MIPS_EFLAGS::EF_MIPS_ARCH_1,
MIPS_EFLAGS::EF_MIPS_ARCH_2,
MIPS_EFLAGS::EF_MIPS_ARCH_3,
MIPS_EFLAGS::EF_MIPS_ARCH_4,
MIPS_EFLAGS::EF_MIPS_ARCH_5,
MIPS_EFLAGS::EF_MIPS_ARCH_32,
MIPS_EFLAGS::EF_MIPS_ARCH_64,
MIPS_EFLAGS::EF_MIPS_ARCH_32R2,
MIPS_EFLAGS::EF_MIPS_ARCH_64R2,
MIPS_EFLAGS::EF_MIPS_ARCH_32R6,
MIPS_EFLAGS::EF_MIPS_ARCH_64R6,
};
static const HEXAGON_EFLAGS hexagon_eflags_array[] = {
HEXAGON_EFLAGS::EF_HEXAGON_MACH_V2,
HEXAGON_EFLAGS::EF_HEXAGON_MACH_V3,
HEXAGON_EFLAGS::EF_HEXAGON_MACH_V4,
HEXAGON_EFLAGS::EF_HEXAGON_MACH_V5,
HEXAGON_EFLAGS::EF_HEXAGON_ISA_MACH,
HEXAGON_EFLAGS::EF_HEXAGON_ISA_V2,
HEXAGON_EFLAGS::EF_HEXAGON_ISA_V3,
HEXAGON_EFLAGS::EF_HEXAGON_ISA_V4,
HEXAGON_EFLAGS::EF_HEXAGON_ISA_V5,
};
static const DYNAMIC_FLAGS dynamic_flags_array[] = {
DYNAMIC_FLAGS::DF_ORIGIN,
DYNAMIC_FLAGS::DF_SYMBOLIC,
DYNAMIC_FLAGS::DF_TEXTREL,
DYNAMIC_FLAGS::DF_BIND_NOW,
DYNAMIC_FLAGS::DF_STATIC_TLS,
};
static const DYNAMIC_FLAGS_1 dynamic_flags_1_array[] = {
DYNAMIC_FLAGS_1::DF_1_NOW,
DYNAMIC_FLAGS_1::DF_1_GLOBAL,
DYNAMIC_FLAGS_1::DF_1_GROUP,
DYNAMIC_FLAGS_1::DF_1_NODELETE,
DYNAMIC_FLAGS_1::DF_1_LOADFLTR,
DYNAMIC_FLAGS_1::DF_1_INITFIRST,
DYNAMIC_FLAGS_1::DF_1_NOOPEN,
DYNAMIC_FLAGS_1::DF_1_ORIGIN,
DYNAMIC_FLAGS_1::DF_1_DIRECT,
DYNAMIC_FLAGS_1::DF_1_TRANS,
DYNAMIC_FLAGS_1::DF_1_INTERPOSE,
DYNAMIC_FLAGS_1::DF_1_NODEFLIB,
DYNAMIC_FLAGS_1::DF_1_NODUMP,
DYNAMIC_FLAGS_1::DF_1_CONFALT,
DYNAMIC_FLAGS_1::DF_1_ENDFILTEE,
DYNAMIC_FLAGS_1::DF_1_DISPRELDNE,
DYNAMIC_FLAGS_1::DF_1_DISPRELPND,
DYNAMIC_FLAGS_1::DF_1_NODIRECT,
DYNAMIC_FLAGS_1::DF_1_IGNMULDEF,
DYNAMIC_FLAGS_1::DF_1_NOKSYMS,
DYNAMIC_FLAGS_1::DF_1_NOHDR,
DYNAMIC_FLAGS_1::DF_1_EDITED,
DYNAMIC_FLAGS_1::DF_1_NORELOC,
DYNAMIC_FLAGS_1::DF_1_SYMINTPOSE,
DYNAMIC_FLAGS_1::DF_1_GLOBAUDIT,
DYNAMIC_FLAGS_1::DF_1_SINGLETON,
};
class ELF32 {
public:
typedef Elf32_Addr Elf_Addr;
typedef Elf32_Off Elf_Off;
typedef Elf32_Half Elf_Half;
typedef Elf32_Word Elf_Word;
typedef Elf32_Sword Elf_Sword;
// Equivalent
typedef Elf32_Addr Elf_Xword;
typedef Elf32_Sword Elf_Sxword;
typedef uint32_t uint;
typedef Elf32_Phdr Elf_Phdr;
typedef Elf32_Ehdr Elf_Ehdr;
typedef Elf32_Shdr Elf_Shdr;
typedef Elf32_Sym Elf_Sym;
typedef Elf32_Rel Elf_Rel;
typedef Elf32_Rela Elf_Rela;
typedef Elf32_Dyn Elf_Dyn;
typedef Elf32_Verneed Elf_Verneed;
typedef Elf32_Vernaux Elf_Vernaux;
typedef Elf32_Auxv Elf_Auxv;
typedef Elf32_Verdef Elf_Verdef;
typedef Elf32_Verdaux Elf_Verdaux;
};
class ELF64 {
public:
typedef Elf64_Addr Elf_Addr;
typedef Elf64_Off Elf_Off;
typedef Elf64_Half Elf_Half;
typedef Elf64_Word Elf_Word;
typedef Elf64_Sword Elf_Sword;
typedef Elf64_Xword Elf_Xword;
typedef Elf64_Sxword Elf_Sxword;
typedef uint64_t uint;
typedef Elf64_Phdr Elf_Phdr;
typedef Elf64_Ehdr Elf_Ehdr;
typedef Elf64_Shdr Elf_Shdr;
typedef Elf64_Sym Elf_Sym;
typedef Elf64_Rel Elf_Rel;
typedef Elf64_Rela Elf_Rela;
typedef Elf64_Dyn Elf_Dyn;
typedef Elf64_Verneed Elf_Verneed;
typedef Elf64_Vernaux Elf_Vernaux;
typedef Elf64_Auxv Elf_Auxv;
typedef Elf64_Verdef Elf_Verdef;
typedef Elf64_Verdaux Elf_Verdaux;
};
} /* end namespace ELF */
} /* end namespace LIEF */
#endif
|