Lines Matching full:elf
1 //===- ELF.cpp - ELF object file implementation ---------------------------===//
9 #include "llvm/Object/ELF.h"
11 #include "llvm/BinaryFormat/ELF.h"
22 #define ELF_RELOC(name, value) STRINGIFY_ENUM_CASE(ELF, name)
27 case ELF::EM_68K:
34 case ELF::EM_X86_64:
41 case ELF::EM_386:
42 case ELF::EM_IAMCU:
49 case ELF::EM_MIPS:
56 case ELF::EM_AARCH64:
63 case ELF::EM_ARM:
70 case ELF::EM_ARC_COMPACT:
71 case ELF::EM_ARC_COMPACT2:
78 case ELF::EM_AVR:
85 case ELF::EM_HEXAGON:
92 case ELF::EM_LANAI:
99 case ELF::EM_PPC:
106 case ELF::EM_PPC64:
113 case ELF::EM_RISCV:
120 case ELF::EM_S390:
127 case ELF::EM_SPARC:
128 case ELF::EM_SPARC32PLUS:
129 case ELF::EM_SPARCV9:
136 case ELF::EM_AMDGPU:
143 case ELF::EM_BPF:
150 case ELF::EM_MSP430:
157 case ELF::EM_VE:
164 case ELF::EM_CSKY:
171 case ELF::EM_LOONGARCH:
178 case ELF::EM_XTENSA:
195 case ELF::EM_X86_64:
196 return ELF::R_X86_64_RELATIVE;
197 case ELF::EM_386:
198 case ELF::EM_IAMCU:
199 return ELF::R_386_RELATIVE;
200 case ELF::EM_MIPS:
202 case ELF::EM_AARCH64:
203 return ELF::R_AARCH64_RELATIVE;
204 case ELF::EM_ARM:
205 return ELF::R_ARM_RELATIVE;
206 case ELF::EM_ARC_COMPACT:
207 case ELF::EM_ARC_COMPACT2:
208 return ELF::R_ARC_RELATIVE;
209 case ELF::EM_AVR:
211 case ELF::EM_HEXAGON:
212 return ELF::R_HEX_RELATIVE;
213 case ELF::EM_LANAI:
215 case ELF::EM_PPC:
217 case ELF::EM_PPC64:
218 return ELF::R_PPC64_RELATIVE;
219 case ELF::EM_RISCV:
220 return ELF::R_RISCV_RELATIVE;
221 case ELF::EM_S390:
222 return ELF::R_390_RELATIVE;
223 case ELF::EM_SPARC:
224 case ELF::EM_SPARC32PLUS:
225 case ELF::EM_SPARCV9:
226 return ELF::R_SPARC_RELATIVE;
227 case ELF::EM_CSKY:
228 return ELF::R_CKCORE_RELATIVE;
229 case ELF::EM_VE:
230 return ELF::R_VE_RELATIVE;
231 case ELF::EM_AMDGPU:
233 case ELF::EM_BPF:
235 case ELF::EM_LOONGARCH:
236 return ELF::R_LARCH_RELATIVE;
245 case ELF::EM_ARM:
247 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_EXIDX);
248 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_PREEMPTMAP);
249 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_ATTRIBUTES);
250 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_DEBUGOVERLAY);
251 STRINGIFY_ENUM_CASE(ELF, SHT_ARM_OVERLAYSECTION);
254 case ELF::EM_HEXAGON:
256 STRINGIFY_ENUM_CASE(ELF, SHT_HEX_ORDERED);
257 STRINGIFY_ENUM_CASE(ELF, SHT_HEXAGON_ATTRIBUTES);
260 case ELF::EM_X86_64:
261 switch (Type) { STRINGIFY_ENUM_CASE(ELF, SHT_X86_64_UNWIND); }
263 case ELF::EM_MIPS:
264 case ELF::EM_MIPS_RS3_LE:
266 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_REGINFO);
267 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_OPTIONS);
268 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_DWARF);
269 STRINGIFY_ENUM_CASE(ELF, SHT_MIPS_ABIFLAGS);
272 case ELF::EM_MSP430:
273 switch (Type) { STRINGIFY_ENUM_CASE(ELF, SHT_MSP430_ATTRIBUTES); }
275 case ELF::EM_RISCV:
276 switch (Type) { STRINGIFY_ENUM_CASE(ELF, SHT_RISCV_ATTRIBUTES); }
278 case ELF::EM_AARCH64:
280 STRINGIFY_ENUM_CASE(ELF, SHT_AARCH64_AUTH_RELR);
281 STRINGIFY_ENUM_CASE(ELF, SHT_AARCH64_MEMTAG_GLOBALS_DYNAMIC);
282 STRINGIFY_ENUM_CASE(ELF, SHT_AARCH64_MEMTAG_GLOBALS_STATIC);
289 STRINGIFY_ENUM_CASE(ELF, SHT_NULL);
290 STRINGIFY_ENUM_CASE(ELF, SHT_PROGBITS);
291 STRINGIFY_ENUM_CASE(ELF, SHT_SYMTAB);
292 STRINGIFY_ENUM_CASE(ELF, SHT_STRTAB);
293 STRINGIFY_ENUM_CASE(ELF, SHT_RELA);
294 STRINGIFY_ENUM_CASE(ELF, SHT_HASH);
295 STRINGIFY_ENUM_CASE(ELF, SHT_DYNAMIC);
296 STRINGIFY_ENUM_CASE(ELF, SHT_NOTE);
297 STRINGIFY_ENUM_CASE(ELF, SHT_NOBITS);
298 STRINGIFY_ENUM_CASE(ELF, SHT_REL);
299 STRINGIFY_ENUM_CASE(ELF, SHT_SHLIB);
300 STRINGIFY_ENUM_CASE(ELF, SHT_DYNSYM);
301 STRINGIFY_ENUM_CASE(ELF, SHT_INIT_ARRAY);
302 STRINGIFY_ENUM_CASE(ELF, SHT_FINI_ARRAY);
303 STRINGIFY_ENUM_CASE(ELF, SHT_PREINIT_ARRAY);
304 STRINGIFY_ENUM_CASE(ELF, SHT_GROUP);
305 STRINGIFY_ENUM_CASE(ELF, SHT_SYMTAB_SHNDX);
306 STRINGIFY_ENUM_CASE(ELF, SHT_RELR);
307 STRINGIFY_ENUM_CASE(ELF, SHT_CREL);
308 STRINGIFY_ENUM_CASE(ELF, SHT_ANDROID_REL);
309 STRINGIFY_ENUM_CASE(ELF, SHT_ANDROID_RELA);
310 STRINGIFY_ENUM_CASE(ELF, SHT_ANDROID_RELR);
311 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_ODRTAB);
312 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_LINKER_OPTIONS);
313 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_CALL_GRAPH_PROFILE);
314 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_ADDRSIG);
315 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_DEPENDENT_LIBRARIES);
316 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_SYMPART);
317 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_PART_EHDR);
318 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_PART_PHDR);
319 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_BB_ADDR_MAP_V0);
320 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_BB_ADDR_MAP);
321 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_OFFLOADING);
322 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_LTO);
323 STRINGIFY_ENUM_CASE(ELF, SHT_LLVM_JT_SIZES)
324 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_ATTRIBUTES);
325 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_HASH);
326 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_verdef);
327 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_verneed);
328 STRINGIFY_ENUM_CASE(ELF, SHT_GNU_versym);
483 bool GroupedByInfo = GroupFlags & ELF::RELOCATION_GROUPED_BY_INFO_FLAG;
484 bool GroupedByOffsetDelta = GroupFlags & ELF::RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG;
485 bool GroupedByAddend = GroupFlags & ELF::RELOCATION_GROUPED_BY_ADDEND_FLAG;
486 bool GroupHasAddend = GroupFlags & ELF::RELOCATION_GROUP_HAS_ADDEND_FLAG;
528 case ELF::EM_AARCH64:
536 case ELF::EM_HEXAGON:
544 case ELF::EM_MIPS:
552 case ELF::EM_PPC:
560 case ELF::EM_PPC64:
568 case ELF::EM_RISCV:
617 if (Phdr.p_type == ELF::PT_DYNAMIC) {
621 "dynamic section offset past file size: corrupted ELF");
636 if (Sec.sh_type == ELF::SHT_DYNAMIC) {
653 if (Dyn.back().d_tag != ELF::DT_NULL)
669 if (Phdr.p_type == ELF::PT_LOAD)
740 bool IsRelocatable = EF.getHeader().e_type == ELF::ET_REL;
802 if (Sec.sh_type == ELF::SHT_LLVM_BB_ADDR_MAP) {
961 if (Sec.sh_type != ELF::SHT_RELA && Sec.sh_type != ELF::SHT_REL)