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"
449 #include "ELFRelocs/ARM.def"
470 #include "ELFRelocs/ARC.def"
502 #include "ELFRelocs/AVR.def"
578 #include "ELFRelocs/Mips.def"
653 #include "ELFRelocs/Hexagon.def"
658 #include "ELFRelocs/Lanai.def"
675 #include "ELFRelocs/RISCV.def"
686 #include "ELFRelocs/SystemZ.def"
691 #include "ELFRelocs/Sparc.def"
830 #include "ELFRelocs/AMDGPU.def"
835 #include "ELFRelocs/BPF.def"
840 #include "ELFRelocs/M68k.def"
872 #include "ELFRelocs/MSP430.def"
877 #include "ELFRelocs/VE.def"
900 #include "ELFRelocs/CSKY.def"
905 #include "ELFRelocs/LoongArch.def"
1402 #define DYNAMIC_TAG(name, value) DT_##name = value,
1403 #include "DynamicTags.def"
1787 #endif // LLVM_BINARYFORMAT_ELF_H
@ EF_AMDGPU_MACH_R600_SUMO
@ GNU_PROPERTY_X86_FEATURE_1_AND
@ EF_MSP430_MACH_MSP430x11x1
@ NT_FREEBSD_FCTL_ASLR_DISABLE
@ EF_MSP430_MACH_MSP430x11
@ GNU_PROPERTY_AARCH64_FEATURE_1_BTI
union llvm::ELF::Elf64_Dyn::@132 d_un
@ NT_FREEBSD_PROCSTAT_PROC
@ NT_FREEBSD_PROCSTAT_RLIMIT
@ EF_AMDGPU_MACH_AMDGCN_GFX1031
This is an optimization pass for GlobalISel generic memory operations.
@ EF_MSP430_MACH_MSP430x46
void setType(unsigned char t)
@ EF_MSP430_MACH_MSP430x16
void setType(Elf64_Word t)
@ EF_AMDGPU_MACH_AMDGCN_GFX1030
unsigned char getType() const
unsigned char getDataEncoding() const
unsigned char getType() const
@ EF_AMDGPU_MACH_AMDGCN_GFX1036
@ EF_AMDGPU_MACH_AMDGCN_GFX703
@ EF_AMDGPU_FEATURE_XNACK_ANY_V4
@ GNU_PROPERTY_X86_FEATURE_1_SHSTK
@ GNU_PROPERTY_AARCH64_FEATURE_1_PAC
@ EF_AMDGPU_MACH_R600_RV730
@ EF_MSP430_MACH_MSP430x41
@ EF_AVR_LINKRELAX_PREPARED
@ NT_FREEBSD_PROCSTAT_OSREL
@ EF_AMDGPU_MACH_AMDGCN_GFX601
@ EF_AMDGPU_MACH_AMDGCN_GFX1011
unsigned char e_ident[EI_NIDENT]
@ EF_AMDGPU_MACH_AMDGCN_GFX90C
@ GNU_PROPERTY_X86_FEATURE_2_MMX
@ XCORE_SHF_DP_SECTION
All sections with the "d" flag are grouped together by the linker to form the data section and the dp...
void setBindingAndType(unsigned char b, unsigned char t)
@ NT_FREEBSD_FCTL_ASG_DISABLE
@ GNU_PROPERTY_X86_FEATURE_2_X86
@ XCORE_SHF_CP_SECTION
All sections with the "c" flag are grouped together by the linker to form the constant pool and the c...
Elf64_Word getType() const
@ EF_AMDGPU_MACH_AMDGCN_GFX1013
@ NT_GNU_BUILD_ATTRIBUTE_FUNC
Elf64_Word getSymbol() const
@ EF_AMDGPU_FEATURE_SRAMECC_OFF_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX1103
@ EF_AMDGPU_MACH_AMDGCN_GFX1100
@ EF_AMDGPU_MACH_AMDGCN_GFX805
Merge contiguous icmps into a memcmp
void setBindingAndType(unsigned char b, unsigned char t)
@ EF_AMDGPU_MACH_AMDGCN_GFX602
@ EF_MSP430_MACH_MSP430x14
@ EF_AMDGPU_MACH_R600_RESERVED_LAST
unsigned char getType() const
@ NT_FREEBSD_PROCSTAT_GROUPS
@ EF_MSP430_MACH_MSP430x24
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X43
@ EF_AMDGPU_MACH_AMDGCN_GFX802
@ RHS_NO_LIBRARY_REPLACEMENT
void setBinding(unsigned char b)
@ RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG
@ EF_AMDGPU_MACH_R600_RS880
@ EF_MSP430_MACH_MSP430x54
@ NT_GNU_BUILD_ATTRIBUTE_OPEN
@ EF_AMDGPU_MACH_R600_RV710
@ SHT_LLVM_DEPENDENT_LIBRARIES
unsigned char getType() const
@ GNU_PROPERTY_X86_ISA_1_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX908
@ EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4
@ EF_MSP430_MACH_MSP430x23
@ RELOCATION_GROUPED_BY_ADDEND_FLAG
@ EF_MSP430_MACH_MSP430x20
@ GNU_PROPERTY_AARCH64_FEATURE_1_AND
@ GNU_PROPERTY_STACK_SIZE
@ EF_MSP430_MACH_MSP430x42
@ EF_AMDGPU_MACH_AMDGCN_GFX900
@ EF_RISCV_FLOAT_ABI_SOFT
@ STO_AARCH64_VARIANT_PCS
@ EF_MSP430_MACH_MSP430x44
@ NT_LLVM_OPENMP_OFFLOAD_VERSION
@ SHT_LLVM_CALL_GRAPH_PROFILE
void setSymbolAndType(Elf32_Word s, unsigned char t)
@ EF_AMDGPU_MACH_AMDGCN_LAST
@ EF_AMDGPU_MACH_AMDGCN_GFX940
@ NT_FREEBSD_FCTL_STKGAP_DISABLE
@ EF_AMDGPU_MACH_AMDGCN_GFX810
@ NT_FREEBSD_PROCSTAT_FILES
@ EF_AMDGPU_MACH_R600_REDWOOD
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
@ EF_AMDGPU_MACH_AMDGCN_GFX1010
@ ELFABIVERSION_AMDGPU_HSA_V5
unsigned char getBinding() const
@ EF_AMDGPU_MACH_AMDGCN_GFX704
@ EF_AMDGPU_MACH_AMDGCN_GFX1012
@ EF_AMDGPU_MACH_R600_LAST
@ EF_AMDGPU_MACH_R600_JUNIPER
@ EF_AMDGPU_MACH_AMDGCN_GFX1034
void setSymbol(Elf32_Word s)
void setSymbolAndType(Elf32_Word s, unsigned char t)
@ EF_AMDGPU_MACH_AMDGCN_GFX909
@ EF_AMDGPU_MACH_AMDGCN_GFX705
@ EF_MSP430_MACH_MSP430x33
void setSymbol(Elf32_Word s)
@ EF_AMDGPU_FEATURE_XNACK_OFF_V4
@ EF_AMDGPU_FEATURE_SRAMECC_ON_V4
void setType(Elf64_Word t)
@ EF_RISCV_FLOAT_ABI_DOUBLE
@ GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT
@ NT_FREEBSD_PROCSTAT_PSSTRINGS
@ EF_AMDGPU_MACH_R600_R630
@ GNU_PROPERTY_X86_FEATURE_2_ZMM
@ NT_AMD_HSA_CODE_OBJECT_VERSION
@ EF_MSP430_MACH_MSP430x43
@ GNU_PROPERTY_X86_ISA_1_USED
@ GNU_PROPERTY_X86_FEATURE_2_XSAVE
@ EF_MSP430_MACH_MSP430x15
@ EF_MSP430_MACH_MSP430x26
multiplies can be turned into SHL s
void setBinding(unsigned char b)
@ EF_AMDGPU_MACH_R600_CYPRESS
@ EF_MSP430_MACH_MSP430x47
@ EF_AMDGPU_MACH_R600_CAYMAN
@ EF_AMDGPU_MACH_AMDGCN_GFX1032
@ EF_AMDGPU_MACH_AMDGCN_GFX702
@ ELFABIVERSION_AMDGPU_HSA_V2
@ GNU_PROPERTY_X86_UINT32_OR_LO
unsigned char getFileClass() const
static int64_t decodePPC64LocalEntryOffset(unsigned Other)
@ EF_RISCV_FLOAT_ABI_QUAD
unsigned char getBinding() const
union llvm::ELF::Elf32_Dyn::@131 d_un
@ EF_AMDGPU_MACH_R600_TURKS
@ GNU_PROPERTY_X86_ISA_1_V3
@ RELOCATION_GROUPED_BY_INFO_FLAG
StringRef - Represent a constant reference to a string, i.e.
@ GNU_PROPERTY_X86_FEATURE_2_XSAVEC
@ GNU_PROPERTY_X86_FEATURE_2_YMM
@ GNU_PROPERTY_X86_FEATURE_2_X87
@ NT_LLVM_OPENMP_OFFLOAD_PRODUCER
void setType(unsigned char t)
@ EF_AMDGPU_MACH_R600_RV770
@ EF_AMDGPU_FEATURE_XNACK_ON_V4
@ GNU_PROPERTY_X86_UINT32_OR_AND_LO
@ EF_AMDGPU_FEATURE_XNACK_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX1035
@ NT_LLVM_OPENMP_OFFLOAD_PRODUCER_VERSION
void setType(unsigned char t)
@ GNU_PROPERTY_X86_FEATURE_2_FXSR
@ ELFABIVERSION_AMDGPU_HSA_V4
void setSymbol(Elf64_Word s)
@ EF_MSP430_MACH_MSP430x31
@ EF_AMDGPU_MACH_AMDGCN_GFX801
Elf64_Word getSymbol() const
Elf32_Word getSymbol() const
@ GNU_PROPERTY_X86_ISA_1_NEEDED
@ GNU_PROPERTY_X86_FEATURE_1_IBT
@ EF_AMDGPU_MACH_R600_CAICOS
@ EF_AMDGPU_FEATURE_SRAMECC_V4
void setSymbolAndType(Elf64_Word s, Elf64_Word t)
@ RHF_GUARANTEE_START_INIT
void setType(unsigned char t)
@ EF_MSP430_MACH_MSP430x32
unsigned char e_ident[EI_NIDENT]
Elf32_Word getSymbol() const
StringRef convertEMachineToArchName(uint16_t EMachine)
Convert an ELF's e_machine value into an architecture name.
constexpr const char * ELF_NOTE_GNU
@ GNU_PROPERTY_X86_ISA_1_V2
@ EF_AMDGPU_MACH_R600_RV670
@ EF_AMDGPU_FEATURE_TRAP_HANDLER_V2
@ EF_AMDGPU_FEATURE_SRAMECC_ANY_V4
@ EF_AMDGPU_MACH_AMDGCN_GFX803
@ SHT_LLVM_LINKER_OPTIONS
@ EF_AMDGPU_MACH_R600_FIRST
@ GNU_PROPERTY_NO_COPY_ON_PROTECTED
@ EF_AMDGPU_MACH_AMDGCN_FIRST
@ EF_AMDGPU_MACH_AMDGCN_GFX906
@ EF_AMDGPU_FEATURE_SRAMECC_V3
@ EF_AMDGPU_MACH_AMDGCN_GFX701
@ EF_AMDGPU_MACH_AMDGCN_GFX600
static const char ElfMagic[]
@ EF_AMDGPU_MACH_AMDGCN_GFX1102
@ EF_AMDGPU_MACH_AMDGCN_GFX700
unsigned char getDataEncoding() const
@ EF_MSP430_MACH_MSP430x13
@ NT_FREEBSD_PROCSTAT_AUXV
unsigned char getFileClass() const
@ EF_AMDGPU_MACH_R600_BARTS
Elf64_Word getType() const
@ NT_NETBSDCORE_LWPSTATUS
@ EF_AMDGPU_MACH_AMDGCN_GFX1033
@ EF_AMDGPU_MACH_AMDGCN_GFX1101
void setSymbolAndType(Elf64_Word s, Elf64_Word t)
@ EF_AMDGPU_MACH_AMDGCN_GFX90A
@ EF_AMDGPU_FEATURE_XNACK_V2
@ EF_AMDGPU_MACH_R600_RESERVED_FIRST
@ RELOCATION_GROUP_HAS_ADDEND_FLAG
@ EF_AMDGPU_MACH_AMDGCN_GFX902
uint16_t convertArchNameToEMachine(StringRef Arch)
Convert an architecture name into ELF's e_machine value.
@ GNU_PROPERTY_X86_FEATURE_2_NEEDED
@ NT_FREEBSD_FCTL_WXNEEDED
@ GNU_PROPERTY_X86_ISA_1_BASELINE
@ NT_FREEBSD_PROCSTAT_VMMAP
@ EF_AMDGPU_MACH_R600_CEDAR
@ EF_MSP430_MACH_MSP430x12
@ EF_AMDGPU_MACH_AMDGCN_GFX904
@ EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4
void setSymbol(Elf64_Word s)
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27
@ EF_AMDGPU_MACH_R600_R600
@ NT_FREEBSD_FCTL_PROTMAX_DISABLE
@ ELFABIVERSION_AMDGPU_HSA_V3
@ NT_FREEBSD_PROCSTAT_UMASK
@ EF_AMDGPU_FEATURE_XNACK_V3
@ EF_MSP430_MACH_MSP430x22
Optional< std::vector< StOtherPiece > > Other
@ GNU_PROPERTY_X86_FEATURE_2_XMM
@ EF_RISCV_FLOAT_ABI_SINGLE
@ GNU_PROPERTY_X86_FEATURE_2_USED