Go to the documentation of this file.
19 #ifndef LLVM_BINARYFORMAT_ELF_H
20 #define LLVM_BINARYFORMAT_ELF_H
44 static const char ElfMagic[] = {0x7f,
'E',
'L',
'F',
'\0'};
380 #define ELF_RELOC(name, value) name = value,
384 #include "ELFRelocs/x86_64.def"
389 #include "ELFRelocs/i386.def"
394 #include "ELFRelocs/PowerPC.def"
413 return ((1 << Val) >> 2) << 2;
418 #include "ELFRelocs/PowerPC64.def"
423 #include "ELFRelocs/AArch64.def"
450 #include "ELFRelocs/ARM.def"
471 #include "ELFRelocs/ARC.def"
503 #include "ELFRelocs/AVR.def"
579 #include "ELFRelocs/Mips.def"
660 #include "ELFRelocs/Hexagon.def"
665 #include "ELFRelocs/Lanai.def"
682 #include "ELFRelocs/RISCV.def"
693 #include "ELFRelocs/SystemZ.def"
698 #include "ELFRelocs/Sparc.def"
837 #include "ELFRelocs/AMDGPU.def"
842 #include "ELFRelocs/BPF.def"
847 #include "ELFRelocs/M68k.def"
879 #include "ELFRelocs/MSP430.def"
884 #include "ELFRelocs/VE.def"
907 #include "ELFRelocs/CSKY.def"
930 #include "ELFRelocs/LoongArch.def"
945 #include "ELFRelocs/Xtensa.def"
1456 #define DYNAMIC_TAG(name, value) DT_##name = value,
1457 #include "DynamicTags.def"
1843 #endif // LLVM_BINARYFORMAT_ELF_H
@ ELFABIVERSION_AMDGPU_HSA_V4
@ EF_AMDGPU_MACH_AMDGCN_LAST
@ EF_RISCV_FLOAT_ABI_SOFT
@ GNU_PROPERTY_X86_FEATURE_2_FXSR
@ GNU_PROPERTY_X86_ISA_1_V4
This is an optimization pass for GlobalISel generic memory operations.
void setType(unsigned char t)
void setType(Elf64_Word t)
unsigned char getType() const
@ EF_AMDGPU_MACH_R600_TURKS
@ EF_AMDGPU_MACH_R600_REDWOOD
unsigned char getDataEncoding() const
unsigned char getType() const
@ EF_LOONGARCH_ABI_MODIFIER_MASK
@ EF_RISCV_FLOAT_ABI_QUAD
@ RELOCATION_GROUPED_BY_INFO_FLAG
@ EF_AMDGPU_MACH_R600_CYPRESS
@ SHT_LLVM_DEPENDENT_LIBRARIES
@ EF_AMDGPU_FEATURE_XNACK_OFF_V4
@ GNU_PROPERTY_X86_FEATURE_2_YMM
unsigned char e_ident[EI_NIDENT]
@ EF_AMDGPU_MACH_AMDGCN_GFX90C
@ GNU_PROPERTY_AARCH64_FEATURE_1_PAC
void setBindingAndType(unsigned char b, unsigned char t)
@ EF_AMDGPU_FEATURE_SRAMECC_V4
@ ELFABIVERSION_AMDGPU_HSA_V2
@ EF_AMDGPU_FEATURE_XNACK_V4
Elf64_Word getType() const
@ EF_LOONGARCH_OBJABI_MASK
Elf64_Word getSymbol() const
@ EF_MSP430_MACH_MSP430x54
@ EF_AMDGPU_MACH_AMDGCN_GFX602
@ GNU_PROPERTY_X86_UINT32_OR_AND_LO
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27
@ EF_MSP430_MACH_MSP430x20
@ EF_AMDGPU_MACH_R600_RV730
@ EF_AMDGPU_MACH_AMDGCN_GFX1036
Merge contiguous icmps into a memcmp
@ GNU_PROPERTY_X86_FEATURE_2_USED
void setBindingAndType(unsigned char b, unsigned char t)
unsigned char getType() const
@ RELOCATION_GROUP_HAS_ADDEND_FLAG
@ EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX601
@ NT_LLVM_OPENMP_OFFLOAD_VERSION
@ EF_AMDGPU_FEATURE_SRAMECC_OFF_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX803
@ EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4
@ NT_LLVM_OPENMP_OFFLOAD_PRODUCER
@ EF_AMDGPU_MACH_AMDGCN_GFX1031
void setBinding(unsigned char b)
@ EF_MSP430_MACH_MSP430x47
@ NT_GNU_BUILD_ATTRIBUTE_FUNC
@ EF_MSP430_MACH_MSP430x11
@ EF_AMDGPU_FEATURE_SRAMECC_ANY_V4
unsigned char getType() const
@ EF_MSP430_MACH_MSP430x11x1
@ XCORE_SHF_DP_SECTION
All sections with the "d" flag are grouped together by the linker to form the data section and the dp...
@ EF_AMDGPU_MACH_AMDGCN_GFX902
@ NT_NETBSDCORE_LWPSTATUS
@ GNU_PROPERTY_NO_COPY_ON_PROTECTED
@ EF_AMDGPU_MACH_R600_RESERVED_FIRST
@ EF_MSP430_MACH_MSP430x16
@ EF_AMDGPU_MACH_AMDGCN_GFX704
@ EF_AMDGPU_MACH_AMDGCN_GFX701
@ NT_FREEBSD_PROCSTAT_GROUPS
@ EF_MSP430_MACH_MSP430x26
@ STO_AARCH64_VARIANT_PCS
@ GNU_PROPERTY_X86_FEATURE_2_XMM
@ GNU_PROPERTY_X86_ISA_1_V2
union llvm::ELF::Elf32_Dyn::@130 d_un
@ NT_FREEBSD_FCTL_PROTMAX_DISABLE
@ RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG
@ GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT
@ EF_AMDGPU_MACH_R600_SUMO
@ GNU_PROPERTY_X86_FEATURE_2_XSAVE
void setSymbolAndType(Elf32_Word s, unsigned char t)
@ EF_AMDGPU_MACH_R600_CAYMAN
@ EF_AMDGPU_MACH_AMDGCN_GFX702
@ EF_AMDGPU_MACH_R600_JUNIPER
@ EF_AMDGPU_MACH_AMDGCN_GFX90A
@ EF_MSP430_MACH_MSP430x14
@ GNU_PROPERTY_X86_FEATURE_2_X87
@ GNU_PROPERTY_X86_FEATURE_1_SHSTK
bitcast float %x to i32 %s=and i32 %t, 2147483647 %d=bitcast i32 %s to float ret float %d } declare float @fabsf(float %n) define float @bar(float %x) nounwind { %d=call float @fabsf(float %x) ret float %d } This IR(from PR6194):target datalayout="e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple="x86_64-apple-darwin10.0.0" %0=type { double, double } %struct.float3=type { float, float, float } define void @test(%0, %struct.float3 *nocapture %res) nounwind noinline ssp { entry:%tmp18=extractvalue %0 %0, 0 t
the resulting code requires compare and branches when and if the revised code is with conditional branches instead of More there is a byte word extend before each where there should be only and the condition codes are not remembered when the same two values are compared twice More LSR enhancements i8 and i32 load store addressing modes are identical int b
@ SHT_LLVM_CALL_GRAPH_PROFILE
@ EF_AMDGPU_MACH_R600_RS880
@ EF_RISCV_FLOAT_ABI_DOUBLE
@ GNU_PROPERTY_X86_ISA_1_USED
unsigned char getBinding() const
@ SHT_LLVM_LINKER_OPTIONS
@ GNU_PROPERTY_X86_FEATURE_2_XSAVEC
void setSymbol(Elf32_Word s)
@ EF_MSP430_MACH_MSP430x13
void setSymbolAndType(Elf32_Word s, unsigned char t)
@ EF_AMDGPU_MACH_AMDGCN_GFX801
@ EF_AMDGPU_FEATURE_TRAP_HANDLER_V2
@ EF_AMDGPU_MACH_R600_RV670
@ NT_AMD_HSA_CODE_OBJECT_VERSION
@ EF_AMDGPU_MACH_AMDGCN_GFX908
void setSymbol(Elf32_Word s)
@ ELFABIVERSION_AMDGPU_HSA_V5
@ EF_LOONGARCH_ABI_DOUBLE_FLOAT
@ GNU_PROPERTY_X86_ISA_1_NEEDED
@ EF_LOONGARCH_ABI_SOFT_FLOAT
@ EF_AMDGPU_FEATURE_XNACK_ON_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX705
union llvm::ELF::Elf64_Dyn::@131 d_un
@ EF_MSP430_MACH_MSP430x42
@ EF_AMDGPU_MACH_AMDGCN_GFX1011
@ RHS_NO_LIBRARY_REPLACEMENT
@ EF_AMDGPU_MACH_AMDGCN_GFX700
@ NT_FREEBSD_PROCSTAT_AUXV
@ EF_AMDGPU_MACH_AMDGCN_GFX1033
void setType(Elf64_Word t)
@ EF_AMDGPU_FEATURE_XNACK_ANY_V4
@ EF_MSP430_MACH_MSP430x32
@ EF_AMDGPU_MACH_AMDGCN_GFX1100
@ EF_AMDGPU_MACH_AMDGCN_FIRST
@ GNU_PROPERTY_X86_FEATURE_2_ZMM
@ NT_FREEBSD_PROCSTAT_FILES
@ EF_AMDGPU_FEATURE_XNACK_V3
@ GNU_PROPERTY_X86_FEATURE_1_AND
@ ELFABIVERSION_AMDGPU_HSA_V3
@ EF_AMDGPU_MACH_AMDGCN_GFX1012
@ NT_FREEBSD_FCTL_STKGAP_DISABLE
multiplies can be turned into SHL s
void setBinding(unsigned char b)
@ EF_MSP430_MACH_MSP430x24
@ EF_RISCV_FLOAT_ABI_SINGLE
@ EF_AMDGPU_MACH_AMDGCN_GFX1102
@ EF_AMDGPU_MACH_R600_LAST
@ EF_AMDGPU_MACH_AMDGCN_GFX904
@ RELOCATION_GROUPED_BY_ADDEND_FLAG
@ EF_AVR_LINKRELAX_PREPARED
@ EF_AMDGPU_MACH_AMDGCN_GFX906
@ NT_FREEBSD_PROCSTAT_VMMAP
@ EF_AMDGPU_MACH_R600_FIRST
@ NT_FREEBSD_FCTL_ASG_DISABLE
@ NT_FREEBSD_PROCSTAT_PROC
@ EF_AMDGPU_MACH_AMDGCN_GFX1032
@ NT_FREEBSD_PROCSTAT_OSREL
@ EF_MSP430_MACH_MSP430x12
unsigned char getFileClass() const
static int64_t decodePPC64LocalEntryOffset(unsigned Other)
@ EF_MSP430_MACH_MSP430x23
@ EF_AMDGPU_MACH_AMDGCN_GFX810
@ EF_MSP430_MACH_MSP430x15
@ NT_FREEBSD_PROCSTAT_RLIMIT
unsigned char getBinding() const
@ EF_MSP430_MACH_MSP430x41
@ EF_AMDGPU_MACH_AMDGCN_GFX900
@ EF_AMDGPU_FEATURE_XNACK_V2
StringRef - Represent a constant reference to a string, i.e.
@ EF_AMDGPU_MACH_AMDGCN_GFX940
@ EF_AMDGPU_MACH_R600_RV770
@ GNU_PROPERTY_X86_UINT32_OR_LO
@ SHT_AARCH64_MEMTAG_GLOBALS_DYNAMIC
@ EF_AMDGPU_MACH_AMDGCN_GFX1030
@ EF_AMDGPU_MACH_R600_BARTS
void setType(unsigned char t)
@ EF_MSP430_MACH_MSP430x46
@ SHT_LLVM_BB_ADDR_MAP_V0
@ NT_FREEBSD_PROCSTAT_PSSTRINGS
@ EF_AMDGPU_MACH_R600_CAICOS
@ GNU_PROPERTY_X86_FEATURE_2_X86
@ EF_MSP430_MACH_MSP430x22
void setType(unsigned char t)
@ EF_AMDGPU_MACH_R600_R630
@ EF_AMDGPU_MACH_AMDGCN_GFX1010
void setSymbol(Elf64_Word s)
@ GNU_PROPERTY_X86_ISA_1_BASELINE
@ EF_MSP430_MACH_MSP430x43
@ EF_AMDGPU_MACH_R600_CEDAR
@ GNU_PROPERTY_AARCH64_FEATURE_1_AND
Elf64_Word getSymbol() const
Elf32_Word getSymbol() const
@ EF_AMDGPU_FEATURE_SRAMECC_V3
@ EF_AMDGPU_MACH_AMDGCN_GFX802
void setSymbolAndType(Elf64_Word s, Elf64_Word t)
@ GNU_PROPERTY_X86_FEATURE_2_NEEDED
void setType(unsigned char t)
@ EF_AMDGPU_MACH_AMDGCN_GFX1034
unsigned char e_ident[EI_NIDENT]
Elf32_Word getSymbol() const
@ EF_AMDGPU_MACH_AMDGCN_GFX1101
@ EF_AMDGPU_MACH_AMDGCN_GFX805
StringRef convertEMachineToArchName(uint16_t EMachine)
Convert an ELF's e_machine value into an architecture name.
constexpr const char * ELF_NOTE_GNU
@ EF_AMDGPU_MACH_AMDGCN_GFX1013
@ GNU_PROPERTY_X86_FEATURE_1_IBT
@ EF_AMDGPU_FEATURE_SRAMECC_ON_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX1035
@ EF_AMDGPU_MACH_R600_R600
@ NT_FREEBSD_FCTL_WXNEEDED
@ SHT_AARCH64_MEMTAG_GLOBALS_STATIC
static const char ElfMagic[]
@ NT_FREEBSD_FCTL_ASLR_DISABLE
@ RHF_GUARANTEE_START_INIT
std::optional< std::vector< StOtherPiece > > Other
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X43
@ EF_AMDGPU_MACH_AMDGCN_GFX703
unsigned char getDataEncoding() const
unsigned char getFileClass() const
@ GNU_PROPERTY_X86_ISA_1_V3
@ EF_MSP430_MACH_MSP430x33
Elf64_Word getType() const
@ EF_AMDGPU_MACH_AMDGCN_GFX909
@ NT_FREEBSD_PROCSTAT_UMASK
void setSymbolAndType(Elf64_Word s, Elf64_Word t)
@ EF_LOONGARCH_ABI_SINGLE_FLOAT
@ NT_LLVM_OPENMP_OFFLOAD_PRODUCER_VERSION
@ NT_GNU_BUILD_ATTRIBUTE_OPEN
uint16_t convertArchNameToEMachine(StringRef Arch)
Convert an architecture name into ELF's e_machine value.
@ GNU_PROPERTY_AARCH64_FEATURE_1_BTI
@ GNU_PROPERTY_STACK_SIZE
@ EF_MSP430_MACH_MSP430x31
void setSymbol(Elf64_Word s)
@ GNU_PROPERTY_X86_FEATURE_2_MMX
@ EF_AMDGPU_MACH_AMDGCN_GFX600
@ EF_MSP430_MACH_MSP430x44
@ EF_AMDGPU_MACH_R600_RESERVED_LAST
@ XCORE_SHF_CP_SECTION
All sections with the "c" flag are grouped together by the linker to form the constant pool and the c...
@ EF_AMDGPU_MACH_R600_RV710
@ EF_AMDGPU_MACH_AMDGCN_GFX1103