1 //===- ELF.cpp - ELF object file implementation ---------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "llvm/Object/ELF.h"
11 #include "llvm/Support/ELF.h"
14 using namespace object;
16 #define STRINGIFY_ENUM_CASE(ns, name) \
20 #define ELF_RELOC(name, value) STRINGIFY_ENUM_CASE(ELF, name)
22 StringRef llvm::object::getELFRelocationTypeName(uint32_t Machine,
27 #include "llvm/Support/ELFRelocs/x86_64.def"
35 #include "llvm/Support/ELFRelocs/i386.def"
42 #include "llvm/Support/ELFRelocs/Mips.def"
49 #include "llvm/Support/ELFRelocs/AArch64.def"
56 #include "llvm/Support/ELFRelocs/ARM.def"
63 #include "llvm/Support/ELFRelocs/AVR.def"
70 #include "llvm/Support/ELFRelocs/Hexagon.def"
77 #include "llvm/Support/ELFRelocs/Lanai.def"
84 #include "llvm/Support/ELFRelocs/PowerPC.def"
91 #include "llvm/Support/ELFRelocs/PowerPC64.def"
98 #include "llvm/Support/ELFRelocs/RISCV.def"
105 #include "llvm/Support/ELFRelocs/SystemZ.def"
111 case ELF::EM_SPARC32PLUS:
112 case ELF::EM_SPARCV9:
114 #include "llvm/Support/ELFRelocs/Sparc.def"
119 case ELF::EM_WEBASSEMBLY:
121 #include "llvm/Support/ELFRelocs/WebAssembly.def"
128 #include "llvm/Support/ELFRelocs/AMDGPU.def"
134 #include "llvm/Support/ELFRelocs/BPF.def"
147 StringRef llvm::object::getELFSectionTypeName(uint32_t Machine, unsigned Type) {
151 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_EXIDX);
152 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_PREEMPTMAP);
153 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_ATTRIBUTES);
154 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_DEBUGOVERLAY);
155 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_OVERLAYSECTION);
158 case ELF::EM_HEXAGON:
159 switch (Type) { STRINGIFY_ENUM_CASE(ELF, SHT_HEX_ORDERED); }
162 switch (Type) { STRINGIFY_ENUM_CASE(ELF, SHT_X86_64_UNWIND); }
165 case ELF::EM_MIPS_RS3_LE:
167 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_REGINFO);
168 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_OPTIONS);
169 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_ABIFLAGS);
170 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_DWARF);
178 STRINGIFY_ENUM_CASE(ELF, SHT_NULL);
179 STRINGIFY_ENUM_CASE(ELF, SHT_PROGBITS);
180 STRINGIFY_ENUM_CASE(ELF, SHT_SYMTAB);
181 STRINGIFY_ENUM_CASE(ELF, SHT_STRTAB);
182 STRINGIFY_ENUM_CASE(ELF, SHT_RELA);
183 STRINGIFY_ENUM_CASE(ELF, SHT_HASH);
184 STRINGIFY_ENUM_CASE(ELF, SHT_DYNAMIC);
185 STRINGIFY_ENUM_CASE(ELF, SHT_NOTE);
186 STRINGIFY_ENUM_CASE(ELF, SHT_NOBITS);
187 STRINGIFY_ENUM_CASE(ELF, SHT_REL);
188 STRINGIFY_ENUM_CASE(ELF, SHT_SHLIB);
189 STRINGIFY_ENUM_CASE(ELF, SHT_DYNSYM);
190 STRINGIFY_ENUM_CASE(ELF, SHT_INIT_ARRAY);
191 STRINGIFY_ENUM_CASE(ELF, SHT_FINI_ARRAY);
192 STRINGIFY_ENUM_CASE(ELF, SHT_PREINIT_ARRAY);
193 STRINGIFY_ENUM_CASE(ELF, SHT_GROUP);
194 STRINGIFY_ENUM_CASE(ELF, SHT_SYMTAB_SHNDX);
195 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_ATTRIBUTES);
196 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_HASH);
197 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_verdef);
198 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_verneed);
199 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_versym);