Lines Matching full:elf
1 //===- ELFObjectFile.cpp - ELF object file implementation -----------------===//
14 #include "llvm/BinaryFormat/ELF.h"
17 #include "llvm/Object/ELF.h"
41 {"None", "NOTYPE", ELF::STT_NOTYPE},
42 {"Object", "OBJECT", ELF::STT_OBJECT},
43 {"Function", "FUNC", ELF::STT_FUNC},
44 {"Section", "SECTION", ELF::STT_SECTION},
45 {"File", "FILE", ELF::STT_FILE},
46 {"Common", "COMMON", ELF::STT_COMMON},
47 {"TLS", "TLS", ELF::STT_TLS},
51 {"GNU_IFunc", "IFUNC", ELF::STT_GNU_IFUNC},
82 if (Ident.first == ELF::ELFCLASS32) {
83 if (Ident.second == ELF::ELFDATA2LSB)
85 else if (Ident.second == ELF::ELFDATA2MSB)
88 return createError("Invalid ELF data");
89 } else if (Ident.first == ELF::ELFCLASS64) {
90 if (Ident.second == ELF::ELFDATA2LSB)
92 else if (Ident.second == ELF::ELFDATA2MSB)
95 return createError("Invalid ELF data");
97 return createError("Invalid ELF class");
104 switch (PlatformFlags & ELF::EF_MIPS_ARCH) {
105 case ELF::EF_MIPS_ARCH_1:
107 case ELF::EF_MIPS_ARCH_2:
110 case ELF::EF_MIPS_ARCH_3:
113 case ELF::EF_MIPS_ARCH_4:
116 case ELF::EF_MIPS_ARCH_5:
119 case ELF::EF_MIPS_ARCH_32:
122 case ELF::EF_MIPS_ARCH_64:
125 case ELF::EF_MIPS_ARCH_32R2:
128 case ELF::EF_MIPS_ARCH_64R2:
131 case ELF::EF_MIPS_ARCH_32R6:
134 case ELF::EF_MIPS_ARCH_64R6:
141 switch (PlatformFlags & ELF::EF_MIPS_MACH) {
142 case ELF::EF_MIPS_MACH_NONE:
145 case ELF::EF_MIPS_MACH_OCTEON:
152 if (PlatformFlags & ELF::EF_MIPS_ARCH_ASE_M16)
154 if (PlatformFlags & ELF::EF_MIPS_MICROMIPS)
371 if (PlatformFlags & ELF::EF_RISCV_RVC) {
404 switch (getPlatformFlags() & ELF::EF_LOONGARCH_ABI_MODIFIER_MASK) {
405 case ELF::EF_LOONGARCH_ABI_SOFT_FLOAT:
407 case ELF::EF_LOONGARCH_ABI_DOUBLE_FLOAT:
411 case ELF::EF_LOONGARCH_ABI_SINGLE_FLOAT:
421 case ELF::EM_MIPS:
423 case ELF::EM_ARM:
425 case ELF::EM_RISCV:
427 case ELF::EM_LOONGARCH:
429 case ELF::EM_HEXAGON:
438 case ELF::EM_AMDGPU:
440 case ELF::EM_CUDA:
442 case ELF::EM_PPC:
443 case ELF::EM_PPC64:
445 case ELF::EM_BPF:
453 assert(getEMachine() == ELF::EM_AMDGPU);
454 unsigned CPU = getPlatformFlags() & ELF::EF_AMDGPU_MACH;
458 case ELF::EF_AMDGPU_MACH_R600_R600:
460 case ELF::EF_AMDGPU_MACH_R600_R630:
462 case ELF::EF_AMDGPU_MACH_R600_RS880:
464 case ELF::EF_AMDGPU_MACH_R600_RV670:
468 case ELF::EF_AMDGPU_MACH_R600_RV710:
470 case ELF::EF_AMDGPU_MACH_R600_RV730:
472 case ELF::EF_AMDGPU_MACH_R600_RV770:
476 case ELF::EF_AMDGPU_MACH_R600_CEDAR:
478 case ELF::EF_AMDGPU_MACH_R600_CYPRESS:
480 case ELF::EF_AMDGPU_MACH_R600_JUNIPER:
482 case ELF::EF_AMDGPU_MACH_R600_REDWOOD:
484 case ELF::EF_AMDGPU_MACH_R600_SUMO:
488 case ELF::EF_AMDGPU_MACH_R600_BARTS:
490 case ELF::EF_AMDGPU_MACH_R600_CAICOS:
492 case ELF::EF_AMDGPU_MACH_R600_CAYMAN:
494 case ELF::EF_AMDGPU_MACH_R600_TURKS:
498 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX600:
500 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX601:
502 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX602:
506 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX700:
508 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX701:
510 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX702:
512 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX703:
514 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX704:
516 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX705:
520 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX801:
522 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX802:
524 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX803:
526 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX805:
528 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX810:
532 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX900:
534 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX902:
536 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX904:
538 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX906:
540 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX908:
542 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX909:
544 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90A:
546 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90C:
548 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX940:
550 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX941:
552 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX942:
554 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX950:
558 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1010:
560 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1011:
562 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1012:
564 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1013:
566 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1030:
568 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1031:
570 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1032:
572 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1033:
574 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1034:
576 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1035:
578 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1036:
582 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1100:
584 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1101:
586 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1102:
588 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1103:
590 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1150:
592 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1151:
594 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1152:
596 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1153:
600 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1200:
602 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1201:
606 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC:
608 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC:
610 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC:
612 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC:
614 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC:
616 case ELF::EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC:
624 assert(getEMachine() == ELF::EM_CUDA);
625 unsigned SM = getPlatformFlags() & ELF::EF_CUDA_SM;
629 case ELF::EF_CUDA_SM20:
631 case ELF::EF_CUDA_SM21:
635 case ELF::EF_CUDA_SM30:
637 case ELF::EF_CUDA_SM32:
639 case ELF::EF_CUDA_SM35:
641 case ELF::EF_CUDA_SM37:
645 case ELF::EF_CUDA_SM50:
647 case ELF::EF_CUDA_SM52:
649 case ELF::EF_CUDA_SM53:
653 case ELF::EF_CUDA_SM60:
655 case ELF::EF_CUDA_SM61:
657 case ELF::EF_CUDA_SM62:
661 case ELF::EF_CUDA_SM70:
663 case ELF::EF_CUDA_SM72:
667 case ELF::EF_CUDA_SM75:
671 case ELF::EF_CUDA_SM80:
673 case ELF::EF_CUDA_SM86:
675 case ELF::EF_CUDA_SM87:
679 case ELF::EF_CUDA_SM89:
683 case ELF::EF_CUDA_SM90:
684 return getPlatformFlags() & ELF::EF_CUDA_ACCELERATORS ? "sm_90a" : "sm_90";
794 JumpSlotReloc = ELF::R_386_JUMP_SLOT;
795 GlobDatReloc = ELF::R_386_GLOB_DAT;
798 JumpSlotReloc = ELF::R_X86_64_JUMP_SLOT;
799 GlobDatReloc = ELF::R_X86_64_GLOB_DAT;
803 JumpSlotReloc = ELF::R_AARCH64_JUMP_SLOT;
806 JumpSlotReloc = ELF::R_HEX_JMP_SLOT;
807 GlobDatReloc = ELF::R_HEX_GLOB_DAT;
854 if (GotPltEntry & (uint64_t(1) << 32) && getEMachine() == ELF::EM_386)
896 bool IsRelocatable = EF.getHeader().e_type == ELF::ET_REL;
903 if (Sec.sh_type != ELF::SHT_LLVM_BB_ADDR_MAP &&
904 Sec.sh_type != ELF::SHT_LLVM_BB_ADDR_MAP_V0)
958 if (Sec.sh_type == ELF::SHT_GNU_versym)
960 else if (Sec.sh_type == ELF::SHT_GNU_verdef)
962 else if (Sec.sh_type == ELF::SHT_GNU_verneed)