81{
85
89
90
91 RosSymHeader = rsym_ptr;
92
95 || rsymlen < RosSymHeader->StringsOffset + RosSymHeader->
StringsLength
97 {
98 WARN(
"Invalid ROSSYM_HEADER\n");
100 }
101
105
109
111 {
113 if (!
Entry->FileOffset)
114 {
116
117
119 {
120 const char* SymbolName =
Strings +
Entry->FunctionOffset;
122 {
123
127
129 }
130 else
131 {
132
133 }
134 }
135 }
136 else
137 {
140
142 {
146 }
147
149 {
154 func->next = first_func;
156 }
157
158
160 }
161 }
162
163 while (first_func)
164 {
165
167 first_func = first_func->next;
168 }
169
177
179
181}
struct symt_function * symt_new_function(struct module *module, struct symt_compiland *parent, const char *name, ULONG_PTR addr, ULONG_PTR size, struct symt *type) DECLSPEC_HIDDEN
void sparse_array_init(struct sparse_array *sa, unsigned elt_sz, unsigned bucket_sz) DECLSPEC_HIDDEN
void pool_init(struct pool *a, size_t arena_size) DECLSPEC_HIDDEN
void pool_destroy(struct pool *a) DECLSPEC_HIDDEN
unsigned source_new(struct module *module, const char *basedir, const char *source) DECLSPEC_HIDDEN
struct symt_public * symt_new_public(struct module *module, struct symt_compiland *parent, const char *typename, BOOL is_function, ULONG_PTR address, unsigned size) DECLSPEC_HIDDEN
void * sparse_array_add(struct sparse_array *sa, ULONG_PTR key, struct pool *pool) DECLSPEC_HIDDEN
void * sparse_array_find(const struct sparse_array *sa, ULONG_PTR idx) DECLSPEC_HIDDEN
void symt_add_func_line(struct module *module, struct symt_function *func, unsigned source_idx, int line_num, ULONG_PTR offset) DECLSPEC_HIDDEN
static const WCHAR Strings[]
static int use_raw_address(const char *name)
static int is_metadata_sym(const char *name)
static void rsym_finalize_function(struct module *module, struct symt_function *func)
struct _ROSSYM_ENTRY ROSSYM_ENTRY
base of all file and directory entries
IMAGEHLP_MODULEW64 module
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size