LLVM 24.0.0git
ELF.h
Go to the documentation of this file.
1//===- llvm/BinaryFormat/ELF.h - ELF constants and structures ---*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This header contains common, non-processor-specific data structures and
10// constants for the ELF file format.
11//
12// The details of the ELF32 bits in this file are largely based on the Tool
13// Interface Standard (TIS) Executable and Linking Format (ELF) Specification
14// Version 1.2, May 1995. The ELF64 stuff is based on ELF-64 Object File Format
15// Version 1.5, Draft 2, May 1998 as well as OpenBSD header files.
16//
17//===----------------------------------------------------------------------===//
18
19#ifndef LLVM_BINARYFORMAT_ELF_H
20#define LLVM_BINARYFORMAT_ELF_H
21
22#include "llvm/ADT/StringRef.h"
25#include <cstdint>
26#include <cstring>
27#include <type_traits>
28
29namespace llvm {
30namespace ELF {
31
32using Elf32_Addr = uint32_t; // Program address
33using Elf32_Off = uint32_t; // File offset
36using Elf32_Sword = int32_t;
37
42using Elf64_Sword = int32_t;
44using Elf64_Sxword = int64_t;
45
46// Object file magic string.
47static const char ElfMagic[] = {0x7f, 'E', 'L', 'F', '\0'};
48
49// e_ident size and indices.
50enum {
51 EI_MAG0 = 0, // File identification index.
52 EI_MAG1 = 1, // File identification index.
53 EI_MAG2 = 2, // File identification index.
54 EI_MAG3 = 3, // File identification index.
55 EI_CLASS = 4, // File class.
56 EI_DATA = 5, // Data encoding.
57 EI_VERSION = 6, // File version.
58 EI_OSABI = 7, // OS/ABI identification.
59 EI_ABIVERSION = 8, // ABI version.
60 EI_PAD = 9, // Start of padding bytes.
61 EI_NIDENT = 16 // Number of bytes in e_ident.
62};
63
64struct Elf32_Ehdr {
65 unsigned char e_ident[EI_NIDENT]; // ELF Identification bytes
66 Elf32_Half e_type; // Type of file (see ET_* below)
67 Elf32_Half e_machine; // Required architecture for this file (see EM_*)
68 Elf32_Word e_version; // Must be equal to 1
69 Elf32_Addr e_entry; // Address to jump to in order to start program
70 Elf32_Off e_phoff; // Program header table's file offset, in bytes
71 Elf32_Off e_shoff; // Section header table's file offset, in bytes
72 Elf32_Word e_flags; // Processor-specific flags
73 Elf32_Half e_ehsize; // Size of ELF header, in bytes
74 Elf32_Half e_phentsize; // Size of an entry in the program header table
75 Elf32_Half e_phnum; // Number of entries in the program header table
76 Elf32_Half e_shentsize; // Size of an entry in the section header table
77 Elf32_Half e_shnum; // Number of entries in the section header table
78 Elf32_Half e_shstrndx; // Sect hdr table index of sect name string table
79
80 bool checkMagic() const {
81 return (memcmp(e_ident, ElfMagic, strlen(ElfMagic))) == 0;
82 }
83
84 unsigned char getFileClass() const { return e_ident[EI_CLASS]; }
85 unsigned char getDataEncoding() const { return e_ident[EI_DATA]; }
86};
87
88// 64-bit ELF header. Fields are the same as for ELF32, but with different
89// types (see above).
113
114// File types.
115// See current registered ELF types at:
116// http://www.sco.com/developers/gabi/latest/ch4.eheader.html
117enum {
118 ET_NONE = 0, // No file type
119 ET_REL = 1, // Relocatable file
120 ET_EXEC = 2, // Executable file
121 ET_DYN = 3, // Shared object file
122 ET_CORE = 4, // Core file
123 ET_LOOS = 0xfe00, // Beginning of operating system-specific codes
124 ET_HIOS = 0xfeff, // Operating system-specific
125 ET_LOPROC = 0xff00, // Beginning of processor-specific codes
126 ET_HIPROC = 0xffff // Processor-specific
127};
128
129// Versioning
130enum { EV_NONE = 0, EV_CURRENT = 1 };
131
132// Machine architectures.
133enum {
134#define ELF_MACHINE(em, value, arch, gnuname) em = value,
135#include "llvm/BinaryFormat/ELF.def"
136};
137
138// Object file classes.
139enum {
141 ELFCLASS32 = 1, // 32-bit object file
142 ELFCLASS64 = 2 // 64-bit object file
143};
144
145// Object file byte orderings.
146enum {
147 ELFDATANONE = 0, // Invalid data encoding.
148 ELFDATA2LSB = 1, // Little-endian object file
149 ELFDATA2MSB = 2 // Big-endian object file
150};
151
152// OS ABI identification.
153enum {
154 ELFOSABI_NONE = 0, // UNIX System V ABI
155 ELFOSABI_HPUX = 1, // HP-UX operating system
156 ELFOSABI_NETBSD = 2, // NetBSD
157 ELFOSABI_GNU = 3, // GNU/Linux
158 ELFOSABI_LINUX = 3, // Historical alias for ELFOSABI_GNU.
159 ELFOSABI_HURD = 4, // GNU/Hurd
160 ELFOSABI_SOLARIS = 6, // Solaris
161 ELFOSABI_AIX = 7, // AIX
162 ELFOSABI_IRIX = 8, // IRIX
163 ELFOSABI_FREEBSD = 9, // FreeBSD
164 ELFOSABI_TRU64 = 10, // TRU64 UNIX
165 ELFOSABI_MODESTO = 11, // Novell Modesto
166 ELFOSABI_OPENBSD = 12, // OpenBSD
167 ELFOSABI_OPENVMS = 13, // OpenVMS
168 ELFOSABI_NSK = 14, // Hewlett-Packard Non-Stop Kernel
169 ELFOSABI_AROS = 15, // AROS
170 ELFOSABI_FENIXOS = 16, // FenixOS
171 ELFOSABI_CLOUDABI = 17, // Nuxi CloudABI
172 ELFOSABI_CUDA = 51, // NVIDIA CUDA architecture.
173 ELFOSABI_CUDA_V2 = 41, // NVIDIA CUDA architecture.
174 ELFOSABI_FIRST_ARCH = 64, // First architecture-specific OS ABI
175 ELFOSABI_AMDGPU_HSA = 64, // AMD HSA runtime
176 ELFOSABI_AMDGPU_PAL = 65, // AMD PAL runtime
177 ELFOSABI_AMDGPU_MESA3D = 66, // AMD GCN GPUs (GFX6+) for MESA runtime
178 ELFOSABI_ARM = 97, // ARM
179 ELFOSABI_ARM_FDPIC = 65, // ARM FDPIC
180 ELFOSABI_C6000_ELFABI = 64, // Bare-metal TMS320C6000
181 ELFOSABI_C6000_LINUX = 65, // Linux TMS320C6000
182 ELFOSABI_STANDALONE = 255, // Standalone (embedded) application
183 ELFOSABI_LAST_ARCH = 255 // Last Architecture-specific OS ABI
184};
185
186// AMDGPU OS ABI Version identification.
187enum {
188 // ELFABIVERSION_AMDGPU_HSA_V1 does not exist because OS ABI identification
189 // was never defined for V1.
195};
196
197// CUDA OS ABI Version identification.
198enum {
201};
202
203#define ELF_RELOC(name, value) name = value,
204
205// X86_64 relocations.
206enum {
207#include "ELFRelocs/x86_64.def"
208};
209
210// i386 relocations.
211enum {
212#include "ELFRelocs/i386.def"
213};
214
215// ELF Relocation types for PPC32
216enum {
217#include "ELFRelocs/PowerPC.def"
218};
219
220// Specific e_flags for PPC64
221enum {
222 // e_flags bits specifying ABI:
223 // 1 for original ABI using function descriptors,
224 // 2 for revised ABI without function descriptors,
225 // 0 for unspecified or not using any features affected by the differences.
227};
228
229// Special values for the st_other field in the symbol table entry for PPC64.
230enum {
233};
234static inline int64_t decodePPC64LocalEntryOffset(unsigned Other) {
235 unsigned Val = (Other & STO_PPC64_LOCAL_MASK) >> STO_PPC64_LOCAL_BIT;
236 return ((1 << Val) >> 2) << 2;
237}
238
239// ELF Relocation types for PPC64
240enum {
241#include "ELFRelocs/PowerPC64.def"
242};
243
244// ELF Relocation types for AArch64
245enum {
246#include "ELFRelocs/AArch64.def"
247};
248
249// Special values for the st_other field in the symbol table entry for AArch64.
250enum {
251 // Symbol may follow different calling convention than base PCS.
253};
254
255// ARM Specific e_flags
256enum : unsigned {
257 EF_ARM_SOFT_FLOAT = 0x00000200U, // Legacy pre EABI_VER5
258 EF_ARM_ABI_FLOAT_SOFT = 0x00000200U, // EABI_VER5
259 EF_ARM_VFP_FLOAT = 0x00000400U, // Legacy pre EABI_VER5
260 EF_ARM_ABI_FLOAT_HARD = 0x00000400U, // EABI_VER5
261 EF_ARM_BE8 = 0x00800000U,
262 EF_ARM_EABI_UNKNOWN = 0x00000000U,
263 EF_ARM_EABI_VER1 = 0x01000000U,
264 EF_ARM_EABI_VER2 = 0x02000000U,
265 EF_ARM_EABI_VER3 = 0x03000000U,
266 EF_ARM_EABI_VER4 = 0x04000000U,
267 EF_ARM_EABI_VER5 = 0x05000000U,
268 EF_ARM_EABIMASK = 0xFF000000U
269};
270
271// ELF Relocation types for ARM
272enum {
273#include "ELFRelocs/ARM.def"
274};
275
276// ARC Specific e_flags
277enum : unsigned {
278 EF_ARC_MACH_MSK = 0x000000ff,
279 EF_ARC_OSABI_MSK = 0x00000f00,
280 E_ARC_MACH_ARC600 = 0x00000002,
281 E_ARC_MACH_ARC601 = 0x00000004,
282 E_ARC_MACH_ARC700 = 0x00000003,
283 EF_ARC_CPU_ARCV2EM = 0x00000005,
284 EF_ARC_CPU_ARCV2HS = 0x00000006,
285 E_ARC_OSABI_ORIG = 0x00000000,
286 E_ARC_OSABI_V2 = 0x00000200,
287 E_ARC_OSABI_V3 = 0x00000300,
288 E_ARC_OSABI_V4 = 0x00000400,
289 EF_ARC_PIC = 0x00000100
290};
291
292// ELF Relocation types for ARC
293enum {
294#include "ELFRelocs/ARC.def"
295};
296
297// AVR specific e_flags
298enum : unsigned {
317
318 EF_AVR_ARCH_MASK = 0x7f, // EF_AVR_ARCH_xxx selection mask
319
320 EF_AVR_LINKRELAX_PREPARED = 0x80, // The file is prepared for linker
321 // relaxation to be applied
322};
323
324// ELF Relocation types for AVR
325enum {
326#include "ELFRelocs/AVR.def"
327};
328
329// Mips Specific e_flags
330enum : unsigned {
331 EF_MIPS_NOREORDER = 0x00000001, // Don't reorder instructions
332 EF_MIPS_PIC = 0x00000002, // Position independent code
333 EF_MIPS_CPIC = 0x00000004, // Call object with Position independent code
334 EF_MIPS_ABI2 = 0x00000020, // File uses N32 ABI
335 EF_MIPS_32BITMODE = 0x00000100, // Code compiled for a 64-bit machine
336 // in 32-bit mode
337 EF_MIPS_FP64 = 0x00000200, // Code compiled for a 32-bit machine
338 // but uses 64-bit FP registers
339 EF_MIPS_NAN2008 = 0x00000400, // Uses IEE 754-2008 NaN encoding
340
341 // ABI flags
342 EF_MIPS_ABI_O32 = 0x00001000, // This file follows the first MIPS 32 bit ABI
343 EF_MIPS_ABI_O64 = 0x00002000, // O32 ABI extended for 64-bit architecture.
344 EF_MIPS_ABI_EABI32 = 0x00003000, // EABI in 32 bit mode.
345 EF_MIPS_ABI_EABI64 = 0x00004000, // EABI in 64 bit mode.
346 EF_MIPS_ABI = 0x0000f000, // Mask for selecting EF_MIPS_ABI_ variant.
347
348 // MIPS machine variant
349 EF_MIPS_MACH_NONE = 0x00000000, // A standard MIPS implementation.
350 EF_MIPS_MACH_3900 = 0x00810000, // Toshiba R3900
351 EF_MIPS_MACH_4010 = 0x00820000, // LSI R4010
352 EF_MIPS_MACH_4100 = 0x00830000, // NEC VR4100
353 EF_MIPS_MACH_4650 = 0x00850000, // MIPS R4650
354 EF_MIPS_MACH_4120 = 0x00870000, // NEC VR4120
355 EF_MIPS_MACH_4111 = 0x00880000, // NEC VR4111/VR4181
356 EF_MIPS_MACH_SB1 = 0x008a0000, // Broadcom SB-1
357 EF_MIPS_MACH_OCTEON = 0x008b0000, // Cavium Networks Octeon
358 EF_MIPS_MACH_XLR = 0x008c0000, // RMI Xlr
359 EF_MIPS_MACH_OCTEON2 = 0x008d0000, // Cavium Networks Octeon2
360 EF_MIPS_MACH_OCTEON3 = 0x008e0000, // Cavium Networks Octeon3
361 EF_MIPS_MACH_5400 = 0x00910000, // NEC VR5400
362 EF_MIPS_MACH_5900 = 0x00920000, // MIPS R5900
363 EF_MIPS_MACH_5500 = 0x00980000, // NEC VR5500
364 EF_MIPS_MACH_9000 = 0x00990000, // Unknown
365 EF_MIPS_MACH_LS2E = 0x00a00000, // ST Microelectronics Loongson 2E
366 EF_MIPS_MACH_LS2F = 0x00a10000, // ST Microelectronics Loongson 2F
367 EF_MIPS_MACH_LS3A = 0x00a20000, // Loongson 3A
368 EF_MIPS_MACH = 0x00ff0000, // EF_MIPS_MACH_xxx selection mask
369
370 // ARCH_ASE
371 EF_MIPS_MICROMIPS = 0x02000000, // microMIPS
372 EF_MIPS_ARCH_ASE_M16 = 0x04000000, // Has Mips-16 ISA extensions
373 EF_MIPS_ARCH_ASE_MDMX = 0x08000000, // Has MDMX multimedia extensions
374 EF_MIPS_ARCH_ASE = 0x0f000000, // Mask for EF_MIPS_ARCH_ASE_xxx flags
375
376 // ARCH
377 EF_MIPS_ARCH_1 = 0x00000000, // MIPS1 instruction set
378 EF_MIPS_ARCH_2 = 0x10000000, // MIPS2 instruction set
379 EF_MIPS_ARCH_3 = 0x20000000, // MIPS3 instruction set
380 EF_MIPS_ARCH_4 = 0x30000000, // MIPS4 instruction set
381 EF_MIPS_ARCH_5 = 0x40000000, // MIPS5 instruction set
382 EF_MIPS_ARCH_32 = 0x50000000, // MIPS32 instruction set per linux not elf.h
383 EF_MIPS_ARCH_64 = 0x60000000, // MIPS64 instruction set per linux not elf.h
384 EF_MIPS_ARCH_32R2 = 0x70000000, // mips32r2, mips32r3, mips32r5
385 EF_MIPS_ARCH_64R2 = 0x80000000, // mips64r2, mips64r3, mips64r5
386 EF_MIPS_ARCH_32R6 = 0x90000000, // mips32r6
387 EF_MIPS_ARCH_64R6 = 0xa0000000, // mips64r6
388 EF_MIPS_ARCH = 0xf0000000 // Mask for applying EF_MIPS_ARCH_ variant
389};
390
391// MIPS-specific section indexes
392enum {
393 SHN_MIPS_ACOMMON = 0xff00, // Common symbols which are defined and allocated
394 SHN_MIPS_TEXT = 0xff01, // Not ABI compliant
395 SHN_MIPS_DATA = 0xff02, // Not ABI compliant
396 SHN_MIPS_SCOMMON = 0xff03, // Common symbols for global data area
397 SHN_MIPS_SUNDEFINED = 0xff04 // Undefined symbols for global data area
398};
399
400// ELF Relocation types for Mips
401enum {
402#include "ELFRelocs/Mips.def"
403};
404
405// Special values for the st_other field in the symbol table entry for MIPS.
406enum {
407 STO_MIPS_OPTIONAL = 0x04, // Symbol whose definition is optional
408 STO_MIPS_PLT = 0x08, // PLT entry related dynamic table record
409 STO_MIPS_PIC = 0x20, // PIC func in an object mixes PIC/non-PIC
410 STO_MIPS_MICROMIPS = 0x80, // MIPS Specific ISA for MicroMips
411 STO_MIPS_MIPS16 = 0xf0 // MIPS Specific ISA for Mips16
412};
413
414// .MIPS.options section descriptor kinds
415enum {
416 ODK_NULL = 0, // Undefined
417 ODK_REGINFO = 1, // Register usage information
418 ODK_EXCEPTIONS = 2, // Exception processing options
419 ODK_PAD = 3, // Section padding options
420 ODK_HWPATCH = 4, // Hardware patches applied
421 ODK_FILL = 5, // Linker fill value
422 ODK_TAGS = 6, // Space for tool identification
423 ODK_HWAND = 7, // Hardware AND patches applied
424 ODK_HWOR = 8, // Hardware OR patches applied
425 ODK_GP_GROUP = 9, // GP group to use for text/data sections
426 ODK_IDENT = 10, // ID information
427 ODK_PAGESIZE = 11 // Page size information
428};
429
430// Hexagon-specific e_flags
431enum {
432 // Hexagon ISA version, bits[11:0]
433 EF_HEXAGON_ISA_MACH = 0x00000000, // Same as specified in bits[11:0]
434 // of e_flags
435 EF_HEXAGON_ISA_V2 = 0x00000010, // Hexagon V2 ISA
436 EF_HEXAGON_ISA_V3 = 0x00000020, // Hexagon V3 ISA
437 EF_HEXAGON_ISA_V4 = 0x00000030, // Hexagon V4 ISA
438 EF_HEXAGON_ISA_V5 = 0x00000040, // Hexagon V5 ISA
439 EF_HEXAGON_ISA_V55 = 0x00000050, // Hexagon V55 ISA
440 EF_HEXAGON_ISA_V60 = 0x00000060, // Hexagon V60 ISA
441 EF_HEXAGON_ISA_V61 = 0x00000061, // Hexagon V61 ISA
442 EF_HEXAGON_ISA_V62 = 0x00000062, // Hexagon V62 ISA
443 EF_HEXAGON_ISA_V65 = 0x00000065, // Hexagon V65 ISA
444 EF_HEXAGON_ISA_V66 = 0x00000066, // Hexagon V66 ISA
445 EF_HEXAGON_ISA_V67 = 0x00000067, // Hexagon V67 ISA
446 EF_HEXAGON_ISA_V68 = 0x00000068, // Hexagon V68 ISA
447 EF_HEXAGON_ISA_V69 = 0x00000069, // Hexagon V69 ISA
448 EF_HEXAGON_ISA_V71 = 0x00000071, // Hexagon V71 ISA
449 EF_HEXAGON_ISA_V73 = 0x00000073, // Hexagon V73 ISA
450 EF_HEXAGON_ISA_V75 = 0x00000075, // Hexagon V75 ISA
451 EF_HEXAGON_ISA_V77 = 0x00000077, // Hexagon V77 ISA
452 EF_HEXAGON_ISA_V79 = 0x00000079, // Hexagon V79 ISA
453 EF_HEXAGON_ISA_V81 = 0x00000081, // Hexagon V81 ISA
454 EF_HEXAGON_ISA_V83 = 0x00000083, // Hexagon V83 ISA
455 EF_HEXAGON_ISA_V85 = 0x00000085, // Hexagon V85 ISA
456 EF_HEXAGON_ISA_V87 = 0x00000087, // Hexagon V87 ISA
457 EF_HEXAGON_ISA_V89 = 0x00000089, // Hexagon V89 ISA
458 EF_HEXAGON_ISA_V91 = 0x00000091, // Hexagon V91 ISA
459 EF_HEXAGON_ISA_V93 = 0x00000093, // Hexagon V93 ISA
460 EF_HEXAGON_ISA = 0x000003ff, // Hexagon V.. ISA
461
462 // Tiny core flag, bit[15]
463 EF_HEXAGON_TINY_CORE = 0x00008000, // Hexagon Tiny Core
464
465 // Hexagon processor version, bits[15:0]
466 EF_HEXAGON_MACH_V2 = 0x00000001, // Hexagon V2
467 EF_HEXAGON_MACH_V3 = 0x00000002, // Hexagon V3
468 EF_HEXAGON_MACH_V4 = 0x00000003, // Hexagon V4
469 EF_HEXAGON_MACH_V5 = 0x00000004, // Hexagon V5
470 EF_HEXAGON_MACH_V55 = 0x00000005, // Hexagon V55
495
496 EF_HEXAGON_MACH = 0x0000ffff, // Hexagon V..
497};
498
499// Hexagon-specific section indexes for common small data
500enum {
501 SHN_HEXAGON_SCOMMON = 0xff00, // Other access sizes
502 SHN_HEXAGON_SCOMMON_1 = 0xff01, // Byte-sized access
503 SHN_HEXAGON_SCOMMON_2 = 0xff02, // Half-word-sized access
504 SHN_HEXAGON_SCOMMON_4 = 0xff03, // Word-sized access
505 SHN_HEXAGON_SCOMMON_8 = 0xff04 // Double-word-size access
506};
507
508// ELF Relocation types for Hexagon
509enum {
510#include "ELFRelocs/Hexagon.def"
511};
512
513// ELF Relocation type for Lanai.
514enum {
515#include "ELFRelocs/Lanai.def"
516};
517
518// RISCV Specific e_flags
519enum : unsigned {
520 EF_RISCV_RVC = 0x0001,
526 EF_RISCV_RVE = 0x0008,
527 EF_RISCV_TSO = 0x0010,
528};
529
530// ELF Relocation types for RISC-V
531enum {
532#include "ELFRelocs/RISCV.def"
533#define ELF_RISCV_NONSTANDARD_RELOC(_vendor, name, value) name = value,
534#include "ELFRelocs/RISCV_nonstandard.def"
535#undef ELF_RISCV_NONSTANDARD_RELOC
536};
537
538enum {
539 // Symbol may follow different calling convention than the standard calling
540 // convention.
542};
543
544// ELF Relocation types for S390/zSeries
545enum {
546#include "ELFRelocs/SystemZ.def"
547};
548
549// SPARC Specific e_flags
550enum : unsigned {
551 // ELF extension mask.
552 // All values are available for EM_SPARC32PLUS & EM_SPARCV9 objects, except
553 // EF_SPARC_32PLUS which is a EM_SPARC32PLUS-only flag.
554 //
555 // Note that those features are not mutually exclusive (one can set more than
556 // one flag in this group).
558 EF_SPARC_32PLUS = 0x000100,
560 EF_SPARC_HAL_R1 = 0x000400,
562
563 // Memory model selection mask for EM_SPARCV9 objects.
568};
569
570// ELF Relocation type for Sparc.
571enum {
572#include "ELFRelocs/Sparc.def"
573};
574
575// AMDGPU specific e_flags.
576#define AMDGPU_MACH_LIST(X) \
577 X(0x01, EF_AMDGPU_MACH_R600_R600, "r600") \
578 X(0x02, EF_AMDGPU_MACH_R600_R630, "r630") \
579 X(0x03, EF_AMDGPU_MACH_R600_RS880, "rs880") \
580 X(0x04, EF_AMDGPU_MACH_R600_RV670, "rv670") \
581 X(0x05, EF_AMDGPU_MACH_R600_RV710, "rv710") \
582 X(0x06, EF_AMDGPU_MACH_R600_RV730, "rv730") \
583 X(0x07, EF_AMDGPU_MACH_R600_RV770, "rv770") \
584 X(0x08, EF_AMDGPU_MACH_R600_CEDAR, "cedar") \
585 X(0x09, EF_AMDGPU_MACH_R600_CYPRESS, "cypress") \
586 X(0x0a, EF_AMDGPU_MACH_R600_JUNIPER, "juniper") \
587 X(0x0b, EF_AMDGPU_MACH_R600_REDWOOD, "redwood") \
588 X(0x0c, EF_AMDGPU_MACH_R600_SUMO, "sumo") \
589 X(0x0d, EF_AMDGPU_MACH_R600_BARTS, "barts") \
590 X(0x0e, EF_AMDGPU_MACH_R600_CAICOS, "caicos") \
591 X(0x0f, EF_AMDGPU_MACH_R600_CAYMAN, "cayman") \
592 X(0x10, EF_AMDGPU_MACH_R600_TURKS, "turks") \
593 X(0x20, EF_AMDGPU_MACH_AMDGCN_GFX600, "gfx600") \
594 X(0x21, EF_AMDGPU_MACH_AMDGCN_GFX601, "gfx601") \
595 X(0x22, EF_AMDGPU_MACH_AMDGCN_GFX700, "gfx700") \
596 X(0x23, EF_AMDGPU_MACH_AMDGCN_GFX701, "gfx701") \
597 X(0x24, EF_AMDGPU_MACH_AMDGCN_GFX702, "gfx702") \
598 X(0x25, EF_AMDGPU_MACH_AMDGCN_GFX703, "gfx703") \
599 X(0x26, EF_AMDGPU_MACH_AMDGCN_GFX704, "gfx704") \
600 X(0x28, EF_AMDGPU_MACH_AMDGCN_GFX801, "gfx801") \
601 X(0x29, EF_AMDGPU_MACH_AMDGCN_GFX802, "gfx802") \
602 X(0x2a, EF_AMDGPU_MACH_AMDGCN_GFX803, "gfx803") \
603 X(0x2b, EF_AMDGPU_MACH_AMDGCN_GFX810, "gfx810") \
604 X(0x2c, EF_AMDGPU_MACH_AMDGCN_GFX900, "gfx900") \
605 X(0x2d, EF_AMDGPU_MACH_AMDGCN_GFX902, "gfx902") \
606 X(0x2e, EF_AMDGPU_MACH_AMDGCN_GFX904, "gfx904") \
607 X(0x2f, EF_AMDGPU_MACH_AMDGCN_GFX906, "gfx906") \
608 X(0x30, EF_AMDGPU_MACH_AMDGCN_GFX908, "gfx908") \
609 X(0x31, EF_AMDGPU_MACH_AMDGCN_GFX909, "gfx909") \
610 X(0x32, EF_AMDGPU_MACH_AMDGCN_GFX90C, "gfx90c") \
611 X(0x33, EF_AMDGPU_MACH_AMDGCN_GFX1010, "gfx1010") \
612 X(0x34, EF_AMDGPU_MACH_AMDGCN_GFX1011, "gfx1011") \
613 X(0x35, EF_AMDGPU_MACH_AMDGCN_GFX1012, "gfx1012") \
614 X(0x36, EF_AMDGPU_MACH_AMDGCN_GFX1030, "gfx1030") \
615 X(0x37, EF_AMDGPU_MACH_AMDGCN_GFX1031, "gfx1031") \
616 X(0x38, EF_AMDGPU_MACH_AMDGCN_GFX1032, "gfx1032") \
617 X(0x39, EF_AMDGPU_MACH_AMDGCN_GFX1033, "gfx1033") \
618 X(0x3a, EF_AMDGPU_MACH_AMDGCN_GFX602, "gfx602") \
619 X(0x3b, EF_AMDGPU_MACH_AMDGCN_GFX705, "gfx705") \
620 X(0x3c, EF_AMDGPU_MACH_AMDGCN_GFX805, "gfx805") \
621 X(0x3d, EF_AMDGPU_MACH_AMDGCN_GFX1035, "gfx1035") \
622 X(0x3e, EF_AMDGPU_MACH_AMDGCN_GFX1034, "gfx1034") \
623 X(0x3f, EF_AMDGPU_MACH_AMDGCN_GFX90A, "gfx90a") \
624 X(0x41, EF_AMDGPU_MACH_AMDGCN_GFX1100, "gfx1100") \
625 X(0x42, EF_AMDGPU_MACH_AMDGCN_GFX1013, "gfx1013") \
626 X(0x43, EF_AMDGPU_MACH_AMDGCN_GFX1150, "gfx1150") \
627 X(0x44, EF_AMDGPU_MACH_AMDGCN_GFX1103, "gfx1103") \
628 X(0x45, EF_AMDGPU_MACH_AMDGCN_GFX1036, "gfx1036") \
629 X(0x46, EF_AMDGPU_MACH_AMDGCN_GFX1101, "gfx1101") \
630 X(0x47, EF_AMDGPU_MACH_AMDGCN_GFX1102, "gfx1102") \
631 X(0x48, EF_AMDGPU_MACH_AMDGCN_GFX1200, "gfx1200") \
632 X(0x49, EF_AMDGPU_MACH_AMDGCN_GFX1250, "gfx1250") \
633 X(0x4a, EF_AMDGPU_MACH_AMDGCN_GFX1151, "gfx1151") \
634 X(0x4c, EF_AMDGPU_MACH_AMDGCN_GFX942, "gfx942") \
635 X(0x4e, EF_AMDGPU_MACH_AMDGCN_GFX1201, "gfx1201") \
636 X(0x4f, EF_AMDGPU_MACH_AMDGCN_GFX950, "gfx950") \
637 X(0x50, EF_AMDGPU_MACH_AMDGCN_GFX1310, "gfx1310") \
638 X(0x51, EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC, "gfx9-generic") \
639 X(0x52, EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC, "gfx10-1-generic") \
640 X(0x53, EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC, "gfx10-3-generic") \
641 X(0x54, EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC, "gfx11-generic") \
642 X(0x55, EF_AMDGPU_MACH_AMDGCN_GFX1152, "gfx1152") \
643 X(0x57, EF_AMDGPU_MACH_AMDGCN_GFX1154, "gfx1154") \
644 X(0x58, EF_AMDGPU_MACH_AMDGCN_GFX1153, "gfx1153") \
645 X(0x59, EF_AMDGPU_MACH_AMDGCN_GFX12_GENERIC, "gfx12-generic") \
646 X(0x5a, EF_AMDGPU_MACH_AMDGCN_GFX1251, "gfx1251") \
647 X(0x5b, EF_AMDGPU_MACH_AMDGCN_GFX12_5_GENERIC, "gfx12-5-generic") \
648 X(0x5c, EF_AMDGPU_MACH_AMDGCN_GFX1172, "gfx1172") \
649 X(0x5d, EF_AMDGPU_MACH_AMDGCN_GFX1170, "gfx1170") \
650 X(0x5e, EF_AMDGPU_MACH_AMDGCN_GFX1171, "gfx1171") \
651 X(0x5f, EF_AMDGPU_MACH_AMDGCN_GFX9_4_GENERIC, "gfx9-4-generic") \
652 X(0x62, EF_AMDGPU_MACH_AMDGCN_GFX11_7_GENERIC, "gfx11-7-generic") \
653 X(0x63, EF_AMDGPU_MACH_AMDGCN_GFX13_GENERIC, "gfx13-generic") \
654 X(0xeb, EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT, "gfx1250-strict")
655
656enum : unsigned {
657 // clang-format off
658
659 // Processor selection mask for EF_AMDGPU_MACH_* values.
662 // Not specified processor.
664
665#define X(NUM, ENUM, NAME) ENUM = NUM,
667#undef X
668
669 // clang-format on
670
673 EF_AMDGPU_MACH_R600_FIRST = EF_AMDGPU_MACH_R600_R600,
674 EF_AMDGPU_MACH_R600_LAST = EF_AMDGPU_MACH_R600_TURKS,
675
684
685 // First/last AMDGCN-based processors.
686 EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600,
687 EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX1250_STRICT,
688
689 // Indicates if the "xnack" target feature is enabled for all code contained
690 // in the object.
691 //
692 // Only valid for ELFOSABI_AMDGPU_HSA and ELFABIVERSION_AMDGPU_HSA_V2.
694 // Indicates if the trap handler is enabled for all code contained
695 // in the object.
696 //
697 // Only valid for ELFOSABI_AMDGPU_HSA and ELFABIVERSION_AMDGPU_HSA_V2.
699
700 // Indicates if the "xnack" target feature is enabled for all code contained
701 // in the object.
702 //
703 // Only valid for ELFOSABI_AMDGPU_HSA and ELFABIVERSION_AMDGPU_HSA_V3.
705 // Indicates if the "sramecc" target feature is enabled for all code
706 // contained in the object.
707 //
708 // Only valid for ELFOSABI_AMDGPU_HSA and ELFABIVERSION_AMDGPU_HSA_V3.
710
711 // XNACK selection mask for EF_AMDGPU_FEATURE_XNACK_* values.
712 //
713 // Only valid for ELFOSABI_AMDGPU_HSA and ELFABIVERSION_AMDGPU_HSA_V4.
715 // XNACK mode selection is not supported.
717 // XNACK is any/default/unspecified.
719 // XNACK is off.
721 // XNACK is on.
723
724 // SRAMECC selection mask for EF_AMDGPU_FEATURE_SRAMECC_* values.
725 //
726 // Only valid for ELFOSABI_AMDGPU_HSA and ELFABIVERSION_AMDGPU_HSA_V4.
728 // SRAMECC mode selection is not supported.
730 // SRAMECC is any/default/unspecified.
732 // SRAMECC is off.
734 // SRAMECC is on.
736
737 // Generic target versioning. This is contained in the list byte of EFLAGS.
742};
743
744// ELF Relocation types for AMDGPU
745enum {
746#include "ELFRelocs/AMDGPU.def"
747};
748
749// NVPTX specific e_flags.
750enum : unsigned {
751 // Processor selection mask for EF_CUDA_SM* values prior to blackwell.
753
754 // Processor selection mask for EF_CUDA_SM* values following blackwell.
756
757 // Processor selection mask for EF_CUDA_SM* values following blackwell.
759
760 // SM based processor values.
789
790 // Unified texture binding is enabled.
792 // Independent texture binding is enabled.
794 // The target is using 64-bit addressing.
796 // Set when using the sm_90a processor.
798 // Undocumented software feature.
800
801 // Virtual processor selection mask for EF_CUDA_VIRTUAL_SM* values.
803
804 // Set when using an accelerator variant like sm_100a in the new ABI.
806};
807
808// ELF Relocation types for BPF
809enum {
810#include "ELFRelocs/BPF.def"
811};
812
813// ELF Relocation types for M68k
814enum {
815#include "ELFRelocs/M68k.def"
816};
817
818// MSP430 specific e_flags
819enum : unsigned {
843};
844
845// ELF Relocation types for MSP430
846enum {
847#include "ELFRelocs/MSP430.def"
848};
849
850// ELF Relocation type for VE.
851enum {
852#include "ELFRelocs/VE.def"
853};
854
855// CSKY Specific e_flags
856enum : unsigned {
866 EF_CSKY_DSP = 0x4000,
867 EF_CSKY_ABIV2 = 0x20000000,
868 EF_CSKY_EFV1 = 0x1000000,
869 EF_CSKY_EFV2 = 0x2000000,
870 EF_CSKY_EFV3 = 0x3000000
871};
872
873// ELF Relocation types for CSKY
874enum {
875#include "ELFRelocs/CSKY.def"
876};
877
878// LoongArch Specific e_flags
879enum : unsigned {
880 // Definitions from LoongArch ELF psABI v2.01.
881 // Reference: https://github.com/loongson/LoongArch-Documentation
882 // (commit hash 296de4def055c871809068e0816325a4ac04eb12)
883
884 // Base ABI Modifiers
889
890 // Object file ABI versions
894};
895
896// ELF Relocation types for LoongArch
897enum {
898#include "ELFRelocs/LoongArch.def"
899};
900
901// Xtensa specific e_flags
902enum : unsigned {
903 // Four-bit Xtensa machine type mask.
904 EF_XTENSA_MACH = 0x0000000f,
905 // Various CPU types.
906 EF_XTENSA_MACH_NONE = 0x00000000, // A base Xtensa implementation
907 EF_XTENSA_XT_INSN = 0x00000100,
908 EF_XTENSA_XT_LIT = 0x00000200,
909};
910
911// ELF Relocation types for Xtensa
912enum {
913#include "ELFRelocs/Xtensa.def"
914};
915
916#undef ELF_RELOC
917
918// Section header.
920 Elf32_Word sh_name; // Section name (index into string table)
921 Elf32_Word sh_type; // Section type (SHT_*)
922 Elf32_Word sh_flags; // Section flags (SHF_*)
923 Elf32_Addr sh_addr; // Address where section is to be loaded
924 Elf32_Off sh_offset; // File offset of section data, in bytes
925 Elf32_Word sh_size; // Size of section, in bytes
926 Elf32_Word sh_link; // Section type-specific header table index link
927 Elf32_Word sh_info; // Section type-specific extra information
928 Elf32_Word sh_addralign; // Section address alignment
929 Elf32_Word sh_entsize; // Size of records contained within the section
930};
931
932// Section header for ELF64 - same fields as ELF32, different types.
945
946enum { PN_XNUM = 0xffff };
947
948// Special section indices.
949enum {
950 SHN_UNDEF = 0, // Undefined, missing, irrelevant, or meaningless
951 SHN_LORESERVE = 0xff00, // Lowest reserved index
952 SHN_LOPROC = 0xff00, // Lowest processor-specific index
953 SHN_HIPROC = 0xff1f, // Highest processor-specific index
954 SHN_LOOS = 0xff20, // Lowest operating system-specific index
955 SHN_HIOS = 0xff3f, // Highest operating system-specific index
956 SHN_ABS = 0xfff1, // Symbol has absolute value; does not need relocation
957 SHN_COMMON = 0xfff2, // FORTRAN COMMON or C external global variables
958 SHN_XINDEX = 0xffff, // Mark that the index is >= SHN_LORESERVE
959 SHN_HIRESERVE = 0xffff // Highest reserved index
960};
961
962// Section types.
963enum : unsigned {
964 SHT_NULL = 0, // No associated section (inactive entry).
965 SHT_PROGBITS = 1, // Program-defined contents.
966 SHT_SYMTAB = 2, // Symbol table.
967 SHT_STRTAB = 3, // String table.
968 SHT_RELA = 4, // Relocation entries; explicit addends.
969 SHT_HASH = 5, // Symbol hash table.
970 SHT_DYNAMIC = 6, // Information for dynamic linking.
971 SHT_NOTE = 7, // Information about the file.
972 SHT_NOBITS = 8, // Data occupies no space in the file.
973 SHT_REL = 9, // Relocation entries; no explicit addends.
974 SHT_SHLIB = 10, // Reserved.
975 SHT_DYNSYM = 11, // Symbol table.
976 SHT_INIT_ARRAY = 14, // Pointers to initialization functions.
977 SHT_FINI_ARRAY = 15, // Pointers to termination functions.
978 SHT_PREINIT_ARRAY = 16, // Pointers to pre-init functions.
979 SHT_GROUP = 17, // Section group.
980 SHT_SYMTAB_SHNDX = 18, // Indices for SHN_XINDEX entries.
981 // Experimental support for SHT_RELR sections. For details, see proposal
982 // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
983 SHT_RELR = 19, // Relocation entries; only offsets.
984 // TODO: Experimental CREL relocations. LLVM will change the value and
985 // break compatibility in the future.
986 SHT_CREL = 0x40000014,
987 SHT_LOOS = 0x60000000, // Lowest operating system-specific type.
988 // Android packed relocation section types.
989 // https://android.googlesource.com/platform/bionic/+/6f12bfece5dcc01325e0abba56a46b1bcf991c69/tools/relocation_packer/src/elf_file.cc#37
990 SHT_ANDROID_REL = 0x60000001,
991 SHT_ANDROID_RELA = 0x60000002,
992 SHT_LLVM_ODRTAB = 0x6fff4c00, // LLVM ODR table.
993 SHT_LLVM_LINKER_OPTIONS = 0x6fff4c01, // LLVM Linker Options.
994 SHT_LLVM_ADDRSIG = 0x6fff4c03, // List of address-significant symbols
995 // for safe ICF.
997 0x6fff4c04, // LLVM Dependent Library Specifiers.
998 SHT_LLVM_SYMPART = 0x6fff4c05, // Symbol partition specification.
999 SHT_LLVM_PART_EHDR = 0x6fff4c06, // ELF header for loadable partition.
1000 SHT_LLVM_PART_PHDR = 0x6fff4c07, // Phdrs for loadable partition.
1001 // SHT_LLVM_BB_ADDR_MAP_V0 = 0x6fff4c08, // Do not use.
1002 SHT_LLVM_CALL_GRAPH_PROFILE = 0x6fff4c09, // LLVM Call Graph Profile.
1003 SHT_LLVM_BB_ADDR_MAP = 0x6fff4c0a, // LLVM Basic Block Address Map.
1004 SHT_LLVM_OFFLOADING = 0x6fff4c0b, // LLVM device offloading data.
1005 SHT_LLVM_LTO = 0x6fff4c0c, // .llvm.lto for fat LTO.
1006 SHT_LLVM_JT_SIZES = 0x6fff4c0d, // LLVM jump tables sizes.
1007 SHT_LLVM_CFI_JUMP_TABLE = 0x6fff4c0e, // LLVM CFI jump table.
1008 SHT_LLVM_CALL_GRAPH = 0x6fff4c0f, // LLVM Call Graph Section.
1009 SHT_LLVM_DYNDBG_ELF = 0x6fff4c10, // LLVM Dynamic Debugging ELF.
1010 // Android's experimental support for SHT_RELR sections.
1011 // https://android.googlesource.com/platform/bionic/+/b7feec74547f84559a1467aca02708ff61346d2a/libc/include/elf.h#512
1012 SHT_ANDROID_RELR = 0x6fffff00, // Relocation entries; only offsets.
1013 SHT_GNU_SFRAME = 0x6ffffff4, // GNU SFrame stack trace format.
1014 SHT_GNU_ATTRIBUTES = 0x6ffffff5, // Object attributes.
1015 SHT_GNU_HASH = 0x6ffffff6, // GNU-style hash table.
1016 SHT_GNU_verdef = 0x6ffffffd, // GNU version definitions.
1017 SHT_GNU_verneed = 0x6ffffffe, // GNU version references.
1018 SHT_GNU_versym = 0x6fffffff, // GNU symbol versions table.
1019 SHT_HIOS = 0x6fffffff, // Highest operating system-specific type.
1020 SHT_LOPROC = 0x70000000, // Lowest processor arch-specific type.
1021 // Fixme: All this is duplicated in MCSectionELF. Why??
1022 // Exception Index table
1023 SHT_ARM_EXIDX = 0x70000001U,
1024 // BPABI DLL dynamic linking pre-emption map
1025 SHT_ARM_PREEMPTMAP = 0x70000002U,
1026 // Object file compatibility attributes
1027 SHT_ARM_ATTRIBUTES = 0x70000003U,
1030 // Support for AArch64 build attributes
1032 // Special aarch64-specific section for MTE support, as described in:
1033 // https://github.com/ARM-software/abi-aa/blob/main/pauthabielf64/pauthabielf64.rst#section-types
1035 // Special aarch64-specific sections for MTE support, as described in:
1036 // https://github.com/ARM-software/abi-aa/blob/main/memtagabielf64/memtagabielf64.rst#7section-types
1039 SHT_HEX_ORDERED = 0x70000000, // Link editor is to sort the entries in
1040 // this section based on their sizes
1041 SHT_X86_64_UNWIND = 0x70000001, // Unwind information
1042
1043 SHT_MIPS_REGINFO = 0x70000006, // Register usage information
1044 SHT_MIPS_OPTIONS = 0x7000000d, // General options
1045 SHT_MIPS_DWARF = 0x7000001e, // DWARF debugging section.
1046 SHT_MIPS_ABIFLAGS = 0x7000002a, // ABI information.
1047
1049
1051
1052 SHT_CSKY_ATTRIBUTES = 0x70000001U,
1053
1055
1056 SHT_HIPROC = 0x7fffffff, // Highest processor arch-specific type.
1057 SHT_LOUSER = 0x80000000, // Lowest type reserved for applications.
1058 SHT_HIUSER = 0xffffffff // Highest type reserved for applications.
1059};
1060
1061// Section flags.
1062enum : unsigned {
1063 // Section data should be writable during execution.
1065
1066 // Section occupies memory during program execution.
1068
1069 // Section contains executable machine instructions.
1071
1072 // The data in this section may be merged.
1074
1075 // The data in this section is null-terminated strings.
1077
1078 // A field in this section holds a section header table index.
1080
1081 // Adds special ordering requirements for link editors.
1083
1084 // This section requires special OS-specific processing to avoid incorrect
1085 // behavior.
1087
1088 // This section is a member of a section group.
1089 SHF_GROUP = 0x200U,
1090
1091 // This section holds Thread-Local Storage.
1092 SHF_TLS = 0x400U,
1093
1094 // Identifies a section containing compressed data.
1096
1097 // This section should not be garbage collected by the linker.
1098 SHF_GNU_RETAIN = 0x200000,
1099
1100 // This section is excluded from the final executable or shared library.
1101 SHF_EXCLUDE = 0x80000000U,
1102
1103 // Start of target-specific flags.
1104
1105 SHF_MASKOS = 0x0ff00000,
1106
1107 // Solaris equivalent of SHF_GNU_RETAIN.
1109
1110 // Bits indicating processor-specific flags.
1111 SHF_MASKPROC = 0xf0000000,
1112
1113 /// All sections with the "d" flag are grouped together by the linker to form
1114 /// the data section and the dp register is set to the start of the section by
1115 /// the boot code.
1117
1118 /// All sections with the "c" flag are grouped together by the linker to form
1119 /// the constant pool and the cp register is set to the start of the constant
1120 /// pool by the boot code.
1122
1123 // If an object file section does not have this flag set, then it may not hold
1124 // more than 2GB and can be freely referred to in objects using smaller code
1125 // models. Otherwise, only objects using larger code models can refer to them.
1126 // For example, a medium code model object can refer to data in a section that
1127 // sets this flag besides being able to refer to data in a section that does
1128 // not set it; likewise, a small code model object can refer only to code in a
1129 // section that does not set this flag.
1130 SHF_X86_64_LARGE = 0x10000000,
1131
1132 // All sections with the GPREL flag are grouped into a global data area
1133 // for faster accesses
1134 SHF_HEX_GPREL = 0x10000000,
1135
1136 // Section contains text/data which may be replicated in other sections.
1137 // Linker must retain only one copy.
1138 SHF_MIPS_NODUPES = 0x01000000,
1139
1140 // Linker must generate implicit hidden weak names.
1141 SHF_MIPS_NAMES = 0x02000000,
1142
1143 // Section data local to process.
1144 SHF_MIPS_LOCAL = 0x04000000,
1145
1146 // Do not strip this section.
1147 SHF_MIPS_NOSTRIP = 0x08000000,
1148
1149 // Section must be part of global data area.
1150 SHF_MIPS_GPREL = 0x10000000,
1151
1152 // This section should be merged.
1153 SHF_MIPS_MERGE = 0x20000000,
1154
1155 // Address size to be inferred from section entry size.
1156 SHF_MIPS_ADDR = 0x40000000,
1157
1158 // Section data is string data by default.
1159 SHF_MIPS_STRING = 0x80000000,
1160
1161 // Section contains only program instructions and no program data.
1162 SHF_ARM_PURECODE = 0x20000000,
1163
1164 // Section contains only program instructions and no program data.
1166};
1167
1168// Section Group Flags
1169enum : unsigned {
1171 GRP_MASKOS = 0x0ff00000,
1172 GRP_MASKPROC = 0xf0000000
1173};
1174
1175// Combine a symbol's binding and type into st_info (ELF32_ST_INFO,
1176// ELF64_ST_INFO).
1178 return (Binding << 4) | (Type & 0x0f);
1179}
1180
1181// Symbol table entries for ELF32.
1183 Elf32_Word st_name; // Symbol name (index into string table)
1184 Elf32_Addr st_value; // Value or address associated with the symbol
1185 Elf32_Word st_size; // Size of the symbol
1186 unsigned char st_info; // Symbol's type and binding attributes
1187 unsigned char st_other; // Must be zero; reserved
1188 Elf32_Half st_shndx; // Which section (header table index) it's defined in
1189
1190 // These accessors and mutators correspond to the ELF32_ST_BIND,
1191 // ELF32_ST_TYPE, and ELF32_ST_INFO macros defined in the ELF specification:
1192 unsigned char getBinding() const { return st_info >> 4; }
1193 unsigned char getType() const { return st_info & 0x0f; }
1194 void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
1195 void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
1196 void setBindingAndType(unsigned char b, unsigned char t) {
1197 st_info = getSymbolInfo(b, t);
1198 }
1199};
1200
1201// Symbol table entries for ELF64.
1203 Elf64_Word st_name; // Symbol name (index into string table)
1204 unsigned char st_info; // Symbol's type and binding attributes
1205 unsigned char st_other; // Must be zero; reserved
1206 Elf64_Half st_shndx; // Which section (header tbl index) it's defined in
1207 Elf64_Addr st_value; // Value or address associated with the symbol
1208 Elf64_Xword st_size; // Size of the symbol
1209
1210 // These accessors and mutators are identical to those defined for ELF32
1211 // symbol table entries.
1212 unsigned char getBinding() const { return st_info >> 4; }
1213 unsigned char getType() const { return st_info & 0x0f; }
1214 void setBinding(unsigned char b) { setBindingAndType(b, getType()); }
1215 void setType(unsigned char t) { setBindingAndType(getBinding(), t); }
1216 void setBindingAndType(unsigned char b, unsigned char t) {
1217 st_info = getSymbolInfo(b, t);
1218 }
1219};
1220
1221// The size (in bytes) of symbol table entries.
1222enum {
1223 SYMENTRY_SIZE32 = 16, // 32-bit symbol entry size
1224 SYMENTRY_SIZE64 = 24 // 64-bit symbol entry size.
1225};
1226
1227// Symbol bindings.
1228enum {
1229 STB_LOCAL = 0, // Local symbol, not visible outside obj file containing def
1230 STB_GLOBAL = 1, // Global symbol, visible to all object files being combined
1231 STB_WEAK = 2, // Weak symbol, like global but lower-precedence
1233 STB_LOOS = 10, // Lowest operating system-specific binding type
1234 STB_HIOS = 12, // Highest operating system-specific binding type
1235 STB_LOPROC = 13, // Lowest processor-specific binding type
1236 STB_HIPROC = 15 // Highest processor-specific binding type
1237};
1238
1239// Symbol types.
1240enum {
1241 STT_NOTYPE = 0, // Symbol's type is not specified
1242 STT_OBJECT = 1, // Symbol is a data object (variable, array, etc.)
1243 STT_FUNC = 2, // Symbol is executable code (function, etc.)
1244 STT_SECTION = 3, // Symbol refers to a section
1245 STT_FILE = 4, // Local, absolute symbol that refers to a file
1246 STT_COMMON = 5, // An uninitialized common block
1247 STT_TLS = 6, // Thread local data object
1248 STT_GNU_IFUNC = 10, // GNU indirect function
1249 STT_LOOS = 10, // Lowest operating system-specific symbol type
1250 STT_HIOS = 12, // Highest operating system-specific symbol type
1251 STT_LOPROC = 13, // Lowest processor-specific symbol type
1252 STT_HIPROC = 15, // Highest processor-specific symbol type
1253
1254 // AMDGPU symbol types
1256};
1257
1258enum {
1259 STV_DEFAULT = 0, // Visibility is specified by binding type
1260 STV_INTERNAL = 1, // Defined by processor supplements
1261 STV_HIDDEN = 2, // Not visible to other components
1262 STV_PROTECTED = 3 // Visible in other components but not preemptable
1263};
1264
1265// Symbol number.
1266enum { STN_UNDEF = 0 };
1267
1268// Special relocation symbols used in the MIPS64 ELF relocation entries
1269enum {
1270 RSS_UNDEF = 0, // None
1271 RSS_GP = 1, // Value of gp
1272 RSS_GP0 = 2, // Value of gp used to create object being relocated
1273 RSS_LOC = 3 // Address of location being relocated
1274};
1275
1276// Relocation entry, without explicit addend.
1278 Elf32_Addr r_offset; // Location (file byte offset, or program virtual addr)
1279 Elf32_Word r_info; // Symbol table index and type of relocation to apply
1280
1281 // These accessors and mutators correspond to the ELF32_R_SYM, ELF32_R_TYPE,
1282 // and ELF32_R_INFO macros defined in the ELF specification:
1283 Elf32_Word getSymbol() const { return (r_info >> 8); }
1284 unsigned char getType() const { return (unsigned char)(r_info & 0x0ff); }
1286 void setType(unsigned char t) { setSymbolAndType(getSymbol(), t); }
1287 void setSymbolAndType(Elf32_Word s, unsigned char t) {
1288 r_info = (s << 8) + t;
1289 }
1290};
1291
1292// Relocation entry with explicit addend.
1294 Elf32_Addr r_offset; // Location (file byte offset, or program virtual addr)
1295 Elf32_Word r_info; // Symbol table index and type of relocation to apply
1296 Elf32_Sword r_addend; // Compute value for relocatable field by adding this
1297
1298 // These accessors and mutators correspond to the ELF32_R_SYM, ELF32_R_TYPE,
1299 // and ELF32_R_INFO macros defined in the ELF specification:
1300 Elf32_Word getSymbol() const { return (r_info >> 8); }
1301 unsigned char getType() const { return (unsigned char)(r_info & 0x0ff); }
1303 void setType(unsigned char t) { setSymbolAndType(getSymbol(), t); }
1304 void setSymbolAndType(Elf32_Word s, unsigned char t) {
1305 r_info = (s << 8) + t;
1306 }
1307};
1308
1309// Relocation entry without explicit addend or info (relative relocations only).
1310typedef Elf32_Word Elf32_Relr; // offset/bitmap for relative relocations
1311
1312// Relocation entry, without explicit addend.
1314 Elf64_Addr r_offset; // Location (file byte offset, or program virtual addr).
1315 Elf64_Xword r_info; // Symbol table index and type of relocation to apply.
1316
1317 // These accessors and mutators correspond to the ELF64_R_SYM, ELF64_R_TYPE,
1318 // and ELF64_R_INFO macros defined in the ELF specification:
1319 Elf64_Word getSymbol() const { return (r_info >> 32); }
1320 Elf64_Word getType() const { return (Elf64_Word)(r_info & 0xffffffffL); }
1324 r_info = ((Elf64_Xword)s << 32) + (t & 0xffffffffL);
1325 }
1326};
1327
1328// Relocation entry with explicit addend.
1330 Elf64_Addr r_offset; // Location (file byte offset, or program virtual addr).
1331 Elf64_Xword r_info; // Symbol table index and type of relocation to apply.
1332 Elf64_Sxword r_addend; // Compute value for relocatable field by adding this.
1333
1334 // These accessors and mutators correspond to the ELF64_R_SYM, ELF64_R_TYPE,
1335 // and ELF64_R_INFO macros defined in the ELF specification:
1336 Elf64_Word getSymbol() const { return (r_info >> 32); }
1337 Elf64_Word getType() const { return (Elf64_Word)(r_info & 0xffffffffL); }
1341 r_info = ((Elf64_Xword)s << 32) + (t & 0xffffffffL);
1342 }
1343};
1344
1345// In-memory representation of CREL. The serialized representation uses LEB128.
1346template <bool Is64> struct Elf_Crel {
1347 std::conditional_t<Is64, uint64_t, uint32_t> r_offset;
1350 std::conditional_t<Is64, int64_t, int32_t> r_addend;
1351};
1352
1353// Relocation entry without explicit addend or info (relative relocations only).
1354typedef Elf64_Xword Elf64_Relr; // offset/bitmap for relative relocations
1355
1356// Program header for ELF32.
1358 Elf32_Word p_type; // Type of segment
1359 Elf32_Off p_offset; // File offset where segment is located, in bytes
1360 Elf32_Addr p_vaddr; // Virtual address of beginning of segment
1361 Elf32_Addr p_paddr; // Physical address of beginning of segment (OS-specific)
1362 Elf32_Word p_filesz; // Num. of bytes in file image of segment (may be zero)
1363 Elf32_Word p_memsz; // Num. of bytes in mem image of segment (may be zero)
1364 Elf32_Word p_flags; // Segment flags
1365 Elf32_Word p_align; // Segment alignment constraint
1366};
1367
1368// Program header for ELF64.
1370 Elf64_Word p_type; // Type of segment
1371 Elf64_Word p_flags; // Segment flags
1372 Elf64_Off p_offset; // File offset where segment is located, in bytes
1373 Elf64_Addr p_vaddr; // Virtual address of beginning of segment
1374 Elf64_Addr p_paddr; // Physical addr of beginning of segment (OS-specific)
1375 Elf64_Xword p_filesz; // Num. of bytes in file image of segment (may be zero)
1376 Elf64_Xword p_memsz; // Num. of bytes in mem image of segment (may be zero)
1377 Elf64_Xword p_align; // Segment alignment constraint
1378};
1379
1380// Segment types.
1381enum {
1382 PT_NULL = 0, // Unused segment.
1383 PT_LOAD = 1, // Loadable segment.
1384 PT_DYNAMIC = 2, // Dynamic linking information.
1385 PT_INTERP = 3, // Interpreter pathname.
1386 PT_NOTE = 4, // Auxiliary information.
1387 PT_SHLIB = 5, // Reserved.
1388 PT_PHDR = 6, // The program header table itself.
1389 PT_TLS = 7, // The thread-local storage template.
1390 PT_LOOS = 0x60000000, // Lowest operating system-specific pt entry type.
1391 PT_HIOS = 0x6fffffff, // Highest operating system-specific pt entry type.
1392 PT_LOPROC = 0x70000000, // Lowest processor-specific program hdr entry type.
1393 PT_HIPROC = 0x7fffffff, // Highest processor-specific program hdr entry type.
1394
1395 // x86-64 program header types.
1396 // These all contain stack unwind tables.
1397 PT_GNU_EH_FRAME = 0x6474e550,
1398 PT_SUNW_EH_FRAME = 0x6474e550,
1399 PT_SUNW_UNWIND = 0x6464e550,
1400
1401 PT_GNU_STACK = 0x6474e551, // Indicates stack executability.
1402 PT_GNU_RELRO = 0x6474e552, // Read-only after relocation.
1403 PT_GNU_PROPERTY = 0x6474e553, // .note.gnu.property notes sections.
1404 PT_GNU_SFRAME = 0x6474e554, // GNU SFrame stack trace format.
1405
1406 PT_OPENBSD_MUTABLE = 0x65a3dbe5, // Like bss, but not immutable.
1407 PT_OPENBSD_RANDOMIZE = 0x65a3dbe6, // Fill with random data.
1408 PT_OPENBSD_WXNEEDED = 0x65a3dbe7, // Program does W^X violations.
1409 PT_OPENBSD_NOBTCFI = 0x65a3dbe8, // Do not enforce branch target CFI.
1410 PT_OPENBSD_SYSCALLS = 0x65a3dbe9, // System call sites.
1411 PT_OPENBSD_BOOTDATA = 0x65a41be6, // Section for boot arguments.
1412
1413 // ARM program header types.
1414 PT_ARM_ARCHEXT = 0x70000000, // Platform architecture compatibility info
1415 // These all contain stack unwind tables.
1416 PT_ARM_EXIDX = 0x70000001,
1417 PT_ARM_UNWIND = 0x70000001,
1418 // MTE memory tag segment type
1420
1421 // MIPS program header types.
1422 PT_MIPS_REGINFO = 0x70000000, // Register usage information.
1423 PT_MIPS_RTPROC = 0x70000001, // Runtime procedure table.
1424 PT_MIPS_OPTIONS = 0x70000002, // Options segment.
1425 PT_MIPS_ABIFLAGS = 0x70000003, // Abiflags segment.
1426
1427 // RISCV program header types.
1429};
1430
1431// Segment flag bits.
1432enum : unsigned {
1433 PF_X = 1, // Execute
1434 PF_W = 2, // Write
1435 PF_R = 4, // Read
1436 PF_MASKOS = 0x0ff00000, // Bits for operating system-specific semantics.
1437 PF_MASKPROC = 0xf0000000 // Bits for processor-specific semantics.
1438};
1439
1440// Dynamic table entry for ELF32.
1442 Elf32_Sword d_tag; // Type of dynamic table entry.
1443 union {
1444 Elf32_Word d_val; // Integer value of entry.
1445 Elf32_Addr d_ptr; // Pointer value of entry.
1447};
1448
1449// Dynamic table entry for ELF64.
1451 Elf64_Sxword d_tag; // Type of dynamic table entry.
1452 union {
1453 Elf64_Xword d_val; // Integer value of entry.
1454 Elf64_Addr d_ptr; // Pointer value of entry.
1456};
1457
1458// Dynamic table entry tags.
1459enum {
1460#define DYNAMIC_TAG(name, value) DT_##name = value,
1461#include "DynamicTags.def"
1462#undef DYNAMIC_TAG
1463};
1464
1465// DT_FLAGS values.
1466enum {
1467 DF_ORIGIN = 0x01, // The object may reference $ORIGIN.
1468 DF_SYMBOLIC = 0x02, // Search the shared lib before searching the exe.
1469 DF_TEXTREL = 0x04, // Relocations may modify a non-writable segment.
1470 DF_BIND_NOW = 0x08, // Process all relocations on load.
1471 DF_STATIC_TLS = 0x10 // Reject attempts to load dynamically.
1473
1474// State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 entry.
1475enum {
1476 DF_1_NOW = 0x00000001, // Set RTLD_NOW for this object.
1477 DF_1_GLOBAL = 0x00000002, // Set RTLD_GLOBAL for this object.
1478 DF_1_GROUP = 0x00000004, // Set RTLD_GROUP for this object.
1479 DF_1_NODELETE = 0x00000008, // Set RTLD_NODELETE for this object.
1480 DF_1_LOADFLTR = 0x00000010, // Trigger filtee loading at runtime.
1481 DF_1_INITFIRST = 0x00000020, // Set RTLD_INITFIRST for this object.
1482 DF_1_NOOPEN = 0x00000040, // Set RTLD_NOOPEN for this object.
1483 DF_1_ORIGIN = 0x00000080, // $ORIGIN must be handled.
1484 DF_1_DIRECT = 0x00000100, // Direct binding enabled.
1485 DF_1_TRANS = 0x00000200,
1486 DF_1_INTERPOSE = 0x00000400, // Object is used to interpose.
1487 DF_1_NODEFLIB = 0x00000800, // Ignore default lib search path.
1488 DF_1_NODUMP = 0x00001000, // Object can't be dldump'ed.
1489 DF_1_CONFALT = 0x00002000, // Configuration alternative created.
1490 DF_1_ENDFILTEE = 0x00004000, // Filtee terminates filters search.
1491 DF_1_DISPRELDNE = 0x00008000, // Disp reloc applied at build time.
1492 DF_1_DISPRELPND = 0x00010000, // Disp reloc applied at run-time.
1493 DF_1_NODIRECT = 0x00020000, // Object has no-direct binding.
1494 DF_1_IGNMULDEF = 0x00040000,
1495 DF_1_NOKSYMS = 0x00080000,
1496 DF_1_NOHDR = 0x00100000,
1497 DF_1_EDITED = 0x00200000, // Object is modified after built.
1498 DF_1_NORELOC = 0x00400000,
1499 DF_1_SYMINTPOSE = 0x00800000, // Object has individual interposers.
1500 DF_1_GLOBAUDIT = 0x01000000, // Global auditing required.
1501 DF_1_SINGLETON = 0x02000000, // Singleton symbols are used.
1502 DF_1_PIE = 0x08000000, // Object is a position-independent executable.
1503};
1504
1505// DT_MIPS_FLAGS values.
1506enum {
1507 RHF_NONE = 0x00000000, // No flags.
1508 RHF_QUICKSTART = 0x00000001, // Uses shortcut pointers.
1509 RHF_NOTPOT = 0x00000002, // Hash size is not a power of two.
1510 RHS_NO_LIBRARY_REPLACEMENT = 0x00000004, // Ignore LD_LIBRARY_PATH.
1511 RHF_NO_MOVE = 0x00000008, // DSO address may not be relocated.
1512 RHF_SGI_ONLY = 0x00000010, // SGI specific features.
1513 RHF_GUARANTEE_INIT = 0x00000020, // Guarantee that .init will finish
1514 // executing before any non-init
1515 // code in DSO is called.
1516 RHF_DELTA_C_PLUS_PLUS = 0x00000040, // Contains Delta C++ code.
1517 RHF_GUARANTEE_START_INIT = 0x00000080, // Guarantee that .init will start
1518 // executing before any non-init
1519 // code in DSO is called.
1520 RHF_PIXIE = 0x00000100, // Generated by pixie.
1521 RHF_DEFAULT_DELAY_LOAD = 0x00000200, // Delay-load DSO by default.
1522 RHF_REQUICKSTART = 0x00000400, // Object may be requickstarted
1523 RHF_REQUICKSTARTED = 0x00000800, // Object has been requickstarted
1524 RHF_CORD = 0x00001000, // Generated by cord.
1525 RHF_NO_UNRES_UNDEF = 0x00002000, // Object contains no unresolved
1526 // undef symbols.
1527 RHF_RLD_ORDER_SAFE = 0x00004000 // Symbol table is in a safe order.
1528};
1529
1530// ElfXX_VerDef structure version (GNU versioning)
1532
1533// VerDef Flags (ElfXX_VerDef::vd_flags)
1534enum { VER_FLG_BASE = 0x1, VER_FLG_WEAK = 0x2, VER_FLG_INFO = 0x4 };
1535
1536// Special constants for the version table. (SHT_GNU_versym/.gnu.version)
1537enum {
1538 VER_NDX_LOCAL = 0, // Unversioned undefined or localized defined symbol
1539 VER_NDX_GLOBAL = 1, // Unversioned non-local defined symbol
1540 VERSYM_VERSION = 0x7fff, // Version Index mask
1541 VERSYM_HIDDEN = 0x8000 // Hidden bit (non-default version)
1542};
1543
1544// ElfXX_VerNeed structure version (GNU versioning)
1546
1547// SHT_NOTE section types.
1548
1549// Generic note types.
1550enum : unsigned {
1555};
1556
1557// Core note types.
1558enum : unsigned {
1570
1571 NT_PPC_VMX = 0x100,
1572 NT_PPC_VSX = 0x102,
1573 NT_PPC_TAR = 0x103,
1574 NT_PPC_PPR = 0x104,
1576 NT_PPC_EBB = 0x106,
1577 NT_PPC_PMU = 0x107,
1586
1587 NT_386_TLS = 0x200,
1590
1604
1605 NT_ARM_VFP = 0x400,
1606 NT_ARM_TLS = 0x401,
1609 NT_ARM_SVE = 0x405,
1613 NT_ARM_ZA = 0x40c,
1614 NT_ARM_ZT = 0x40d,
1616 NT_ARM_POE = 0x40f,
1617 NT_ARM_GCS = 0x410,
1618
1619 NT_FILE = 0x46494c45,
1620 NT_PRXFPREG = 0x46e62b7f,
1621 NT_SIGINFO = 0x53494749,
1622};
1623
1624// LLVM-specific notes.
1625enum {
1628};
1629
1630// GNU note types.
1631enum {
1638};
1639
1640// Android note types.
1641enum {
1645};
1646
1647// Memory tagging values used in NT_ANDROID_TYPE_MEMTAG notes.
1648enum {
1649 // Enumeration to determine the tagging mode. In Android-land, 'SYNC' means
1650 // running all threads in MTE Synchronous mode, and 'ASYNC' means to use the
1651 // kernels auto-upgrade feature to allow for either MTE Asynchronous,
1652 // Asymmetric, or Synchronous mode. This allows silicon vendors to specify, on
1653 // a per-cpu basis what 'ASYNC' should mean. Generally, the expectation is
1654 // "pick the most precise mode that's very fast".
1659 // Bits indicating whether the loader should prepare for MTE to be enabled on
1660 // the heap and/or stack.
1663};
1664
1665// Property types used in GNU_PROPERTY_TYPE_0 notes.
1666enum : unsigned {
1673
1677
1681};
1682
1683// aarch64 processor feature bits.
1684enum : unsigned {
1688};
1689
1690// aarch64 PAuth platforms.
1691enum : unsigned {
1695};
1696
1697// Bit positions of version flags for AARCH64_PAUTH_PLATFORM_LLVM_LINUX.
1698enum : unsigned {
1713};
1714
1715// x86 processor feature bits.
1716enum : unsigned {
1719
1730
1735};
1736
1737// RISC-V processor feature bits.
1738enum : unsigned {
1742};
1743
1744// FreeBSD note types.
1745enum {
1750};
1751
1752// NT_FREEBSD_FEATURE_CTL values (see FreeBSD's sys/sys/elf_common.h).
1753enum {
1760};
1761
1762// FreeBSD core note types.
1763enum {
1774};
1775
1776// NetBSD core note types.
1777enum {
1781};
1782
1783// OpenBSD core note types.
1784enum {
1792};
1793
1794// AMDGPU-specific section indices.
1795enum {
1796 SHN_AMDGPU_LDS = 0xff00, // Variable in LDS; symbol encoded like SHN_COMMON
1797};
1798
1799// AMD vendor specific notes. (Code Object V2)
1800enum {
1804 // Note types with values between 4 and 9 (inclusive) are reserved.
1808};
1809
1810// AMDGPU vendor specific notes. (Code Object V3)
1811enum {
1812 // Note types with values between 0 and 31 (inclusive) are reserved.
1814};
1815
1816// LLVMOMPOFFLOAD specific notes.
1817enum : unsigned {
1821};
1822
1823enum {
1830};
1831
1832constexpr const char *ELF_NOTE_GNU = "GNU";
1833
1834// Android packed relocation group flags.
1835enum {
1840};
1841
1842// Compressed section header for ELF32.
1848
1849// Compressed section header for ELF64.
1856
1857// Note header for ELF32.
1863
1864// Note header for ELF64.
1870
1871// Legal values for ch_type field of compressed section header.
1872enum {
1873 ELFCOMPRESS_ZLIB = 1, // ZLIB/DEFLATE algorithm.
1874 ELFCOMPRESS_ZSTD = 2, // Zstandard algorithm
1875 ELFCOMPRESS_LOOS = 0x60000000, // Start of OS-specific.
1876 ELFCOMPRESS_HIOS = 0x6fffffff, // End of OS-specific.
1877 ELFCOMPRESS_LOPROC = 0x70000000, // Start of processor-specific.
1878 ELFCOMPRESS_HIPROC = 0x7fffffff // End of processor-specific.
1879};
1880
1881constexpr unsigned CREL_HDR_ADDEND = 4;
1882
1883/// Convert an architecture name into ELF's e_machine value.
1885
1886/// Convert an ELF's e_machine value into an architecture name.
1888
1889// Convert a triple's architecture to ELF's e_machine value.
1891
1892// Convert a lowercase string identifier into an OSABI value.
1894
1895// Convert an OSABI value into a string that identifies the OS- or ABI-
1896// specific ELF extension.
1898
1899} // end namespace ELF
1900} // end namespace llvm
1901
1902#endif // LLVM_BINARYFORMAT_ELF_H
uint64_t uint64_t
#define X(NUM, ENUM, NAME)
Definition ELF.h:665
#define AMDGPU_MACH_LIST(X)
Definition ELF.h:576
#define LLVM_ABI
Definition Compiler.h:211
DXIL Resource Implicit Binding
Represent a constant reference to a string, i.e.
Definition StringRef.h:56
The instances of the Type class are immutable: once they are created, they are never changed.
Definition Type.h:46
LLVM_ABI StringRef convertOSABIToName(uint8_t OSABI)
Definition ELF.cpp:130
int64_t Elf64_Sxword
Definition ELF.h:44
@ EV_NONE
Definition ELF.h:130
@ EV_CURRENT
Definition ELF.h:130
@ NT_FREEBSD_FEATURE_CTL
Definition ELF.h:1749
@ NT_FREEBSD_ARCH_TAG
Definition ELF.h:1748
@ NT_FREEBSD_NOINIT_TAG
Definition ELF.h:1747
@ NT_FREEBSD_ABI_TAG
Definition ELF.h:1746
uint64_t Elf64_Xword
Definition ELF.h:43
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX
Definition ELF.h:1694
@ AARCH64_PAUTH_PLATFORM_INVALID
Definition ELF.h:1692
@ AARCH64_PAUTH_PLATFORM_BAREMETAL
Definition ELF.h:1693
static int64_t decodePPC64LocalEntryOffset(unsigned Other)
Definition ELF.h:234
@ NT_GNU_BUILD_ID
Definition ELF.h:1634
@ FDO_PACKAGING_METADATA
Definition ELF.h:1637
@ NT_GNU_HWCAP
Definition ELF.h:1633
@ NT_GNU_PROPERTY_TYPE_0
Definition ELF.h:1636
@ NT_GNU_ABI_TAG
Definition ELF.h:1632
@ NT_GNU_GOLD_VERSION
Definition ELF.h:1635
@ NT_AMDGPU_METADATA
Definition ELF.h:1813
@ NT_LLVM_DYNAMIC_DEBUGGING
Definition ELF.h:1627
@ NT_LLVM_HWASAN_GLOBALS
Definition ELF.h:1626
constexpr const char * ELF_NOTE_GNU
Definition ELF.h:1832
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC
Definition ELF.h:1706
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR
Definition ELF.h:1710
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_VPTRADDRDISCR
Definition ELF.h:1703
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_AUTHTRAPS
Definition ELF.h:1702
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS
Definition ELF.h:1708
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINI
Definition ELF.h:1705
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INTRINSICS
Definition ELF.h:1699
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_RETURNS
Definition ELF.h:1701
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_VPTRTYPEDISCR
Definition ELF.h:1704
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST
Definition ELF.h:1711
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR
Definition ELF.h:1709
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT
Definition ELF.h:1707
@ AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_CALLS
Definition ELF.h:1700
@ NT_LLVM_OPENMP_OFFLOAD_PRODUCER
Definition ELF.h:1819
@ NT_LLVM_OPENMP_OFFLOAD_VERSION
Definition ELF.h:1818
@ NT_LLVM_OPENMP_OFFLOAD_PRODUCER_VERSION
Definition ELF.h:1820
@ SHN_HIRESERVE
Definition ELF.h:959
@ SHN_XINDEX
Definition ELF.h:958
@ SHN_HIOS
Definition ELF.h:955
@ SHN_ABS
Definition ELF.h:956
@ SHN_COMMON
Definition ELF.h:957
@ SHN_LOOS
Definition ELF.h:954
@ SHN_LOPROC
Definition ELF.h:952
@ SHN_UNDEF
Definition ELF.h:950
@ SHN_HIPROC
Definition ELF.h:953
@ SHN_LORESERVE
Definition ELF.h:951
@ EF_MSP430_MACH_MSP430x42
Definition ELF.h:836
@ EF_MSP430_MACH_MSP430x24
Definition ELF.h:830
@ EF_MSP430_MACH_MSP430x46
Definition ELF.h:840
@ EF_MSP430_MACH_MSP430x31
Definition ELF.h:832
@ EF_MSP430_MACH_MSP430x43
Definition ELF.h:837
@ EF_MSP430_MACH_MSP430x14
Definition ELF.h:824
@ EF_MSP430_MACH_MSP430x26
Definition ELF.h:831
@ EF_MSP430_MACH_MSP430x23
Definition ELF.h:829
@ EF_MSP430_MACH_MSP430x20
Definition ELF.h:827
@ EF_MSP430_MACH_MSP430x11
Definition ELF.h:820
@ EF_MSP430_MACH_MSP430x41
Definition ELF.h:835
@ EF_MSP430_MACH_MSP430x16
Definition ELF.h:826
@ EF_MSP430_MACH_MSP430x33
Definition ELF.h:834
@ EF_MSP430_MACH_MSP430x12
Definition ELF.h:822
@ EF_MSP430_MACH_MSP430x44
Definition ELF.h:838
@ EF_MSP430_MACH_MSP430x32
Definition ELF.h:833
@ EF_MSP430_MACH_MSP430x22
Definition ELF.h:828
@ EF_MSP430_MACH_MSP430x47
Definition ELF.h:841
@ EF_MSP430_MACH_MSP430x15
Definition ELF.h:825
@ EF_MSP430_MACH_MSP430x13
Definition ELF.h:823
@ EF_MSP430_MACH_MSP430x54
Definition ELF.h:842
@ EF_MSP430_MACH_MSP430X
Definition ELF.h:839
@ EF_MSP430_MACH_MSP430x11x1
Definition ELF.h:821
@ SHN_AMDGPU_LDS
Definition ELF.h:1796
@ EF_HEXAGON_ISA_V69
Definition ELF.h:447
@ EF_HEXAGON_MACH_V5
Definition ELF.h:469
@ EF_HEXAGON_MACH_V79
Definition ELF.h:487
@ EF_HEXAGON_ISA_V85
Definition ELF.h:455
@ EF_HEXAGON_ISA_V66
Definition ELF.h:444
@ EF_HEXAGON_ISA_V87
Definition ELF.h:456
@ EF_HEXAGON_ISA_V79
Definition ELF.h:452
@ EF_HEXAGON_ISA_V73
Definition ELF.h:449
@ EF_HEXAGON_MACH_V71T
Definition ELF.h:482
@ EF_HEXAGON_ISA_V93
Definition ELF.h:459
@ EF_HEXAGON_ISA_V3
Definition ELF.h:436
@ EF_HEXAGON_MACH_V67T
Definition ELF.h:477
@ EF_HEXAGON_MACH_V93
Definition ELF.h:494
@ EF_HEXAGON_MACH_V65
Definition ELF.h:474
@ EF_HEXAGON_ISA_V2
Definition ELF.h:435
@ EF_HEXAGON_MACH_V87
Definition ELF.h:491
@ EF_HEXAGON_ISA_V77
Definition ELF.h:451
@ EF_HEXAGON_MACH_V67
Definition ELF.h:476
@ EF_HEXAGON_MACH_V77
Definition ELF.h:486
@ EF_HEXAGON_ISA_V60
Definition ELF.h:440
@ EF_HEXAGON_MACH_V62
Definition ELF.h:473
@ EF_HEXAGON_ISA_V83
Definition ELF.h:454
@ EF_HEXAGON_ISA_V81
Definition ELF.h:453
@ EF_HEXAGON_MACH_V91
Definition ELF.h:493
@ EF_HEXAGON_MACH_V85
Definition ELF.h:490
@ EF_HEXAGON_MACH
Definition ELF.h:496
@ EF_HEXAGON_MACH_V73
Definition ELF.h:484
@ EF_HEXAGON_ISA_V67
Definition ELF.h:445
@ EF_HEXAGON_MACH_V61
Definition ELF.h:472
@ EF_HEXAGON_MACH_V71
Definition ELF.h:481
@ EF_HEXAGON_MACH_V68
Definition ELF.h:479
@ EF_HEXAGON_ISA_V55
Definition ELF.h:439
@ EF_HEXAGON_ISA_V4
Definition ELF.h:437
@ EF_HEXAGON_ISA_V65
Definition ELF.h:443
@ EF_HEXAGON_ISA_V91
Definition ELF.h:458
@ EF_HEXAGON_ISA_V71
Definition ELF.h:448
@ EF_HEXAGON_MACH_V89
Definition ELF.h:492
@ EF_HEXAGON_MACH_V66
Definition ELF.h:475
@ EF_HEXAGON_ISA_V89
Definition ELF.h:457
@ EF_HEXAGON_MACH_V55
Definition ELF.h:470
@ EF_HEXAGON_MACH_V81
Definition ELF.h:488
@ EF_HEXAGON_ISA_V61
Definition ELF.h:441
@ EF_HEXAGON_MACH_V60
Definition ELF.h:471
@ EF_HEXAGON_ISA_V75
Definition ELF.h:450
@ EF_HEXAGON_MACH_V83
Definition ELF.h:489
@ EF_HEXAGON_TINY_CORE
Definition ELF.h:463
@ EF_HEXAGON_ISA_V5
Definition ELF.h:438
@ EF_HEXAGON_MACH_V3
Definition ELF.h:467
@ EF_HEXAGON_ISA_V68
Definition ELF.h:446
@ EF_HEXAGON_ISA_MACH
Definition ELF.h:433
@ EF_HEXAGON_MACH_V4
Definition ELF.h:468
@ EF_HEXAGON_MACH_V75
Definition ELF.h:485
@ EF_HEXAGON_MACH_V69
Definition ELF.h:480
@ EF_HEXAGON_ISA
Definition ELF.h:460
@ EF_HEXAGON_ISA_V62
Definition ELF.h:442
@ EF_HEXAGON_MACH_V2
Definition ELF.h:466
LLVM_ABI uint16_t convertTripleArchTypeToEMachine(Triple::ArchType ArchType)
Definition ELF.cpp:30
@ PF_MASKOS
Definition ELF.h:1436
@ PF_W
Definition ELF.h:1434
@ PF_MASKPROC
Definition ELF.h:1437
@ PF_X
Definition ELF.h:1433
@ PF_R
Definition ELF.h:1435
uint64_t Elf64_Off
Definition ELF.h:39
constexpr uint8_t getSymbolInfo(uint8_t Binding, uint8_t Type)
Definition ELF.h:1177
@ XCORE_SHF_DP_SECTION
All sections with the "d" flag are grouped together by the linker to form the data section and the dp...
Definition ELF.h:1116
@ SHF_MERGE
Definition ELF.h:1073
@ SHF_MIPS_NAMES
Definition ELF.h:1141
@ SHF_STRINGS
Definition ELF.h:1076
@ SHF_MIPS_STRING
Definition ELF.h:1159
@ SHF_MIPS_NOSTRIP
Definition ELF.h:1147
@ SHF_AARCH64_PURECODE
Definition ELF.h:1165
@ SHF_MIPS_LOCAL
Definition ELF.h:1144
@ XCORE_SHF_CP_SECTION
All sections with the "c" flag are grouped together by the linker to form the constant pool and the c...
Definition ELF.h:1121
@ SHF_INFO_LINK
Definition ELF.h:1079
@ SHF_EXCLUDE
Definition ELF.h:1101
@ SHF_ALLOC
Definition ELF.h:1067
@ SHF_MASKPROC
Definition ELF.h:1111
@ SHF_OS_NONCONFORMING
Definition ELF.h:1086
@ SHF_MIPS_MERGE
Definition ELF.h:1153
@ SHF_LINK_ORDER
Definition ELF.h:1082
@ SHF_HEX_GPREL
Definition ELF.h:1134
@ SHF_GROUP
Definition ELF.h:1089
@ SHF_SUNW_NODISCARD
Definition ELF.h:1108
@ SHF_MIPS_GPREL
Definition ELF.h:1150
@ SHF_COMPRESSED
Definition ELF.h:1095
@ SHF_MASKOS
Definition ELF.h:1105
@ SHF_X86_64_LARGE
Definition ELF.h:1130
@ SHF_MIPS_ADDR
Definition ELF.h:1156
@ SHF_GNU_RETAIN
Definition ELF.h:1098
@ SHF_WRITE
Definition ELF.h:1064
@ SHF_MIPS_NODUPES
Definition ELF.h:1138
@ SHF_TLS
Definition ELF.h:1092
@ SHF_ARM_PURECODE
Definition ELF.h:1162
@ SHF_EXECINSTR
Definition ELF.h:1070
@ EI_DATA
Definition ELF.h:56
@ EI_MAG3
Definition ELF.h:54
@ EI_PAD
Definition ELF.h:60
@ EI_MAG1
Definition ELF.h:52
@ EI_VERSION
Definition ELF.h:57
@ EI_MAG2
Definition ELF.h:53
@ EI_NIDENT
Definition ELF.h:61
@ EI_ABIVERSION
Definition ELF.h:59
@ EI_MAG0
Definition ELF.h:51
@ EI_CLASS
Definition ELF.h:55
@ EI_OSABI
Definition ELF.h:58
@ STN_UNDEF
Definition ELF.h:1266
@ DF_1_IGNMULDEF
Definition ELF.h:1494
@ DF_1_SINGLETON
Definition ELF.h:1501
@ DF_1_NODUMP
Definition ELF.h:1488
@ DF_1_NODELETE
Definition ELF.h:1479
@ DF_1_DIRECT
Definition ELF.h:1484
@ DF_1_GROUP
Definition ELF.h:1478
@ DF_1_PIE
Definition ELF.h:1502
@ DF_1_SYMINTPOSE
Definition ELF.h:1499
@ DF_1_ORIGIN
Definition ELF.h:1483
@ DF_1_EDITED
Definition ELF.h:1497
@ DF_1_NORELOC
Definition ELF.h:1498
@ DF_1_GLOBAUDIT
Definition ELF.h:1500
@ DF_1_NODEFLIB
Definition ELF.h:1487
@ DF_1_GLOBAL
Definition ELF.h:1477
@ DF_1_TRANS
Definition ELF.h:1485
@ DF_1_NODIRECT
Definition ELF.h:1493
@ DF_1_NOKSYMS
Definition ELF.h:1495
@ DF_1_ENDFILTEE
Definition ELF.h:1490
@ DF_1_NOOPEN
Definition ELF.h:1482
@ DF_1_DISPRELDNE
Definition ELF.h:1491
@ DF_1_NOHDR
Definition ELF.h:1496
@ DF_1_NOW
Definition ELF.h:1476
@ DF_1_DISPRELPND
Definition ELF.h:1492
@ DF_1_CONFALT
Definition ELF.h:1489
@ DF_1_LOADFLTR
Definition ELF.h:1480
@ DF_1_INTERPOSE
Definition ELF.h:1486
@ DF_1_INITFIRST
Definition ELF.h:1481
@ NT_NETBSDCORE_AUXV
Definition ELF.h:1779
@ NT_NETBSDCORE_LWPSTATUS
Definition ELF.h:1780
@ NT_NETBSDCORE_PROCINFO
Definition ELF.h:1778
uint32_t Elf32_Word
Definition ELF.h:35
@ SHN_HEXAGON_SCOMMON_2
Definition ELF.h:503
@ SHN_HEXAGON_SCOMMON_4
Definition ELF.h:504
@ SHN_HEXAGON_SCOMMON_8
Definition ELF.h:505
@ SHN_HEXAGON_SCOMMON_1
Definition ELF.h:502
@ SHN_HEXAGON_SCOMMON
Definition ELF.h:501
@ EF_PPC64_ABI
Definition ELF.h:226
static const char ElfMagic[]
Definition ELF.h:47
@ STO_MIPS_PIC
Definition ELF.h:409
@ STO_MIPS_OPTIONAL
Definition ELF.h:407
@ STO_MIPS_MICROMIPS
Definition ELF.h:410
@ STO_MIPS_MIPS16
Definition ELF.h:411
@ STO_MIPS_PLT
Definition ELF.h:408
@ GNU_PROPERTY_AARCH64_FEATURE_1_BTI
Definition ELF.h:1685
@ GNU_PROPERTY_AARCH64_FEATURE_1_PAC
Definition ELF.h:1686
@ GNU_PROPERTY_AARCH64_FEATURE_1_GCS
Definition ELF.h:1687
@ SHT_MIPS_REGINFO
Definition ELF.h:1043
@ SHT_SHLIB
Definition ELF.h:974
@ SHT_MIPS_OPTIONS
Definition ELF.h:1044
@ SHT_AARCH64_MEMTAG_GLOBALS_DYNAMIC
Definition ELF.h:1038
@ SHT_STRTAB
Definition ELF.h:967
@ SHT_ARM_PREEMPTMAP
Definition ELF.h:1025
@ SHT_LLVM_JT_SIZES
Definition ELF.h:1006
@ SHT_LLVM_DEPENDENT_LIBRARIES
Definition ELF.h:996
@ SHT_GROUP
Definition ELF.h:979
@ SHT_PROGBITS
Definition ELF.h:965
@ SHT_AARCH64_AUTH_RELR
Definition ELF.h:1034
@ SHT_LLVM_LINKER_OPTIONS
Definition ELF.h:993
@ SHT_REL
Definition ELF.h:973
@ SHT_ARM_ATTRIBUTES
Definition ELF.h:1027
@ SHT_NULL
Definition ELF.h:964
@ SHT_AARCH64_MEMTAG_GLOBALS_STATIC
Definition ELF.h:1037
@ SHT_LLVM_CALL_GRAPH_PROFILE
Definition ELF.h:1002
@ SHT_HIPROC
Definition ELF.h:1056
@ SHT_HIUSER
Definition ELF.h:1058
@ SHT_NOBITS
Definition ELF.h:972
@ SHT_SYMTAB
Definition ELF.h:966
@ SHT_GNU_ATTRIBUTES
Definition ELF.h:1014
@ SHT_GNU_verneed
Definition ELF.h:1017
@ SHT_RELR
Definition ELF.h:983
@ SHT_LOOS
Definition ELF.h:987
@ SHT_LOUSER
Definition ELF.h:1057
@ SHT_LLVM_ODRTAB
Definition ELF.h:992
@ SHT_LLVM_OFFLOADING
Definition ELF.h:1004
@ SHT_HEXAGON_ATTRIBUTES
Definition ELF.h:1054
@ SHT_HIOS
Definition ELF.h:1019
@ SHT_LLVM_PART_EHDR
Definition ELF.h:999
@ SHT_GNU_verdef
Definition ELF.h:1016
@ SHT_CREL
Definition ELF.h:986
@ SHT_LOPROC
Definition ELF.h:1020
@ SHT_DYNAMIC
Definition ELF.h:970
@ SHT_ARM_OVERLAYSECTION
Definition ELF.h:1029
@ SHT_LLVM_LTO
Definition ELF.h:1005
@ SHT_ANDROID_RELR
Definition ELF.h:1012
@ SHT_SYMTAB_SHNDX
Definition ELF.h:980
@ SHT_AARCH64_ATTRIBUTES
Definition ELF.h:1031
@ SHT_LLVM_ADDRSIG
Definition ELF.h:994
@ SHT_LLVM_CALL_GRAPH
Definition ELF.h:1008
@ SHT_ANDROID_RELA
Definition ELF.h:991
@ SHT_HEX_ORDERED
Definition ELF.h:1039
@ SHT_ARM_EXIDX
Definition ELF.h:1023
@ SHT_ARM_DEBUGOVERLAY
Definition ELF.h:1028
@ SHT_ANDROID_REL
Definition ELF.h:990
@ SHT_MSP430_ATTRIBUTES
Definition ELF.h:1048
@ SHT_MIPS_DWARF
Definition ELF.h:1045
@ SHT_RISCV_ATTRIBUTES
Definition ELF.h:1050
@ SHT_CSKY_ATTRIBUTES
Definition ELF.h:1052
@ SHT_PREINIT_ARRAY
Definition ELF.h:978
@ SHT_LLVM_BB_ADDR_MAP
Definition ELF.h:1003
@ SHT_GNU_SFRAME
Definition ELF.h:1013
@ SHT_GNU_HASH
Definition ELF.h:1015
@ SHT_LLVM_CFI_JUMP_TABLE
Definition ELF.h:1007
@ SHT_INIT_ARRAY
Definition ELF.h:976
@ SHT_RELA
Definition ELF.h:968
@ SHT_LLVM_PART_PHDR
Definition ELF.h:1000
@ SHT_LLVM_DYNDBG_ELF
Definition ELF.h:1009
@ SHT_NOTE
Definition ELF.h:971
@ SHT_DYNSYM
Definition ELF.h:975
@ SHT_X86_64_UNWIND
Definition ELF.h:1041
@ SHT_MIPS_ABIFLAGS
Definition ELF.h:1046
@ SHT_LLVM_SYMPART
Definition ELF.h:998
@ SHT_GNU_versym
Definition ELF.h:1018
@ SHT_HASH
Definition ELF.h:969
@ SHT_FINI_ARRAY
Definition ELF.h:977
@ ELFOSABI_ARM
Definition ELF.h:178
@ ELFOSABI_HURD
Definition ELF.h:159
@ ELFOSABI_NSK
Definition ELF.h:168
@ ELFOSABI_FENIXOS
Definition ELF.h:170
@ ELFOSABI_C6000_LINUX
Definition ELF.h:181
@ ELFOSABI_MODESTO
Definition ELF.h:165
@ ELFOSABI_TRU64
Definition ELF.h:164
@ ELFOSABI_LAST_ARCH
Definition ELF.h:183
@ ELFOSABI_CUDA
Definition ELF.h:172
@ ELFOSABI_OPENBSD
Definition ELF.h:166
@ ELFOSABI_HPUX
Definition ELF.h:155
@ ELFOSABI_CUDA_V2
Definition ELF.h:173
@ ELFOSABI_NETBSD
Definition ELF.h:156
@ ELFOSABI_AMDGPU_HSA
Definition ELF.h:175
@ ELFOSABI_SOLARIS
Definition ELF.h:160
@ ELFOSABI_FREEBSD
Definition ELF.h:163
@ ELFOSABI_LINUX
Definition ELF.h:158
@ ELFOSABI_STANDALONE
Definition ELF.h:182
@ ELFOSABI_ARM_FDPIC
Definition ELF.h:179
@ ELFOSABI_C6000_ELFABI
Definition ELF.h:180
@ ELFOSABI_AIX
Definition ELF.h:161
@ ELFOSABI_GNU
Definition ELF.h:157
@ ELFOSABI_IRIX
Definition ELF.h:162
@ ELFOSABI_OPENVMS
Definition ELF.h:167
@ ELFOSABI_AMDGPU_MESA3D
Definition ELF.h:177
@ ELFOSABI_CLOUDABI
Definition ELF.h:171
@ ELFOSABI_FIRST_ARCH
Definition ELF.h:174
@ ELFOSABI_AROS
Definition ELF.h:169
@ ELFOSABI_NONE
Definition ELF.h:154
@ ELFOSABI_AMDGPU_PAL
Definition ELF.h:176
@ EF_MIPS_MACH_LS2F
Definition ELF.h:366
@ EF_MIPS_MACH_OCTEON2
Definition ELF.h:359
@ EF_MIPS_FP64
Definition ELF.h:337
@ EF_MIPS_ARCH_ASE
Definition ELF.h:374
@ EF_MIPS_ABI
Definition ELF.h:346
@ EF_MIPS_MACH_5900
Definition ELF.h:362
@ EF_MIPS_MACH_4111
Definition ELF.h:355
@ EF_MIPS_ARCH
Definition ELF.h:388
@ EF_MIPS_MICROMIPS
Definition ELF.h:371
@ EF_MIPS_ARCH_32R6
Definition ELF.h:386
@ EF_MIPS_MACH_SB1
Definition ELF.h:356
@ EF_MIPS_ABI_O64
Definition ELF.h:343
@ EF_MIPS_MACH_LS3A
Definition ELF.h:367
@ EF_MIPS_ARCH_ASE_MDMX
Definition ELF.h:373
@ EF_MIPS_MACH_3900
Definition ELF.h:350
@ EF_MIPS_ABI_O32
Definition ELF.h:342
@ EF_MIPS_MACH_NONE
Definition ELF.h:349
@ EF_MIPS_MACH_4100
Definition ELF.h:352
@ EF_MIPS_ARCH_64
Definition ELF.h:383
@ EF_MIPS_ARCH_32
Definition ELF.h:382
@ EF_MIPS_MACH_LS2E
Definition ELF.h:365
@ EF_MIPS_MACH_OCTEON
Definition ELF.h:357
@ EF_MIPS_MACH_5500
Definition ELF.h:363
@ EF_MIPS_ABI_EABI64
Definition ELF.h:345
@ EF_MIPS_ARCH_4
Definition ELF.h:380
@ EF_MIPS_ARCH_5
Definition ELF.h:381
@ EF_MIPS_NAN2008
Definition ELF.h:339
@ EF_MIPS_MACH_5400
Definition ELF.h:361
@ EF_MIPS_PIC
Definition ELF.h:332
@ EF_MIPS_MACH_XLR
Definition ELF.h:358
@ EF_MIPS_MACH_4010
Definition ELF.h:351
@ EF_MIPS_ARCH_2
Definition ELF.h:378
@ EF_MIPS_MACH_9000
Definition ELF.h:364
@ EF_MIPS_32BITMODE
Definition ELF.h:335
@ EF_MIPS_ARCH_32R2
Definition ELF.h:384
@ EF_MIPS_MACH_4650
Definition ELF.h:353
@ EF_MIPS_ARCH_64R2
Definition ELF.h:385
@ EF_MIPS_ABI_EABI32
Definition ELF.h:344
@ EF_MIPS_ARCH_ASE_M16
Definition ELF.h:372
@ EF_MIPS_MACH
Definition ELF.h:368
@ EF_MIPS_NOREORDER
Definition ELF.h:331
@ EF_MIPS_ARCH_1
Definition ELF.h:377
@ EF_MIPS_CPIC
Definition ELF.h:333
@ EF_MIPS_ARCH_64R6
Definition ELF.h:387
@ EF_MIPS_MACH_OCTEON3
Definition ELF.h:360
@ EF_MIPS_ABI2
Definition ELF.h:334
@ EF_MIPS_ARCH_3
Definition ELF.h:379
@ EF_MIPS_MACH_4120
Definition ELF.h:354
@ STB_GLOBAL
Definition ELF.h:1230
@ STB_HIOS
Definition ELF.h:1234
@ STB_LOCAL
Definition ELF.h:1229
@ STB_LOPROC
Definition ELF.h:1235
@ STB_LOOS
Definition ELF.h:1233
@ STB_HIPROC
Definition ELF.h:1236
@ STB_GNU_UNIQUE
Definition ELF.h:1232
@ STB_WEAK
Definition ELF.h:1231
uint16_t Elf64_Half
Definition ELF.h:40
@ NT_FREEBSD_FCTL_LA48
Definition ELF.h:1758
@ NT_FREEBSD_FCTL_STKGAP_DISABLE
Definition ELF.h:1756
@ NT_FREEBSD_FCTL_ASG_DISABLE
Definition ELF.h:1759
@ NT_FREEBSD_FCTL_WXNEEDED
Definition ELF.h:1757
@ NT_FREEBSD_FCTL_ASLR_DISABLE
Definition ELF.h:1754
@ NT_FREEBSD_FCTL_PROTMAX_DISABLE
Definition ELF.h:1755
int32_t Elf64_Sword
Definition ELF.h:42
uint64_t Elf64_Addr
Definition ELF.h:38
constexpr unsigned CREL_HDR_ADDEND
Definition ELF.h:1881
@ ELFCOMPRESS_LOOS
Definition ELF.h:1875
@ ELFCOMPRESS_ZSTD
Definition ELF.h:1874
@ ELFCOMPRESS_HIOS
Definition ELF.h:1876
@ ELFCOMPRESS_LOPROC
Definition ELF.h:1877
@ ELFCOMPRESS_HIPROC
Definition ELF.h:1878
@ ELFCOMPRESS_ZLIB
Definition ELF.h:1873
@ VER_FLG_INFO
Definition ELF.h:1534
@ VER_FLG_WEAK
Definition ELF.h:1534
@ VER_FLG_BASE
Definition ELF.h:1534
@ ELFDATA2MSB
Definition ELF.h:149
@ ELFDATANONE
Definition ELF.h:147
@ ELFDATA2LSB
Definition ELF.h:148
@ EF_LOONGARCH_OBJABI_V1
Definition ELF.h:892
@ EF_LOONGARCH_OBJABI_MASK
Definition ELF.h:893
@ EF_LOONGARCH_ABI_SINGLE_FLOAT
Definition ELF.h:886
@ EF_LOONGARCH_OBJABI_V0
Definition ELF.h:891
@ EF_LOONGARCH_ABI_DOUBLE_FLOAT
Definition ELF.h:887
@ EF_LOONGARCH_ABI_SOFT_FLOAT
Definition ELF.h:885
@ EF_LOONGARCH_ABI_MODIFIER_MASK
Definition ELF.h:888
Elf64_Xword Elf64_Relr
Definition ELF.h:1354
@ EF_XTENSA_MACH_NONE
Definition ELF.h:906
@ EF_XTENSA_MACH
Definition ELF.h:904
@ EF_XTENSA_XT_LIT
Definition ELF.h:908
@ EF_XTENSA_XT_INSN
Definition ELF.h:907
@ EF_CSKY_ABIV2
Definition ELF.h:867
@ EF_CSKY_807
Definition ELF.h:861
@ EF_CSKY_DSP
Definition ELF.h:866
@ EF_CSKY_802
Definition ELF.h:858
@ EF_CSKY_EFV3
Definition ELF.h:870
@ EF_CSKY_FLOAT
Definition ELF.h:865
@ EF_CSKY_801
Definition ELF.h:857
@ EF_CSKY_EFV1
Definition ELF.h:868
@ EF_CSKY_805
Definition ELF.h:860
@ EF_CSKY_860
Definition ELF.h:863
@ EF_CSKY_803
Definition ELF.h:859
@ EF_CSKY_810
Definition ELF.h:862
@ EF_CSKY_800
Definition ELF.h:864
@ EF_CSKY_EFV2
Definition ELF.h:869
@ NT_VERSION
Definition ELF.h:1551
@ NT_ARCH
Definition ELF.h:1552
@ NT_GNU_BUILD_ATTRIBUTE_OPEN
Definition ELF.h:1553
@ NT_GNU_BUILD_ATTRIBUTE_FUNC
Definition ELF.h:1554
int32_t Elf32_Sword
Definition ELF.h:36
@ RSS_GP0
Definition ELF.h:1272
@ RSS_LOC
Definition ELF.h:1273
@ RSS_GP
Definition ELF.h:1271
@ RSS_UNDEF
Definition ELF.h:1270
@ PT_LOAD
Definition ELF.h:1383
@ PT_TLS
Definition ELF.h:1389
@ PT_GNU_STACK
Definition ELF.h:1401
@ PT_OPENBSD_WXNEEDED
Definition ELF.h:1408
@ PT_HIOS
Definition ELF.h:1391
@ PT_OPENBSD_RANDOMIZE
Definition ELF.h:1407
@ PT_SHLIB
Definition ELF.h:1387
@ PT_GNU_PROPERTY
Definition ELF.h:1403
@ PT_INTERP
Definition ELF.h:1385
@ PT_OPENBSD_BOOTDATA
Definition ELF.h:1411
@ PT_LOPROC
Definition ELF.h:1392
@ PT_ARM_EXIDX
Definition ELF.h:1416
@ PT_SUNW_UNWIND
Definition ELF.h:1399
@ PT_GNU_RELRO
Definition ELF.h:1402
@ PT_HIPROC
Definition ELF.h:1393
@ PT_SUNW_EH_FRAME
Definition ELF.h:1398
@ PT_NOTE
Definition ELF.h:1386
@ PT_DYNAMIC
Definition ELF.h:1384
@ PT_MIPS_ABIFLAGS
Definition ELF.h:1425
@ PT_OPENBSD_NOBTCFI
Definition ELF.h:1409
@ PT_RISCV_ATTRIBUTES
Definition ELF.h:1428
@ PT_AARCH64_MEMTAG_MTE
Definition ELF.h:1419
@ PT_MIPS_OPTIONS
Definition ELF.h:1424
@ PT_NULL
Definition ELF.h:1382
@ PT_MIPS_RTPROC
Definition ELF.h:1423
@ PT_OPENBSD_MUTABLE
Definition ELF.h:1406
@ PT_ARM_UNWIND
Definition ELF.h:1417
@ PT_OPENBSD_SYSCALLS
Definition ELF.h:1410
@ PT_ARM_ARCHEXT
Definition ELF.h:1414
@ PT_LOOS
Definition ELF.h:1390
@ PT_GNU_EH_FRAME
Definition ELF.h:1397
@ PT_MIPS_REGINFO
Definition ELF.h:1422
@ PT_PHDR
Definition ELF.h:1388
@ PT_GNU_SFRAME
Definition ELF.h:1404
@ STT_FUNC
Definition ELF.h:1243
@ STT_NOTYPE
Definition ELF.h:1241
@ STT_LOPROC
Definition ELF.h:1251
@ STT_SECTION
Definition ELF.h:1244
@ STT_FILE
Definition ELF.h:1245
@ STT_COMMON
Definition ELF.h:1246
@ STT_GNU_IFUNC
Definition ELF.h:1248
@ STT_AMDGPU_HSA_KERNEL
Definition ELF.h:1255
@ STT_HIOS
Definition ELF.h:1250
@ STT_OBJECT
Definition ELF.h:1242
@ STT_LOOS
Definition ELF.h:1249
@ STT_TLS
Definition ELF.h:1247
@ STT_HIPROC
Definition ELF.h:1252
@ ELFABIVERSION_AMDGPU_HSA_V4
Definition ELF.h:192
@ ELFABIVERSION_AMDGPU_HSA_V5
Definition ELF.h:193
@ ELFABIVERSION_AMDGPU_HSA_V3
Definition ELF.h:191
@ ELFABIVERSION_AMDGPU_HSA_V6
Definition ELF.h:194
@ ELFABIVERSION_AMDGPU_HSA_V2
Definition ELF.h:190
LLVM_ABI uint16_t convertArchNameToEMachine(StringRef Arch)
Convert an architecture name into ELF's e_machine value.
Definition ELF.cpp:23
@ SHN_MIPS_TEXT
Definition ELF.h:394
@ SHN_MIPS_DATA
Definition ELF.h:395
@ SHN_MIPS_SUNDEFINED
Definition ELF.h:397
@ SHN_MIPS_SCOMMON
Definition ELF.h:396
@ SHN_MIPS_ACOMMON
Definition ELF.h:393
uint32_t Elf32_Addr
Definition ELF.h:32
@ EF_SPARC_HAL_R1
Definition ELF.h:560
@ EF_SPARC_32PLUS
Definition ELF.h:558
@ EF_SPARC_EXT_MASK
Definition ELF.h:557
@ EF_SPARCV9_MM
Definition ELF.h:564
@ EF_SPARCV9_RMO
Definition ELF.h:567
@ EF_SPARCV9_TSO
Definition ELF.h:565
@ EF_SPARCV9_PSO
Definition ELF.h:566
@ EF_SPARC_SUN_US1
Definition ELF.h:559
@ EF_SPARC_SUN_US3
Definition ELF.h:561
@ NT_PPC_TM_CVMX
Definition ELF.h:1580
@ NT_S390_GS_BC
Definition ELF.h:1603
@ NT_S390_PREFIX
Definition ELF.h:1596
@ NT_PPC_TM_CGPR
Definition ELF.h:1578
@ NT_PRPSINFO
Definition ELF.h:1561
@ NT_ARM_TAGGED_ADDR_CTRL
Definition ELF.h:1611
@ NT_PSTATUS
Definition ELF.h:1564
@ NT_ARM_ZA
Definition ELF.h:1613
@ NT_PPC_TAR
Definition ELF.h:1573
@ NT_PSINFO
Definition ELF.h:1566
@ NT_PPC_TM_CFPR
Definition ELF.h:1579
@ NT_X86_XSTATE
Definition ELF.h:1589
@ NT_FPREGSET
Definition ELF.h:1560
@ NT_S390_TODCMP
Definition ELF.h:1593
@ NT_S390_TDB
Definition ELF.h:1599
@ NT_S390_GS_CB
Definition ELF.h:1602
@ NT_PPC_TM_CDSCR
Definition ELF.h:1585
@ NT_PRXFPREG
Definition ELF.h:1620
@ NT_ARM_FPMR
Definition ELF.h:1615
@ NT_ARM_ZT
Definition ELF.h:1614
@ NT_PPC_VSX
Definition ELF.h:1572
@ NT_386_TLS
Definition ELF.h:1587
@ NT_ARM_HW_BREAK
Definition ELF.h:1607
@ NT_ARM_GCS
Definition ELF.h:1617
@ NT_PPC_TM_SPR
Definition ELF.h:1582
@ NT_ARM_SVE
Definition ELF.h:1609
@ NT_ARM_SSVE
Definition ELF.h:1612
@ NT_ARM_POE
Definition ELF.h:1616
@ NT_386_IOPERM
Definition ELF.h:1588
@ NT_ARM_VFP
Definition ELF.h:1605
@ NT_S390_HIGH_GPRS
Definition ELF.h:1591
@ NT_LWPSTATUS
Definition ELF.h:1567
@ NT_PPC_EBB
Definition ELF.h:1576
@ NT_S390_SYSTEM_CALL
Definition ELF.h:1598
@ NT_AUXV
Definition ELF.h:1563
@ NT_FPREGS
Definition ELF.h:1565
@ NT_PPC_TM_CVSX
Definition ELF.h:1581
@ NT_PPC_TM_CTAR
Definition ELF.h:1583
@ NT_PPC_DSCR
Definition ELF.h:1575
@ NT_S390_CTRS
Definition ELF.h:1595
@ NT_PPC_PMU
Definition ELF.h:1577
@ NT_TASKSTRUCT
Definition ELF.h:1562
@ NT_S390_TIMER
Definition ELF.h:1592
@ NT_PRSTATUS
Definition ELF.h:1559
@ NT_S390_TODPREG
Definition ELF.h:1594
@ NT_PPC_TM_CPPR
Definition ELF.h:1584
@ NT_ARM_HW_WATCH
Definition ELF.h:1608
@ NT_LWPSINFO
Definition ELF.h:1568
@ NT_SIGINFO
Definition ELF.h:1621
@ NT_WIN32PSTATUS
Definition ELF.h:1569
@ NT_S390_VXRS_LOW
Definition ELF.h:1600
@ NT_S390_LAST_BREAK
Definition ELF.h:1597
@ NT_ARM_PAC_MASK
Definition ELF.h:1610
@ NT_PPC_VMX
Definition ELF.h:1571
@ NT_ARM_TLS
Definition ELF.h:1606
@ NT_S390_VXRS_HIGH
Definition ELF.h:1601
@ NT_PPC_PPR
Definition ELF.h:1574
@ NT_FILE
Definition ELF.h:1619
@ STO_PPC64_LOCAL_MASK
Definition ELF.h:232
@ STO_PPC64_LOCAL_BIT
Definition ELF.h:231
@ EF_CUDA_SM21
Definition ELF.h:762
@ EF_CUDA_SM90
Definition ELF.h:781
@ EF_CUDA_SM86
Definition ELF.h:777
@ EF_CUDA_64BIT_ADDRESS
Definition ELF.h:795
@ EF_CUDA_SM60
Definition ELF.h:770
@ EF_CUDA_SM
Definition ELF.h:752
@ EF_CUDA_SM89
Definition ELF.h:780
@ EF_CUDA_SM37
Definition ELF.h:766
@ EF_CUDA_SM32
Definition ELF.h:764
@ EF_CUDA_SM72
Definition ELF.h:774
@ EF_CUDA_SM50
Definition ELF.h:767
@ EF_CUDA_ACCELERATORS
Definition ELF.h:805
@ EF_CUDA_SM121
Definition ELF.h:788
@ EF_CUDA_SM61
Definition ELF.h:771
@ EF_CUDA_SM_MASK
Definition ELF.h:755
@ EF_CUDA_SM52
Definition ELF.h:768
@ EF_CUDA_SM35
Definition ELF.h:765
@ EF_CUDA_SM120
Definition ELF.h:787
@ EF_CUDA_SW_FLAG_V2
Definition ELF.h:799
@ EF_CUDA_SM100
Definition ELF.h:782
@ EF_CUDA_SM62
Definition ELF.h:772
@ EF_CUDA_TEXMODE_INDEPENDANT
Definition ELF.h:793
@ EF_CUDA_SM101
Definition ELF.h:783
@ EF_CUDA_SM30
Definition ELF.h:763
@ EF_CUDA_SM_OFFSET
Definition ELF.h:758
@ EF_CUDA_ACCELERATORS_V1
Definition ELF.h:797
@ EF_CUDA_SM75
Definition ELF.h:775
@ EF_CUDA_SM103
Definition ELF.h:784
@ EF_CUDA_SM87
Definition ELF.h:778
@ EF_CUDA_SM20
Definition ELF.h:761
@ EF_CUDA_SM88
Definition ELF.h:779
@ EF_CUDA_SM80
Definition ELF.h:776
@ EF_CUDA_SM107
Definition ELF.h:785
@ EF_CUDA_VIRTUAL_SM
Definition ELF.h:802
@ EF_CUDA_SM53
Definition ELF.h:769
@ EF_CUDA_TEXMODE_UNIFIED
Definition ELF.h:791
@ EF_CUDA_SM70
Definition ELF.h:773
@ EF_CUDA_SM110
Definition ELF.h:786
@ ELFCLASS64
Definition ELF.h:142
@ ELFCLASSNONE
Definition ELF.h:140
@ ELFCLASS32
Definition ELF.h:141
@ VER_NDX_GLOBAL
Definition ELF.h:1539
@ VERSYM_VERSION
Definition ELF.h:1540
@ VER_NDX_LOCAL
Definition ELF.h:1538
@ VERSYM_HIDDEN
Definition ELF.h:1541
@ ET_CORE
Definition ELF.h:122
@ ET_NONE
Definition ELF.h:118
@ ET_HIPROC
Definition ELF.h:126
@ ET_DYN
Definition ELF.h:121
@ ET_LOOS
Definition ELF.h:123
@ ET_EXEC
Definition ELF.h:120
@ ET_LOPROC
Definition ELF.h:125
@ ET_REL
Definition ELF.h:119
@ ET_HIOS
Definition ELF.h:124
uint32_t Elf64_Word
Definition ELF.h:41
@ DF_SYMBOLIC
Definition ELF.h:1468
@ DF_ORIGIN
Definition ELF.h:1467
@ DF_STATIC_TLS
Definition ELF.h:1471
@ DF_TEXTREL
Definition ELF.h:1469
@ DF_BIND_NOW
Definition ELF.h:1470
@ STO_RISCV_VARIANT_CC
Definition ELF.h:541
@ GNU_PROPERTY_NO_COPY_ON_PROTECTED
Definition ELF.h:1668
@ GNU_PROPERTY_X86_UINT32_OR_LO
Definition ELF.h:1674
@ GNU_PROPERTY_RISCV_FEATURE_1_AND
Definition ELF.h:1672
@ GNU_PROPERTY_X86_FEATURE_1_AND
Definition ELF.h:1671
@ GNU_PROPERTY_X86_UINT32_OR_AND_LO
Definition ELF.h:1678
@ GNU_PROPERTY_X86_ISA_1_NEEDED
Definition ELF.h:1676
@ GNU_PROPERTY_X86_ISA_1_USED
Definition ELF.h:1680
@ GNU_PROPERTY_X86_FEATURE_2_USED
Definition ELF.h:1679
@ GNU_PROPERTY_X86_FEATURE_2_NEEDED
Definition ELF.h:1675
@ GNU_PROPERTY_AARCH64_FEATURE_PAUTH
Definition ELF.h:1670
@ GNU_PROPERTY_STACK_SIZE
Definition ELF.h:1667
@ GNU_PROPERTY_AARCH64_FEATURE_1_AND
Definition ELF.h:1669
@ GNU_PROPERTY_X86_FEATURE_1_SHSTK
Definition ELF.h:1718
@ GNU_PROPERTY_X86_FEATURE_2_ZMM
Definition ELF.h:1725
@ GNU_PROPERTY_X86_FEATURE_2_FXSR
Definition ELF.h:1726
@ GNU_PROPERTY_X86_FEATURE_2_X86
Definition ELF.h:1720
@ GNU_PROPERTY_X86_ISA_1_V4
Definition ELF.h:1734
@ GNU_PROPERTY_X86_ISA_1_BASELINE
Definition ELF.h:1731
@ GNU_PROPERTY_X86_ISA_1_V2
Definition ELF.h:1732
@ GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT
Definition ELF.h:1728
@ GNU_PROPERTY_X86_FEATURE_2_XMM
Definition ELF.h:1723
@ GNU_PROPERTY_X86_FEATURE_2_YMM
Definition ELF.h:1724
@ GNU_PROPERTY_X86_FEATURE_2_XSAVE
Definition ELF.h:1727
@ GNU_PROPERTY_X86_ISA_1_V3
Definition ELF.h:1733
@ GNU_PROPERTY_X86_FEATURE_2_X87
Definition ELF.h:1721
@ GNU_PROPERTY_X86_FEATURE_2_MMX
Definition ELF.h:1722
@ GNU_PROPERTY_X86_FEATURE_2_XSAVEC
Definition ELF.h:1729
@ GNU_PROPERTY_X86_FEATURE_1_IBT
Definition ELF.h:1717
@ NT_ANDROID_TYPE_KUSER
Definition ELF.h:1643
@ NT_ANDROID_TYPE_IDENT
Definition ELF.h:1642
@ NT_ANDROID_TYPE_MEMTAG
Definition ELF.h:1644
@ EF_AVR_ARCH_XMEGA1
Definition ELF.h:310
@ EF_AVR_ARCH_AVR35
Definition ELF.h:304
@ EF_AVR_ARCH_AVR51
Definition ELF.h:307
@ EF_AVR_ARCH_AVR1
Definition ELF.h:299
@ EF_AVR_ARCH_AVRTINY
Definition ELF.h:309
@ EF_AVR_ARCH_XMEGA3
Definition ELF.h:312
@ EF_AVR_ARCH_XMEGA5
Definition ELF.h:314
@ EF_AVR_ARCH_AVR6
Definition ELF.h:308
@ EF_AVR_ARCH_AVR2
Definition ELF.h:300
@ EF_AVR_ARCH_XMEGA2
Definition ELF.h:311
@ EF_AVR_LINKRELAX_PREPARED
Definition ELF.h:320
@ EF_AVR_ARCH_XMEGA7
Definition ELF.h:316
@ EF_AVR_ARCH_XMEGA6
Definition ELF.h:315
@ EF_AVR_ARCH_AVR5
Definition ELF.h:306
@ EF_AVR_ARCH_MASK
Definition ELF.h:318
@ EF_AVR_ARCH_AVR25
Definition ELF.h:301
@ EF_AVR_ARCH_AVR3
Definition ELF.h:302
@ EF_AVR_ARCH_XMEGA4
Definition ELF.h:313
@ EF_AVR_ARCH_AVR31
Definition ELF.h:303
@ EF_AVR_ARCH_AVR4
Definition ELF.h:305
@ RHS_NO_LIBRARY_REPLACEMENT
Definition ELF.h:1510
@ RHF_REQUICKSTART
Definition ELF.h:1522
@ RHF_PIXIE
Definition ELF.h:1520
@ RHF_GUARANTEE_START_INIT
Definition ELF.h:1517
@ RHF_RLD_ORDER_SAFE
Definition ELF.h:1527
@ RHF_NO_UNRES_UNDEF
Definition ELF.h:1525
@ RHF_SGI_ONLY
Definition ELF.h:1512
@ RHF_QUICKSTART
Definition ELF.h:1508
@ RHF_GUARANTEE_INIT
Definition ELF.h:1513
@ RHF_NONE
Definition ELF.h:1507
@ RHF_DELTA_C_PLUS_PLUS
Definition ELF.h:1516
@ RHF_REQUICKSTARTED
Definition ELF.h:1523
@ RHF_NOTPOT
Definition ELF.h:1509
@ RHF_NO_MOVE
Definition ELF.h:1511
@ RHF_CORD
Definition ELF.h:1524
@ RHF_DEFAULT_DELAY_LOAD
Definition ELF.h:1521
@ EF_AMDGPU_GENERIC_VERSION_MAX
Definition ELF.h:741
@ EF_AMDGPU_FEATURE_XNACK_ANY_V4
Definition ELF.h:718
@ EF_AMDGPU_FEATURE_SRAMECC_V3
Definition ELF.h:709
@ EF_AMDGPU_GENERIC_VERSION_OFFSET
Definition ELF.h:739
@ EF_AMDGPU_FEATURE_SRAMECC_UNSUPPORTED_V4
Definition ELF.h:729
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X56
Definition ELF.h:680
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X57
Definition ELF.h:681
@ EF_AMDGPU_MACH_AMDGCN_LAST
Definition ELF.h:687
@ EF_AMDGPU_MACH_R600_RESERVED_LAST
Definition ELF.h:672
@ EF_AMDGPU_FEATURE_SRAMECC_OFF_V4
Definition ELF.h:733
@ EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4
Definition ELF.h:716
@ EF_AMDGPU_MACH_R600_LAST
Definition ELF.h:674
@ EF_AMDGPU_MACH_R600_RESERVED_FIRST
Definition ELF.h:671
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27
Definition ELF.h:676
@ EF_AMDGPU_FEATURE_TRAP_HANDLER_V2
Definition ELF.h:698
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4B
Definition ELF.h:678
@ EF_AMDGPU_MACH_AMDGCN_FIRST
Definition ELF.h:686
@ EF_AMDGPU_FEATURE_XNACK_OFF_V4
Definition ELF.h:720
@ EF_AMDGPU_FEATURE_XNACK_V3
Definition ELF.h:704
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X61
Definition ELF.h:683
@ EF_AMDGPU_FEATURE_XNACK_V4
Definition ELF.h:714
@ EF_AMDGPU_GENERIC_VERSION_MIN
Definition ELF.h:740
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X40
Definition ELF.h:677
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X4D
Definition ELF.h:679
@ EF_AMDGPU_FEATURE_SRAMECC_V4
Definition ELF.h:727
@ EF_AMDGPU_FEATURE_XNACK_ON_V4
Definition ELF.h:722
@ EF_AMDGPU_MACH
Definition ELF.h:660
@ EF_AMDGPU_MACH_NONE
Definition ELF.h:663
@ EF_AMDGPU_MACH_AMDGCN_RESERVED_0X60
Definition ELF.h:682
@ EF_AMDGPU_MACH_R600_FIRST
Definition ELF.h:673
@ EF_AMDGPU_FEATURE_SRAMECC_ANY_V4
Definition ELF.h:731
@ EF_AMDGPU_FEATURE_XNACK_V2
Definition ELF.h:693
@ EF_AMDGPU_FEATURE_SRAMECC_ON_V4
Definition ELF.h:735
@ EF_AMDGPU_GENERIC_VERSION
Definition ELF.h:738
uint16_t Elf32_Half
Definition ELF.h:34
@ EF_ARM_EABI_UNKNOWN
Definition ELF.h:262
@ EF_ARM_ABI_FLOAT_HARD
Definition ELF.h:260
@ EF_ARM_EABIMASK
Definition ELF.h:268
@ EF_ARM_BE8
Definition ELF.h:261
@ EF_ARM_EABI_VER1
Definition ELF.h:263
@ EF_ARM_SOFT_FLOAT
Definition ELF.h:257
@ EF_ARM_EABI_VER4
Definition ELF.h:266
@ EF_ARM_VFP_FLOAT
Definition ELF.h:259
@ EF_ARM_ABI_FLOAT_SOFT
Definition ELF.h:258
@ EF_ARM_EABI_VER3
Definition ELF.h:265
@ EF_ARM_EABI_VER2
Definition ELF.h:264
@ EF_ARM_EABI_VER5
Definition ELF.h:267
@ VER_NEED_NONE
Definition ELF.h:1545
@ VER_NEED_CURRENT
Definition ELF.h:1545
@ ODK_TAGS
Definition ELF.h:422
@ ODK_GP_GROUP
Definition ELF.h:425
@ ODK_PAD
Definition ELF.h:419
@ ODK_NULL
Definition ELF.h:416
@ ODK_EXCEPTIONS
Definition ELF.h:418
@ ODK_PAGESIZE
Definition ELF.h:427
@ ODK_HWPATCH
Definition ELF.h:420
@ ODK_HWOR
Definition ELF.h:424
@ ODK_REGINFO
Definition ELF.h:417
@ ODK_IDENT
Definition ELF.h:426
@ ODK_HWAND
Definition ELF.h:423
@ ODK_FILL
Definition ELF.h:421
@ ELFABIVERSION_CUDA_V2
Definition ELF.h:200
@ ELFABIVERSION_CUDA_V1
Definition ELF.h:199
@ SYMENTRY_SIZE32
Definition ELF.h:1223
@ SYMENTRY_SIZE64
Definition ELF.h:1224
Elf32_Word Elf32_Relr
Definition ELF.h:1310
@ RELOCATION_GROUPED_BY_OFFSET_DELTA_FLAG
Definition ELF.h:1837
@ RELOCATION_GROUPED_BY_INFO_FLAG
Definition ELF.h:1836
@ RELOCATION_GROUPED_BY_ADDEND_FLAG
Definition ELF.h:1838
@ RELOCATION_GROUP_HAS_ADDEND_FLAG
Definition ELF.h:1839
@ EF_RISCV_RVE
Definition ELF.h:526
@ EF_RISCV_FLOAT_ABI_SOFT
Definition ELF.h:522
@ EF_RISCV_RVC
Definition ELF.h:520
@ EF_RISCV_TSO
Definition ELF.h:527
@ EF_RISCV_FLOAT_ABI_SINGLE
Definition ELF.h:523
@ EF_RISCV_FLOAT_ABI
Definition ELF.h:521
@ EF_RISCV_FLOAT_ABI_DOUBLE
Definition ELF.h:524
@ EF_RISCV_FLOAT_ABI_QUAD
Definition ELF.h:525
LLVM_ABI StringRef convertEMachineToArchName(uint16_t EMachine)
Convert an ELF's e_machine value into an architecture name.
Definition ELF.cpp:96
@ NT_MEMTAG_LEVEL_MASK
Definition ELF.h:1658
@ NT_MEMTAG_LEVEL_ASYNC
Definition ELF.h:1656
@ NT_MEMTAG_STACK
Definition ELF.h:1662
@ NT_MEMTAG_LEVEL_NONE
Definition ELF.h:1655
@ NT_MEMTAG_LEVEL_SYNC
Definition ELF.h:1657
@ NT_MEMTAG_HEAP
Definition ELF.h:1661
@ NT_AMD_HSA_ISA_NAME
Definition ELF.h:1806
@ NT_AMD_HSA_ISA_VERSION
Definition ELF.h:1803
@ NT_AMD_HSA_CODE_OBJECT_VERSION
Definition ELF.h:1801
@ NT_AMD_HSA_METADATA
Definition ELF.h:1805
@ NT_AMD_PAL_METADATA
Definition ELF.h:1807
@ NT_AMD_HSA_HSAIL
Definition ELF.h:1802
@ NT_FREEBSD_PROCSTAT_PROC
Definition ELF.h:1765
@ NT_FREEBSD_THRMISC
Definition ELF.h:1764
@ NT_FREEBSD_PROCSTAT_UMASK
Definition ELF.h:1769
@ NT_FREEBSD_PROCSTAT_FILES
Definition ELF.h:1766
@ NT_FREEBSD_PROCSTAT_GROUPS
Definition ELF.h:1768
@ NT_FREEBSD_PROCSTAT_OSREL
Definition ELF.h:1771
@ NT_FREEBSD_PROCSTAT_RLIMIT
Definition ELF.h:1770
@ NT_FREEBSD_PROCSTAT_AUXV
Definition ELF.h:1773
@ NT_FREEBSD_PROCSTAT_PSSTRINGS
Definition ELF.h:1772
@ NT_FREEBSD_PROCSTAT_VMMAP
Definition ELF.h:1767
@ GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_FUNC_SIG
Definition ELF.h:1741
@ GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED
Definition ELF.h:1739
@ GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS
Definition ELF.h:1740
uint32_t Elf32_Off
Definition ELF.h:33
@ NT_OPENBSD_XFPREGS
Definition ELF.h:1789
@ NT_OPENBSD_AUXV
Definition ELF.h:1786
@ NT_OPENBSD_WCOOKIE
Definition ELF.h:1790
@ NT_OPENBSD_PROCINFO
Definition ELF.h:1785
@ NT_OPENBSD_PACMASK
Definition ELF.h:1791
@ NT_OPENBSD_FPREGS
Definition ELF.h:1788
@ NT_OPENBSD_REGS
Definition ELF.h:1787
@ GRP_MASKPROC
Definition ELF.h:1172
@ GRP_COMDAT
Definition ELF.h:1170
@ GRP_MASKOS
Definition ELF.h:1171
@ STO_AARCH64_VARIANT_PCS
Definition ELF.h:252
@ EF_ARC_MACH_MSK
Definition ELF.h:278
@ E_ARC_MACH_ARC600
Definition ELF.h:280
@ E_ARC_MACH_ARC700
Definition ELF.h:282
@ E_ARC_OSABI_V2
Definition ELF.h:286
@ E_ARC_MACH_ARC601
Definition ELF.h:281
@ E_ARC_OSABI_V4
Definition ELF.h:288
@ EF_ARC_PIC
Definition ELF.h:289
@ EF_ARC_OSABI_MSK
Definition ELF.h:279
@ EF_ARC_CPU_ARCV2EM
Definition ELF.h:283
@ E_ARC_OSABI_ORIG
Definition ELF.h:285
@ EF_ARC_CPU_ARCV2HS
Definition ELF.h:284
@ E_ARC_OSABI_V3
Definition ELF.h:287
LLVM_ABI uint8_t convertNameToOSABI(StringRef Name)
Definition ELF.cpp:102
@ VER_DEF_NONE
Definition ELF.h:1531
@ VER_DEF_CURRENT
Definition ELF.h:1531
@ STV_INTERNAL
Definition ELF.h:1260
@ STV_HIDDEN
Definition ELF.h:1261
@ STV_PROTECTED
Definition ELF.h:1262
@ STV_DEFAULT
Definition ELF.h:1259
@ PN_XNUM
Definition ELF.h:946
@ GNU_ABI_TAG_HURD
Definition ELF.h:1825
@ GNU_ABI_TAG_SYLLABLE
Definition ELF.h:1829
@ GNU_ABI_TAG_FREEBSD
Definition ELF.h:1827
@ GNU_ABI_TAG_SOLARIS
Definition ELF.h:1826
@ GNU_ABI_TAG_LINUX
Definition ELF.h:1824
@ GNU_ABI_TAG_NETBSD
Definition ELF.h:1828
This is an optimization pass for GlobalISel generic memory operations.
@ Other
Any other memory.
Definition ModRef.h:68
Elf32_Word ch_addralign
Definition ELF.h:1846
Elf32_Word ch_size
Definition ELF.h:1845
Elf32_Word ch_type
Definition ELF.h:1844
Elf32_Word d_val
Definition ELF.h:1444
Elf32_Sword d_tag
Definition ELF.h:1442
Elf32_Addr d_ptr
Definition ELF.h:1445
union llvm::ELF::Elf32_Dyn::@365150167145303132247061127261023262200267271111 d_un
unsigned char e_ident[EI_NIDENT]
Definition ELF.h:65
Elf32_Half e_phnum
Definition ELF.h:75
Elf32_Half e_shstrndx
Definition ELF.h:78
Elf32_Word e_flags
Definition ELF.h:72
Elf32_Off e_phoff
Definition ELF.h:70
Elf32_Half e_shnum
Definition ELF.h:77
unsigned char getFileClass() const
Definition ELF.h:84
Elf32_Half e_machine
Definition ELF.h:67
Elf32_Half e_shentsize
Definition ELF.h:76
Elf32_Off e_shoff
Definition ELF.h:71
Elf32_Word e_version
Definition ELF.h:68
Elf32_Addr e_entry
Definition ELF.h:69
bool checkMagic() const
Definition ELF.h:80
Elf32_Half e_ehsize
Definition ELF.h:73
Elf32_Half e_phentsize
Definition ELF.h:74
unsigned char getDataEncoding() const
Definition ELF.h:85
Elf32_Half e_type
Definition ELF.h:66
Elf32_Word n_descsz
Definition ELF.h:1860
Elf32_Word n_namesz
Definition ELF.h:1859
Elf32_Word n_type
Definition ELF.h:1861
Elf32_Addr p_paddr
Definition ELF.h:1361
Elf32_Addr p_vaddr
Definition ELF.h:1360
Elf32_Word p_filesz
Definition ELF.h:1362
Elf32_Word p_flags
Definition ELF.h:1364
Elf32_Word p_memsz
Definition ELF.h:1363
Elf32_Off p_offset
Definition ELF.h:1359
Elf32_Word p_align
Definition ELF.h:1365
Elf32_Word p_type
Definition ELF.h:1358
Elf32_Addr r_offset
Definition ELF.h:1278
void setType(unsigned char t)
Definition ELF.h:1286
unsigned char getType() const
Definition ELF.h:1284
void setSymbolAndType(Elf32_Word s, unsigned char t)
Definition ELF.h:1287
Elf32_Word getSymbol() const
Definition ELF.h:1283
void setSymbol(Elf32_Word s)
Definition ELF.h:1285
Elf32_Word r_info
Definition ELF.h:1279
void setType(unsigned char t)
Definition ELF.h:1303
Elf32_Word r_info
Definition ELF.h:1295
Elf32_Addr r_offset
Definition ELF.h:1294
Elf32_Word getSymbol() const
Definition ELF.h:1300
void setSymbol(Elf32_Word s)
Definition ELF.h:1302
Elf32_Sword r_addend
Definition ELF.h:1296
void setSymbolAndType(Elf32_Word s, unsigned char t)
Definition ELF.h:1304
unsigned char getType() const
Definition ELF.h:1301
Elf32_Word sh_entsize
Definition ELF.h:929
Elf32_Word sh_flags
Definition ELF.h:922
Elf32_Word sh_info
Definition ELF.h:927
Elf32_Word sh_type
Definition ELF.h:921
Elf32_Word sh_name
Definition ELF.h:920
Elf32_Addr sh_addr
Definition ELF.h:923
Elf32_Word sh_addralign
Definition ELF.h:928
Elf32_Word sh_size
Definition ELF.h:925
Elf32_Word sh_link
Definition ELF.h:926
Elf32_Off sh_offset
Definition ELF.h:924
Elf32_Addr st_value
Definition ELF.h:1184
unsigned char st_other
Definition ELF.h:1187
void setBinding(unsigned char b)
Definition ELF.h:1194
void setType(unsigned char t)
Definition ELF.h:1195
Elf32_Word st_name
Definition ELF.h:1183
unsigned char st_info
Definition ELF.h:1186
unsigned char getType() const
Definition ELF.h:1193
void setBindingAndType(unsigned char b, unsigned char t)
Definition ELF.h:1196
Elf32_Half st_shndx
Definition ELF.h:1188
Elf32_Word st_size
Definition ELF.h:1185
unsigned char getBinding() const
Definition ELF.h:1192
Elf64_Word ch_reserved
Definition ELF.h:1852
Elf64_Xword ch_size
Definition ELF.h:1853
Elf64_Word ch_type
Definition ELF.h:1851
Elf64_Xword ch_addralign
Definition ELF.h:1854
Elf64_Sxword d_tag
Definition ELF.h:1451
Elf64_Xword d_val
Definition ELF.h:1453
union llvm::ELF::Elf64_Dyn::@160202041275240045172376233056026315374254314112 d_un
Elf64_Addr d_ptr
Definition ELF.h:1454
Elf64_Off e_phoff
Definition ELF.h:96
Elf64_Off e_shoff
Definition ELF.h:97
Elf64_Addr e_entry
Definition ELF.h:95
unsigned char getFileClass() const
Definition ELF.h:110
unsigned char e_ident[EI_NIDENT]
Definition ELF.h:91
Elf64_Word e_version
Definition ELF.h:94
unsigned char getDataEncoding() const
Definition ELF.h:111
Elf64_Half e_phentsize
Definition ELF.h:100
Elf64_Word e_flags
Definition ELF.h:98
Elf64_Half e_shnum
Definition ELF.h:103
Elf64_Half e_ehsize
Definition ELF.h:99
bool checkMagic() const
Definition ELF.h:106
Elf64_Half e_type
Definition ELF.h:92
Elf64_Half e_machine
Definition ELF.h:93
Elf64_Half e_shstrndx
Definition ELF.h:104
Elf64_Half e_shentsize
Definition ELF.h:102
Elf64_Half e_phnum
Definition ELF.h:101
Elf64_Word n_namesz
Definition ELF.h:1866
Elf64_Word n_descsz
Definition ELF.h:1867
Elf64_Word n_type
Definition ELF.h:1868
Elf64_Addr p_vaddr
Definition ELF.h:1373
Elf64_Xword p_filesz
Definition ELF.h:1375
Elf64_Off p_offset
Definition ELF.h:1372
Elf64_Addr p_paddr
Definition ELF.h:1374
Elf64_Word p_type
Definition ELF.h:1370
Elf64_Word p_flags
Definition ELF.h:1371
Elf64_Xword p_align
Definition ELF.h:1377
Elf64_Xword p_memsz
Definition ELF.h:1376
void setType(Elf64_Word t)
Definition ELF.h:1322
void setSymbol(Elf64_Word s)
Definition ELF.h:1321
Elf64_Xword r_info
Definition ELF.h:1315
Elf64_Addr r_offset
Definition ELF.h:1314
Elf64_Word getType() const
Definition ELF.h:1320
Elf64_Word getSymbol() const
Definition ELF.h:1319
void setSymbolAndType(Elf64_Word s, Elf64_Word t)
Definition ELF.h:1323
Elf64_Word getType() const
Definition ELF.h:1337
void setSymbolAndType(Elf64_Word s, Elf64_Word t)
Definition ELF.h:1340
Elf64_Sxword r_addend
Definition ELF.h:1332
Elf64_Xword r_info
Definition ELF.h:1331
Elf64_Addr r_offset
Definition ELF.h:1330
void setSymbol(Elf64_Word s)
Definition ELF.h:1338
Elf64_Word getSymbol() const
Definition ELF.h:1336
void setType(Elf64_Word t)
Definition ELF.h:1339
Elf64_Off sh_offset
Definition ELF.h:938
Elf64_Xword sh_size
Definition ELF.h:939
Elf64_Word sh_link
Definition ELF.h:940
Elf64_Xword sh_addralign
Definition ELF.h:942
Elf64_Xword sh_flags
Definition ELF.h:936
Elf64_Xword sh_entsize
Definition ELF.h:943
Elf64_Word sh_type
Definition ELF.h:935
Elf64_Word sh_info
Definition ELF.h:941
Elf64_Word sh_name
Definition ELF.h:934
Elf64_Addr sh_addr
Definition ELF.h:937
Elf64_Addr st_value
Definition ELF.h:1207
unsigned char st_info
Definition ELF.h:1204
Elf64_Word st_name
Definition ELF.h:1203
Elf64_Xword st_size
Definition ELF.h:1208
void setBinding(unsigned char b)
Definition ELF.h:1214
void setType(unsigned char t)
Definition ELF.h:1215
void setBindingAndType(unsigned char b, unsigned char t)
Definition ELF.h:1216
Elf64_Half st_shndx
Definition ELF.h:1206
unsigned char st_other
Definition ELF.h:1205
unsigned char getType() const
Definition ELF.h:1213
unsigned char getBinding() const
Definition ELF.h:1212
uint32_t r_type
Definition ELF.h:1349
std::conditional_t< Is64, uint64_t, uint32_t > r_offset
Definition ELF.h:1347
std::conditional_t< Is64, int64_t, int32_t > r_addend
Definition ELF.h:1350
uint32_t r_symidx
Definition ELF.h:1348