UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
syms_elf.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2/* date = May 11th 2021 4:54 pm */
3
4#ifndef SYMS_ELF_H
5#define SYMS_ELF_H
6
8//~ NOTE(nick): Generated
9
11
13//~ rjf: Elf File Header Types
14
27
46
65
80
95
108
121
123//~ NOTE(allen): Auxiliary Vectors
124
125// these appear in /proc/<pid>/auxv of a process, they are not in elf files
126
131
136
138//~ NOTE(allen): Dynamic Structures
139
140// these appear in the virtual address space of a process, they are not in elf files
141
146
151
158
165
167// Imports and Exports
168
169typedef struct
170{
171 SYMS_U32 st_name; // Holds index into files string table.
172 SYMS_U32 st_value; // Depending on the context, this may be address, size, etc.
173 SYMS_U32 st_size; // Data size in bytes. Zero when size is unknown.
174 SYMS_U8 st_info; // Contains symbols type and binding.
175 SYMS_U8 st_other; // Reserved for future use, currenly zero.
176 SYMS_U16 st_shndx; // Section index to which symbol is relevant.
178
188
189#define SYMS_ELF_ST_INFO(b,t) (((b) << 4) + ((t) & 0xF))
190#define SYMS_ELF_ST_BIND(x) ((x) >> 4)
191#define SYMS_ELF_ST_TYPE(x) ((x) & 0xF)
192#define SYMS_ELF_ST_VISIBILITY(v) ((v) & 0x3)
193
199
206
212
219
220#define SYMS_ELF32_R_SYM(x) ((x) >> 8)
221#define SYMS_ELF32_R_TYPE(x) ((x) & 0xFF)
222
223#define SYMS_ELF64_R_INFO(s,t) (((SYMS_U64)(s) << 32) | (SYMS_U64)t)
224#define SYMS_ELF64_R_SYM(x) ((x) >> 32)
225#define SYMS_ELF64_R_TYPE(x) ((x) & 0xffffffff)
226
227// This flag is set to indicate that symbol is not available outside the shared object
228#define SYMS_ELF_EXTERNAL_VERSYM_HIDDEN 0x8000
229#define SYMS_ELF_EXTERNAL_VERSYM_MASK 0x7FFF
230
231// Appears in .gnu.verdef (SHT_GNU_verdef)
242
243// Appears in .gnu.verdef (SHT_GNU_verdef)
249
250// Appears in .gnu.verneed (SHT_GNU_verneed)
259
260// Appears in .gnu.verneed (SHT_GNU_verneed)
269
270// Appears in .gnu.version (SHT_GNU_versym)
271typedef struct
272{
275
276typedef struct
277{
281 // name + desc
282 // SYMS_U8 data[1];
284
286// Extensions
287
301
308
316
318
320//~ rjf: 32 => 64 bit conversions
321
322// TODO(allen): avoid extra copies (use pointers where convenient)
330// TODO(allen): auxv?
331// TODO(allen): linkmap?
332
334//~ rjf: .gnu_debuglink section 32-bit CRC
335
337
339
340#endif // SYMS_ELF_H
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition syms_elf.h:127
SYMS_U32 a_type
Definition syms_elf.h:128
SYMS_U32 a_val
Definition syms_elf.h:129
Definition syms_elf.h:132
SYMS_U64 a_type
Definition syms_elf.h:133
SYMS_U64 a_val
Definition syms_elf.h:134
Definition syms_elf.h:303
SYMS_U32 ch_addr_align
Definition syms_elf.h:306
SYMS_U32 ch_size
Definition syms_elf.h:305
SYMS_U32 ch_type
Definition syms_elf.h:304
Definition syms_elf.h:310
SYMS_U64 ch_addr_align
Definition syms_elf.h:314
SYMS_U64 ch_size
Definition syms_elf.h:313
SYMS_U32 ch_type
Definition syms_elf.h:311
SYMS_U32 ch_reserved
Definition syms_elf.h:312
Definition syms_elf.h:142
SYMS_U32 tag
Definition syms_elf.h:143
SYMS_U32 val
Definition syms_elf.h:144
Definition syms_elf.h:147
SYMS_U64 tag
Definition syms_elf.h:148
SYMS_U64 val
Definition syms_elf.h:149
Definition syms_elf.h:49
SYMS_U32 e_version
Definition syms_elf.h:53
SYMS_U32 e_phoff
Definition syms_elf.h:55
SYMS_U16 e_shnum
Definition syms_elf.h:62
SYMS_U32 e_shoff
Definition syms_elf.h:56
SYMS_U16 e_type
Definition syms_elf.h:51
SYMS_U16 e_shstrndx
Definition syms_elf.h:63
SYMS_U16 e_ehsize
Definition syms_elf.h:58
SYMS_U16 e_machine
Definition syms_elf.h:52
SYMS_U32 e_flags
Definition syms_elf.h:57
SYMS_U8 e_ident[SYMS_ElfIdentifier_NIDENT]
Definition syms_elf.h:50
SYMS_U32 e_entry
Definition syms_elf.h:54
SYMS_U16 e_shentsize
Definition syms_elf.h:61
SYMS_U16 e_phentsize
Definition syms_elf.h:59
SYMS_U16 e_phnum
Definition syms_elf.h:60
Definition syms_elf.h:30
SYMS_U64 e_shoff
Definition syms_elf.h:37
SYMS_U64 e_entry
Definition syms_elf.h:35
SYMS_U64 e_phoff
Definition syms_elf.h:36
SYMS_U16 e_shstrndx
Definition syms_elf.h:44
SYMS_U16 e_ehsize
Definition syms_elf.h:39
SYMS_U16 e_phnum
Definition syms_elf.h:41
SYMS_U8 e_ident[SYMS_ElfIdentifier_NIDENT]
Definition syms_elf.h:31
SYMS_U16 e_machine
Definition syms_elf.h:33
SYMS_U16 e_type
Definition syms_elf.h:32
SYMS_U32 e_flags
Definition syms_elf.h:38
SYMS_U16 e_shentsize
Definition syms_elf.h:42
SYMS_U16 e_phentsize
Definition syms_elf.h:40
SYMS_U32 e_version
Definition syms_elf.h:34
SYMS_U16 e_shnum
Definition syms_elf.h:43
Definition syms_elf.h:245
SYMS_U32 vda_next
Definition syms_elf.h:247
SYMS_U32 vda_name
Definition syms_elf.h:246
Definition syms_elf.h:233
SYMS_U16 vd_ndx
Definition syms_elf.h:236
SYMS_U16 vd_version
Definition syms_elf.h:234
SYMS_U16 vd_flags
Definition syms_elf.h:235
SYMS_U32 vd_hash
Definition syms_elf.h:238
SYMS_U32 vd_aux
Definition syms_elf.h:239
SYMS_U16 vd_cnt
Definition syms_elf.h:237
SYMS_U32 vd_next
Definition syms_elf.h:240
Definition syms_elf.h:262
SYMS_U32 vna_hash
Definition syms_elf.h:263
SYMS_U32 vna_name
Definition syms_elf.h:266
SYMS_U16 vna_other
Definition syms_elf.h:265
SYMS_U32 vna_next
Definition syms_elf.h:267
SYMS_U16 vna_flags
Definition syms_elf.h:264
Definition syms_elf.h:252
SYMS_U16 vn_version
Definition syms_elf.h:253
SYMS_U16 vn_cnt
Definition syms_elf.h:254
SYMS_U32 vn_next
Definition syms_elf.h:257
SYMS_U32 vn_file
Definition syms_elf.h:255
SYMS_U32 vn_aux
Definition syms_elf.h:256
Definition syms_elf.h:272
SYMS_U16 vs_vers
Definition syms_elf.h:273
Definition syms_elf.h:152
SYMS_U32 name
Definition syms_elf.h:154
SYMS_U32 ld
Definition syms_elf.h:155
SYMS_U32 base
Definition syms_elf.h:153
SYMS_U32 next
Definition syms_elf.h:156
Definition syms_elf.h:159
SYMS_U64 next
Definition syms_elf.h:163
SYMS_U64 base
Definition syms_elf.h:160
SYMS_U64 ld
Definition syms_elf.h:162
SYMS_U64 name
Definition syms_elf.h:161
Definition syms_elf.h:277
SYMS_U32 name_size
Definition syms_elf.h:278
SYMS_U32 type
Definition syms_elf.h:280
SYMS_U32 desc_size
Definition syms_elf.h:279
Definition syms_elf.h:111
SYMS_U32 p_vaddr
Definition syms_elf.h:114
SYMS_U32 p_flags
Definition syms_elf.h:118
SYMS_U32 p_filesz
Definition syms_elf.h:116
SYMS_U32 p_paddr
Definition syms_elf.h:115
SYMS_U32 p_align
Definition syms_elf.h:119
SYMS_U32 p_type
Definition syms_elf.h:112
SYMS_U32 p_offset
Definition syms_elf.h:113
SYMS_U32 p_memsz
Definition syms_elf.h:117
Definition syms_elf.h:98
SYMS_U32 p_flags
Definition syms_elf.h:100
SYMS_U64 p_align
Definition syms_elf.h:106
SYMS_U64 p_offset
Definition syms_elf.h:101
SYMS_U32 p_type
Definition syms_elf.h:99
SYMS_U64 p_memsz
Definition syms_elf.h:105
SYMS_U64 p_vaddr
Definition syms_elf.h:102
SYMS_U64 p_filesz
Definition syms_elf.h:104
SYMS_U64 p_paddr
Definition syms_elf.h:103
Definition syms_elf.h:195
SYMS_U32 r_info
Definition syms_elf.h:197
SYMS_U32 r_offset
Definition syms_elf.h:196
Definition syms_elf.h:208
SYMS_U64 r_offset
Definition syms_elf.h:209
SYMS_U64 r_info
Definition syms_elf.h:210
Definition syms_elf.h:201
SYMS_U32 r_info
Definition syms_elf.h:203
SYMS_U32 r_offset
Definition syms_elf.h:202
SYMS_S32 r_addend
Definition syms_elf.h:204
Definition syms_elf.h:214
SYMS_U64 r_info
Definition syms_elf.h:216
SYMS_U64 r_offset
Definition syms_elf.h:215
SYMS_S64 r_addend
Definition syms_elf.h:217
Definition syms_elf.h:83
SYMS_U32 sh_addr
Definition syms_elf.h:87
SYMS_U32 sh_info
Definition syms_elf.h:91
SYMS_U32 sh_entsize
Definition syms_elf.h:93
SYMS_U32 sh_link
Definition syms_elf.h:90
SYMS_U32 sh_flags
Definition syms_elf.h:86
SYMS_U32 sh_type
Definition syms_elf.h:85
SYMS_U32 sh_offset
Definition syms_elf.h:88
SYMS_U32 sh_addralign
Definition syms_elf.h:92
SYMS_U32 sh_size
Definition syms_elf.h:89
SYMS_U32 sh_name
Definition syms_elf.h:84
Definition syms_elf.h:68
SYMS_U64 sh_flags
Definition syms_elf.h:71
SYMS_U64 sh_size
Definition syms_elf.h:74
SYMS_U32 sh_name
Definition syms_elf.h:69
SYMS_U32 sh_type
Definition syms_elf.h:70
SYMS_U32 sh_info
Definition syms_elf.h:76
SYMS_U64 sh_addr
Definition syms_elf.h:72
SYMS_U32 sh_link
Definition syms_elf.h:75
SYMS_U64 sh_offset
Definition syms_elf.h:73
SYMS_U64 sh_addralign
Definition syms_elf.h:77
SYMS_U64 sh_entsize
Definition syms_elf.h:78
Definition syms_elf.h:170
SYMS_U8 st_info
Definition syms_elf.h:174
SYMS_U32 st_size
Definition syms_elf.h:173
SYMS_U32 st_value
Definition syms_elf.h:172
SYMS_U16 st_shndx
Definition syms_elf.h:176
SYMS_U8 st_other
Definition syms_elf.h:175
SYMS_U32 st_name
Definition syms_elf.h:171
Definition syms_elf.h:180
SYMS_U16 st_shndx
Definition syms_elf.h:184
SYMS_U32 st_name
Definition syms_elf.h:181
SYMS_U64 st_size
Definition syms_elf.h:186
SYMS_U8 st_other
Definition syms_elf.h:183
SYMS_U8 st_info
Definition syms_elf.h:182
SYMS_U64 st_value
Definition syms_elf.h:185
Definition syms_base.h:296
#define SYMS_API
Definition syms_base.h:29
#define SYMS_C_LINKAGE_BEGIN
Definition syms_base.h:37
#define SYMS_C_LINKAGE_END
Definition syms_base.h:38
int32_t SYMS_S32
Definition syms_crt_overrides.h:34
uint32_t SYMS_U32
Definition syms_crt_overrides.h:38
uint64_t SYMS_U64
Definition syms_crt_overrides.h:39
uint16_t SYMS_U16
Definition syms_crt_overrides.h:37
int64_t SYMS_S64
Definition syms_crt_overrides.h:35
uint8_t SYMS_U8
Definition syms_crt_overrides.h:36
SYMS_ElfCompressTypeEnum
Definition syms_elf.h:290
@ SYMS_ElfCompressType_LoProc
Definition syms_elf.h:298
@ SYMS_ElfCompressType_HiProc
Definition syms_elf.h:299
@ SYMS_ElfCompressType_LoOs
Definition syms_elf.h:295
@ SYMS_ElfCompressType_ZLib
Definition syms_elf.h:292
@ SYMS_ElfCompressType_ZStd
Definition syms_elf.h:293
@ SYMS_ElfCompressType_HiOs
Definition syms_elf.h:296
@ SYMS_ElfCompressType_None
Definition syms_elf.h:291
SYMS_API SYMS_ElfPhdr64 syms_elf_phdr64_from_phdr32(SYMS_ElfPhdr32 h32)
Definition syms_elf.c:53
SYMS_API SYMS_U32 syms_elf_gnu_debuglink_crc32(SYMS_U32 crc, SYMS_String8 data)
Definition syms_elf.c:116
SYMS_API SYMS_ElfRela64 syms_elf_rela64_from_rela32(SYMS_ElfRela32 rela32)
Definition syms_elf.c:100
SYMS_API SYMS_ElfShdr64 syms_elf_shdr64_from_shdr32(SYMS_ElfShdr32 h32)
Definition syms_elf.c:36
SYMS_API SYMS_ElfSym64 syms_elf_sym64_from_sym32(SYMS_ElfSym32 sym32)
Definition syms_elf.c:76
SYMS_API SYMS_ElfDyn64 syms_elf_dyn64_from_dyn32(SYMS_ElfDyn32 h32)
Definition syms_elf.c:68
SYMS_API SYMS_ElfRel64 syms_elf_rel64_from_rel32(SYMS_ElfRel32 rel32)
Definition syms_elf.c:89
SYMS_U8 SYMS_ElfCompressType
Definition syms_elf.h:288
SYMS_C_LINKAGE_BEGIN SYMS_API SYMS_ElfEhdr64 syms_elf_ehdr64_from_ehdr32(SYMS_ElfEhdr32 h32)
Definition syms_elf.c:15
SYMS_ElfIdentifier
Definition syms_elf.h:15
@ SYMS_ElfIdentifier_MAG3
Definition syms_elf.h:19
@ SYMS_ElfIdentifier_MAG1
Definition syms_elf.h:17
@ SYMS_ElfIdentifier_OSABI
Definition syms_elf.h:23
@ SYMS_ElfIdentifier_VERSION
Definition syms_elf.h:22
@ SYMS_ElfIdentifier_MAG0
Definition syms_elf.h:16
@ SYMS_ElfIdentifier_MAG2
Definition syms_elf.h:18
@ SYMS_ElfIdentifier_CLASS
Definition syms_elf.h:20
@ SYMS_ElfIdentfiier_ABIVERSION
Definition syms_elf.h:24
@ SYMS_ElfIdentifier_NIDENT
Definition syms_elf.h:25
@ SYMS_ElfIdentifier_DATA
Definition syms_elf.h:21