UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
syms_pdb.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2/* date = May 4th 2021 1:54 pm */
3
4#ifndef SYMS_PDB_H
5#define SYMS_PDB_H
6
7// NOTE(allen): Definition of PDB format types.
8// PDB includes DBI - Debug Information; and CV - Code View; formats
9// As best as possible we have tried to name and organize our
10// definitions to clearly show where they come from in the original
11// definitions of PDB given by:
12// https://github.com/microsoft/microsoft-pdb
13
14// NOTE(allen): When you see: 'This is not "literally" defined by the format.'
15// What we are saying is there is no equivalent type in the original definition.
16// But it is a useful helper to us that is not able to be rearranged because it
17// reflects some kind of structure in the format.
18
20//~ allen: PDB Format Types
21
23enum{
33 SYMS_PdbVersion_VC140 = 20140508
34};
35
38
43
50
51//- "PDB" fixed stream contains named streams
52
59
65
67//~ allen: PDB DBI Format Types
68
69//- "STRTABLE" named stream contains a string table
70
71enum{
73};
74
79
80//- "DBI" fixed stream contains all of this 'main dbi' stuff
81
83enum{
96};
97
99enum{
102
104enum{
110};
111
113#define SYMS_PdbDbiBuildNumberNewFormatFlag 0x8000
114#define SYMS_PdbDbiBuildNumberMinor(bn) ((bn)&0xFF)
115#define SYMS_PdbDbiBuildNumberMajor(bn) (((bn) >> 8)&0x7F)
116#define SYMS_PdbDbiBuildNumberNewFormat(bn) (!!((bn)&SYMS_PdbDbiBuildNumberNewFormatFlag))
117#define SYMS_PdbDbiBuildNumber(maj, min) \
118((SYMS_PdbDbiBuildNumber)(SYMS_PdbDbiBuildNumberNewFormatFlag | ((min)&0xFF) | (((maj)&0x7F) << 16)))
119
121enum{
126
155
156// NOTE(allen): This is not "literally" defined by the format.
167
168//- "ModuleInfo" dbi range contains this compilation unit information
169
171// NOTE(allen): these are too big for an enum on some compilers (they are interpreted as signed)
172#define SYMS_PdbDbiSectionContribVersion_1 (0xeffe0000u + 19970605u)
173#define SYMS_PdbDbiSectionContribVersion_2 (0xeffe0000u + 20140516u)
174
175// any other version number
183
184// SYMS_PdbDbiPdbDbiSectionContribVersion_1
190
191// SYMS_PdbDbiPdbDbiSectionContribVersion_2
198
199// TODO(allen): changes when sc version changes to 40. (see MODI50)
200// (MODI_60_Persist)
222
223// NOTE(allen): This is not "literally" defined by the format.
230
232//~ allen: PDB TPI Format Types
233
234// "TPI" and "IPI" fixed streams contain type/information in these structures
235
237enum{
245};
246
264
269
271//~ allen: PDB GSI Format Types
272
273// "gsi" and "psi" streams contain symbol lookup tables in these types
274
276enum{
278};
279
281enum{
282 SYMS_PdbGsiVersion_V70 = 0xeffe0000 + 19990810,
283};
284
291
293 SYMS_U32 off; // Offset in the symbol record stream
296
297// TODO(allen): ?
298// NOTE(nick): This is a crutch that helps serialize in-memory GSI buckets that use 64bit pointers for next HR.
304
315
317//~ allen: PDB Hash Function
318
320
321#endif //SYMS_PDB_H
Definition syms_pdb.h:201
SYMS_U32 file_names_offset
Definition syms_pdb.h:214
SYMS_PdbDbiSectionContrib section_contribution
Definition syms_pdb.h:203
SYMS_MsfStreamNumber sn
Definition syms_pdb.h:207
SYMS_U32 c13_lines_size
Definition syms_pdb.h:210
SYMS_PdbStringIndex src_file
Definition syms_pdb.h:216
SYMS_U32 symbol_bytes
Definition syms_pdb.h:208
SYMS_U16 flags
Definition syms_pdb.h:205
SYMS_U8 padding1[2]
Definition syms_pdb.h:213
SYMS_U8 unused[4]
Definition syms_pdb.h:202
SYMS_PdbStringIndex pdb_file
Definition syms_pdb.h:217
SYMS_U16 num_contrib_files
Definition syms_pdb.h:212
SYMS_U32 c11_lines_size
Definition syms_pdb.h:209
Definition syms_pdb.h:127
SYMS_U32 sec_con_size
Definition syms_pdb.h:141
SYMS_U32 dbg_header_size
Definition syms_pdb.h:147
SYMS_U32 ec_info_size
Definition syms_pdb.h:148
SYMS_MsfStreamNumber sym_sn
Definition syms_pdb.h:137
SYMS_U32 age
Definition syms_pdb.h:130
SYMS_U32 reserved
Definition syms_pdb.h:153
SYMS_PdbDbiVersion version
Definition syms_pdb.h:129
SYMS_MsfStreamNumber psi_sn
Definition syms_pdb.h:134
SYMS_U16 pdb_version
Definition syms_pdb.h:135
SYMS_U16 machine
Definition syms_pdb.h:151
SYMS_U32 mfc_index
Definition syms_pdb.h:146
SYMS_U32 module_info_size
Definition syms_pdb.h:140
SYMS_PdbDbiHeaderFlags flags
Definition syms_pdb.h:150
SYMS_U32 sec_map_size
Definition syms_pdb.h:142
SYMS_MsfStreamNumber gsi_sn
Definition syms_pdb.h:131
SYMS_U32 tsm_size
Definition syms_pdb.h:145
SYMS_PdbDbiHeaderSig sig
Definition syms_pdb.h:128
SYMS_U16 pdb_version2
Definition syms_pdb.h:138
SYMS_U32 file_info_size
Definition syms_pdb.h:143
SYMS_PdbDbiBuildNumber build_number
Definition syms_pdb.h:132
Definition syms_pdb.h:192
SYMS_U32 data_crc
Definition syms_pdb.h:194
SYMS_U32 sec_coff
Definition syms_pdb.h:196
SYMS_U32 reloc_crc
Definition syms_pdb.h:195
SYMS_PdbDbiSectionContrib40 base
Definition syms_pdb.h:193
Definition syms_pdb.h:176
SYMS_PdbModIndex mod
Definition syms_pdb.h:181
SYMS_U32 size
Definition syms_pdb.h:179
SYMS_U32 sec_off
Definition syms_pdb.h:178
SYMS_CvSectionIndex sec
Definition syms_pdb.h:177
SYMS_U32 flags
Definition syms_pdb.h:180
Definition syms_pdb.h:185
SYMS_U32 reloc_crc
Definition syms_pdb.h:188
SYMS_PdbDbiSectionContrib40 base
Definition syms_pdb.h:186
SYMS_U32 data_crc
Definition syms_pdb.h:187
Definition syms_pdb.h:75
SYMS_U32 magic
Definition syms_pdb.h:76
SYMS_U32 version
Definition syms_pdb.h:77
Definition syms_pdb.h:292
SYMS_U32 off
Definition syms_pdb.h:293
SYMS_U32 cref
Definition syms_pdb.h:294
Definition syms_pdb.h:285
SYMS_PdbGsiSignature sig
Definition syms_pdb.h:286
SYMS_U32 hr_len
Definition syms_pdb.h:288
SYMS_U32 num_buckets
Definition syms_pdb.h:289
SYMS_PdbGsiVersion ver
Definition syms_pdb.h:287
Definition syms_pdb.h:299
SYMS_U32 next
Definition syms_pdb.h:300
SYMS_U32 cref
Definition syms_pdb.h:302
SYMS_U32 off
Definition syms_pdb.h:301
Definition syms_pdb.h:60
SYMS_PdbVersion version
Definition syms_pdb.h:61
SYMS_U32 age
Definition syms_pdb.h:63
SYMS_U32 time
Definition syms_pdb.h:62
Definition syms_pdb.h:39
SYMS_U32 off
Definition syms_pdb.h:40
SYMS_U32 size
Definition syms_pdb.h:41
Definition syms_pdb.h:305
SYMS_U8 padding[2]
Definition syms_pdb.h:311
SYMS_U32 addr_map_size
Definition syms_pdb.h:307
SYMS_U32 sec_count
Definition syms_pdb.h:313
SYMS_U32 sec_thunk_tabl_off
Definition syms_pdb.h:312
SYMS_U32 thunk_count
Definition syms_pdb.h:308
SYMS_CvSectionIndex isec_thunk_table
Definition syms_pdb.h:310
SYMS_U32 thunk_size
Definition syms_pdb.h:309
SYMS_U32 sym_hash_size
Definition syms_pdb.h:306
Definition syms_pdb.h:247
SYMS_MsfStreamNumber hash_sn
Definition syms_pdb.h:256
SYMS_PdbOffAndSize hash_adj
Definition syms_pdb.h:262
SYMS_PdbOffAndSize ti_off
Definition syms_pdb.h:261
SYMS_U32 hash_bucket_count
Definition syms_pdb.h:259
SYMS_PdbOffAndSize hash_vals
Definition syms_pdb.h:260
SYMS_PdbTpiVersion version
Definition syms_pdb.h:249
SYMS_U32 hash_key_size
Definition syms_pdb.h:258
SYMS_U32 header_size
Definition syms_pdb.h:250
SYMS_U32 ti_hi
Definition syms_pdb.h:252
SYMS_MsfStreamNumber hash_sn_aux
Definition syms_pdb.h:257
SYMS_U32 types_size
Definition syms_pdb.h:253
SYMS_U32 ti_lo
Definition syms_pdb.h:251
Definition syms_pdb.h:265
SYMS_CvTypeIndex ti
Definition syms_pdb.h:266
SYMS_U32 off
Definition syms_pdb.h:267
Definition syms_base.h:296
#define SYMS_API
Definition syms_base.h:29
uint32_t SYMS_U32
Definition syms_crt_overrides.h:38
uint16_t SYMS_U16
Definition syms_crt_overrides.h:37
uint8_t SYMS_U8
Definition syms_crt_overrides.h:36
SYMS_U16 SYMS_CvSectionIndex
Definition syms_cv.h:19
SYMS_U32 SYMS_CvTypeIndex
Definition syms_cv.h:10
SYMS_U16 SYMS_MsfStreamNumber
Definition syms_msf.h:11
@ SYMS_PdbDbiStrTableHeader_MAGIC
Definition syms_pdb.h:72
SYMS_U32 SYMS_PdbDbiHeaderSig
Definition syms_pdb.h:98
SYMS_U32 SYMS_PdbVersion
Definition syms_pdb.h:22
SYMS_PdbFixedStream
Definition syms_pdb.h:44
@ SYMS_PdbFixedStream_DBI
Definition syms_pdb.h:47
@ SYMS_PdbFixedStream_TPI
Definition syms_pdb.h:46
@ SYMS_PdbFixedStream_PDB
Definition syms_pdb.h:45
@ SYMS_PdbFixedStream_IPI
Definition syms_pdb.h:48
@ SYMS_PdbGsiVersion_V70
Definition syms_pdb.h:282
@ SYMS_PdbDbiHeaderFlag_INCREMENTAL
Definition syms_pdb.h:122
@ SYMS_PdbDbiHeaderFlag_STRIPPED
Definition syms_pdb.h:123
@ SYMS_PdbDbiHeaderFlag_CTYPES
Definition syms_pdb.h:124
@ SYMS_PdbDbiHeaderSignature_V1
Definition syms_pdb.h:100
SYMS_PdbCompUnitRange
Definition syms_pdb.h:224
@ SYMS_PdbCompUnitRange_COUNT
Definition syms_pdb.h:228
@ SYMS_PdbCompUnitRange_Symbols
Definition syms_pdb.h:225
@ SYMS_PdbCompUnitRange_C11
Definition syms_pdb.h:226
@ SYMS_PdbCompUnitRange_C13
Definition syms_pdb.h:227
SYMS_PdbDbiRange
Definition syms_pdb.h:157
@ SYMS_PdbDbiRange_COUNT
Definition syms_pdb.h:165
@ SYMS_PdbDbiRange_SecMap
Definition syms_pdb.h:160
@ SYMS_PdbDbiRange_DbgHeader
Definition syms_pdb.h:164
@ SYMS_PdbDbiRange_FileInfo
Definition syms_pdb.h:161
@ SYMS_PdbDbiRange_TSM
Definition syms_pdb.h:162
@ SYMS_PdbDbiRange_EcInfo
Definition syms_pdb.h:163
@ SYMS_PdbDbiRange_SecCon
Definition syms_pdb.h:159
@ SYMS_PdbDbiRange_ModuleInfo
Definition syms_pdb.h:158
SYMS_U16 SYMS_PdbModIndex
Definition syms_pdb.h:36
SYMS_U32 SYMS_PdbGsiVersion
Definition syms_pdb.h:280
SYMS_U32 SYMS_PdbDbiStream
Definition syms_pdb.h:82
SYMS_U16 SYMS_PdbDbiBuildNumber
Definition syms_pdb.h:112
SYMS_U32 SYMS_PdbStringIndex
Definition syms_pdb.h:37
@ SYMS_PdbDbiStream_FPO
Definition syms_pdb.h:84
@ SYMS_PdbDbiStream_XDATA
Definition syms_pdb.h:91
@ SYMS_PdbDbiStream_TOKEN_RDI_MAP
Definition syms_pdb.h:90
@ SYMS_PdbDbiStream_COUNT
Definition syms_pdb.h:95
@ SYMS_PdbDbiStream_NEW_FPO
Definition syms_pdb.h:93
@ SYMS_PdbDbiStream_FIXUP
Definition syms_pdb.h:86
@ SYMS_PdbDbiStream_SECTION_HEADER_ORIG
Definition syms_pdb.h:94
@ SYMS_PdbDbiStream_EXCEPTION
Definition syms_pdb.h:85
@ SYMS_PdbDbiStream_PDATA
Definition syms_pdb.h:92
@ SYMS_PdbDbiStream_OMAP_FROM_SRC
Definition syms_pdb.h:88
@ SYMS_PdbDbiStream_OMAP_TO_SRC
Definition syms_pdb.h:87
@ SYMS_PdbDbiStream_SECTION_HEADER
Definition syms_pdb.h:89
SYMS_PdbNamedStream
Definition syms_pdb.h:53
@ SYMS_PdbNamedStream_COUNT
Definition syms_pdb.h:57
@ SYMS_PdbNamedStream_LINK_INFO
Definition syms_pdb.h:56
@ SYMS_PdbNamedStream_STRTABLE
Definition syms_pdb.h:55
@ SYMS_PdbNamedStream_HEADER_BLOCK
Definition syms_pdb.h:54
@ SYMS_PdbGsiSignature_Basic
Definition syms_pdb.h:277
SYMS_U32 SYMS_PdbDbiVersion
Definition syms_pdb.h:103
SYMS_U16 SYMS_PdbDbiHeaderFlags
Definition syms_pdb.h:120
@ SYMS_PdbTpiVersion_IMPV80
Definition syms_pdb.h:244
@ SYMS_PdbTpiVersion_IMPV50
Definition syms_pdb.h:242
@ SYMS_PdbTpiVersion_IMPV40
Definition syms_pdb.h:239
@ SYMS_PdbTpiVersion_INTV_VC2
Definition syms_pdb.h:238
@ SYMS_PdbTpiVersion_IMPV41
Definition syms_pdb.h:240
@ SYMS_PdbTpiVersion_IMPV50_INTERIM
Definition syms_pdb.h:241
@ SYMS_PdbTpiVersion_IMPV70
Definition syms_pdb.h:243
SYMS_U32 SYMS_PdbGsiSignature
Definition syms_pdb.h:275
SYMS_U32 SYMS_PdbTpiVersion
Definition syms_pdb.h:236
@ SYMS_PdbVersion_VC80
Definition syms_pdb.h:31
@ SYMS_PdbVersion_VC70
Definition syms_pdb.h:30
@ SYMS_PdbVersion_VC4
Definition syms_pdb.h:25
@ SYMS_PdbVersion_VC70_DEP
Definition syms_pdb.h:29
@ SYMS_PdbVersion_VC140
Definition syms_pdb.h:33
@ SYMS_PdbVersion_VC50
Definition syms_pdb.h:27
@ SYMS_PdbVersion_VC41
Definition syms_pdb.h:26
@ SYMS_PdbVersion_VC98
Definition syms_pdb.h:28
@ SYMS_PdbVersion_VC110
Definition syms_pdb.h:32
@ SYMS_PdbVersion_VC2
Definition syms_pdb.h:24
@ SYMS_PdbDbiVersion_110
Definition syms_pdb.h:109
@ SYMS_PdbDbiVersion_60
Definition syms_pdb.h:107
@ SYMS_PdbDbiVersion_41
Definition syms_pdb.h:105
@ SYMS_PdbDbiVersion_50
Definition syms_pdb.h:106
@ SYMS_PdbDbiVersion_70
Definition syms_pdb.h:108
SYMS_U32 SYMS_PdbDbiSectionContribVersion
Definition syms_pdb.h:170
SYMS_API SYMS_U32 syms_pdb_hashV1(SYMS_String8 string)
Definition syms_pdb.c:12
#define SYMS_PdbDbiBuildNumber(maj, min)
Definition syms_pdb.h:117