2 * Copyright (c) 2018 Virtuozzo International GmbH
4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
16 unsigned char Data4
[8];
24 typedef struct PDB_DS_HEADER
{
34 typedef struct PDB_DS_TOC
{
36 uint32_t file_size
[1];
39 typedef struct PDB_DS_ROOT
{
41 uint32_t TimeDateStamp
;
48 typedef struct PDB_TYPES_OLD
{
57 typedef struct PDB_TYPES
{
69 uint32_t search_offset
;
71 uint32_t unknown_offset
;
75 typedef struct PDB_SYMBOL_RANGE
{
80 uint32_t characteristics
;
85 typedef struct PDB_SYMBOL_RANGE_EX
{
90 uint32_t characteristics
;
95 } PDB_SYMBOL_RANGE_EX
;
97 typedef struct PDB_SYMBOL_FILE
{
99 PDB_SYMBOL_RANGE range
;
102 uint32_t symbol_size
;
103 uint32_t lineno_size
;
110 typedef struct PDB_SYMBOL_FILE_EX
{
112 PDB_SYMBOL_RANGE_EX range
;
115 uint32_t symbol_size
;
116 uint32_t lineno_size
;
120 uint32_t reserved
[2];
122 } PDB_SYMBOL_FILE_EX
;
124 typedef struct PDB_SYMBOL_SOURCE
{
130 typedef struct PDB_SYMBOL_IMPORT
{
133 uint32_t TimeDateStamp
;
138 typedef struct PDB_SYMBOLS_OLD
{
143 uint32_t module_size
;
144 uint32_t offset_size
;
146 uint32_t srcmodule_size
;
149 typedef struct PDB_SYMBOLS
{
157 uint32_t module_size
;
158 uint32_t offset_size
;
160 uint32_t srcmodule_size
;
161 uint32_t pdbimport_size
;
163 uint32_t stream_index_size
;
164 uint32_t unknown2_size
;
177 } PDB_STREAM_INDEXES_OLD
;
191 } PDB_STREAM_INDEXES
;
193 union codeview_symbol
{
209 #define S_PUB_V3 0x110E
211 typedef struct pdb_seg
{
213 } __attribute__ ((packed
)) pdb_seg
;
215 #define IMAGE_FILE_MACHINE_I386 0x014c
216 #define IMAGE_FILE_MACHINE_AMD64 0x8664
222 PDB_DS_HEADER
*header
;
226 uint32_t file_used
[1024];
227 PDB_SYMBOLS
*symbols
;
228 PDB_STREAM_INDEXES sidx
;
234 int pdb_init_from_file(const char *name
, struct pdb_reader
*reader
);
235 void pdb_exit(struct pdb_reader
*reader
);
236 uint64_t pdb_resolve(uint64_t img_base
, struct pdb_reader
*r
, const char *name
);
237 uint64_t pdb_find_public_v3_symbol(struct pdb_reader
*reader
, const char *name
);