22 #define NONAMELESSUNION 30 #ifndef DBGHELP_STATIC_LIB 34 #ifndef DBGHELP_STATIC_LIB 45 if (
a1 >
a2)
return 1;
46 if (
a1 <
a2)
return -1;
59 const struct symt* sym1 = *(
const struct symt*
const *)p1;
60 const struct symt* sym2 = *(
const struct symt*
const *)p2;
71 const struct symt**
c;
75 struct symt_idx_to_ptr *idx_to_ptr;
77 char ptrbuf[3 + (
sizeof(
void *) * 2)];
86 if (idx_to_ptr->sym == sym)
87 return idx_to_ptr->idx;
98 idx_to_ptr->sym = sym;
99 idx_to_ptr->idx =
len + 1;
112 #if defined(__x86_64__) || defined(__arm64__) 125 if (sz <= module->sorttab_size)
return TRUE;
137 if (!
new)
return FALSE;
164 if (!srcfile || !*srcfile)
212 TRACE_(dbghelp_symt)(
"Adding compiland symbol %s:%s\n",
233 TRACE_(dbghelp_symt)(
"Adding public symbol %s:%s @%lx\n",
258 const char*
name,
unsigned is_static,
266 TRACE_(dbghelp_symt)(
"Adding global symbol %s:%s %d@%lx %p\n",
279 FIXME(
"Size mismatch for %s.%s between type (%s) and src (%lu)\n",
297 struct symt* sig_type)
302 TRACE_(dbghelp_symt)(
"Adding global function %s:%s @%lx-%lx\n",
312 sym->
type = sig_type;
335 TRACE_(dbghelp_symt)(
"(%p)%s:%lx %s:%u\n",
388 TRACE_(dbghelp_symt)(
"Adding local symbol (%s:%s): %s %p\n",
403 locsym->
u.
var = *loc;
416 unsigned pc,
unsigned len)
429 block->container = parent_block ? &parent_block->
symt : &
func->symt;
503 TRACE_(dbghelp_symt)(
"Adding global thunk %s:%s @%lx-%lx\n",
532 TRACE_(dbghelp_symt)(
"Adding constant value %s:%s\n",
560 TRACE_(dbghelp_symt)(
"Adding global label value %s:%s\n",
599 sym_info->
ModBase =
pair->requested->module.BaseOfImage;
625 modfmt =
pair->effective->format_info[
i];
647 FIXME(
"suspicious register value %x\n", loc.
reg);
655 FIXME(
"Shouldn't happen (kind=%d), debug reader backend is broken\n", loc.
kind);
662 switch (
data->u.var.kind)
672 FIXME(
"Shouldn't happen (kind=%d), debug reader backend is broken\n",
data->u.var.kind);
678 switch (
data->u.value.n1.n2.vt)
689 FIXME(
"Unsupported variant type (%u)\n",
data->u.value.n1.n2.vt);
695 FIXME(
"Unhandled kind (%u) in sym data\n",
data->kind);
735 TRACE_(dbghelp_symt)(
"%p => %s %u %s\n",
736 sym, sym_info->
Name, sym_info->
Size,
789 unsigned low = 0, mid = high / 2;
799 case -1: low = mid + 1;
break;
800 case 1: high = mid;
break;
802 mid = low + (high - low) / 2;
803 }
while (low < high);
829 static unsigned num_tmp;
849 for (
i = delta - 1;
i >= 0;
i--)
851 prev_ins_idx = ins_idx;
855 (prev_ins_idx - ins_idx) *
sizeof(
struct symt_ht*));
879 int idx_sorttab_orig = idx_sorttab;
883 while (idx_sorttab > 0 &&
889 idx_sorttab = idx_sorttab_orig;
890 while (idx_sorttab < module->num_sorttab - 1 &&
897 idx_sorttab = idx_sorttab_orig;
920 if (
addr <= ref_addr)
930 if (
addr >= ref_addr + ref_size)
return NULL;
933 while (high > low + 1)
935 mid = (high + low) / 2;
958 DWORD pc =
pair->pcs->ctx_frame.InstructionOffset;
993 FIXME(
"Unknown type: %u (%x)\n", lsym->
tag, lsym->
tag);
1076 for (
pair.requested =
pair.pcs->lmodules;
pair.requested;
pair.requested =
pair.requested->next)
1089 for (
pair.requested =
pair.pcs->lmodules;
pair.requested;
pair.requested =
pair.requested->next)
1126 se.
cb = EnumSymbolsCallback;
1127 se.
user = UserContext;
1154 TRACE(
"(%p %s %s %p %p)\n",
1156 EnumSymbolsCallback, UserContext);
1198 sew.
ctx = UserContext;
1199 sew.
cb = EnumSymbolsCallback;
1226 se.
ctx = UserContext;
1227 se.
cb = EnumSymbolsCallback;
1253 se.
ctx = UserContext;
1254 se.
cb = EnumSymbolsCallback;
1294 if (!si)
return FALSE;
1319 si->SizeOfStruct =
sizeof(*si);
1325 *Displacement = Displacement64;
1326 Symbol->Address = si->Address;
1328 Symbol->Flags = si->Flags;
1347 si->SizeOfStruct =
sizeof(*si);
1353 *Displacement = Displacement64;
1354 Symbol->Address = si->Address;
1356 Symbol->Flags = si->Flags;
1399 if (!pcs)
return FALSE;
1441 si->SizeOfStruct =
sizeof(*si);
1445 Symbol->Address = si->Address;
1447 Symbol->Flags = si->Flags;
1463 si->SizeOfStruct =
sizeof(*si);
1467 Symbol->Address = si->Address;
1469 Symbol->Flags = si->Flags;
1649 *pdwDisplacement = dwAddr -
Line->Address;
1695 while (!
li->is_first)
1698 if (!
li->is_source_file)
1700 Line->LineNumber =
li->line_number;
1701 Line->Address =
li->
u.pc_offset;
1703 if (!in_search)
return TRUE;
1740 while (!
li->is_last)
1743 if (!
li->is_source_file)
1745 line->LineNumber =
li->line_number;
1746 line->Address =
li->
u.pc_offset;
1816 static char* (
CDECL *p_undname)(
char*,
const char*,
int,
void* (
CDECL*)(
size_t),
void (
CDECL*)(
void*),
unsigned short);
1817 static const WCHAR szMsvcrt[] = {
'm',
's',
'v',
'c',
'r',
't',
'.',
'd',
'l',
'l',0};
1823 if (!p_undname)
return NULL;
1835 TRACE(
"(%s, %p, %d, 0x%08x)\n",
1836 debugstr_a(decorated_name), undecorated_name, undecorated_length,
flags);
1838 if (!undecorated_name || !undecorated_length)
1840 if (!
und_name(undecorated_name, decorated_name, undecorated_length,
flags))
1842 return strlen(undecorated_name);
1854 TRACE(
"(%s, %p, %d, 0x%08x)\n",
1855 debugstr_w(decorated_name), undecorated_name, undecorated_length,
flags);
1857 if (!undecorated_name || !undecorated_length)
1867 undecorated_name[undecorated_length - 1] = 0;
1877 #define WILDCHAR(x) (-(x)) 1883 case '\\': (*re)++;
return *(*re)++;
1884 case '*':
case '[':
case '?':
case '+':
case '#':
case ']':
return WILDCHAR(*(*re)++);
1885 default:
return *(*re)++;
1926 if (prev >= 0 && ch1 >= 0 &&
re_match_char(prev, *
string, _case) <= 0 &&
1944 const WCHAR* re_end = *pre;
1945 const WCHAR* string_end = *pstring;
1946 const WCHAR* re_beg;
1947 const WCHAR* string_beg;
1951 while (*re_end && *string_end)
1953 string_beg = string_end;
1960 {
static const WCHAR qmW[] = {
'?',0}; re_beg = qmW;}
1983 for ( ; string_end >= string_beg; string_end--)
1994 if (*re_end || *string_end)
return FALSE;
1998 *pstring = string_end;
2018 TRACE(
"%s %s %c\n",
string, re, _case ?
'Y' :
'N');
2059 FIXME(
"Unsupported searching with options (%x)\n",
Options);
2064 se.
cb = EnumSymbolsCallback;
2065 se.
user = UserContext;
2085 TRACE(
"(%p %s %u %u %s %s %p %p %x)\n",
2099 EnumSymbolsCallback, UserContext,
Options);
2114 TRACE(
"(%p %s %u %u %s %s %p %p %x)\n",
2119 sew.
ctx = UserContext;
2120 sew.
cb = EnumSymbolsCallback;
2194 if (compiland)
FIXME(
"Unsupported yet (filtering on compiland %s)\n", compiland);
2238 if (!
cb(&sci,
user))
break;
2250 dwLineNumber, plDisplacement,
Line);
2258 dwLineNumber, lpDisplacement,
Line);
2266 dwLineNumber, plDisplacement,
Line);
2276 FIXME(
"hProcess = %p, BaseOfDll = %s, index = %d, symbol = %p\n",
2288 FIXME(
"hProcess = %p, BaseOfDll = %s, index = %d, symbol = %p\n",
struct _LARGE_INTEGER::@2253 u
static unsigned int block
BOOL WINAPI SymGetSymPrev(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
static char * und_name(char *buffer, const char *mangled, int buflen, unsigned short flags)
#define ERROR_INVALID_PARAMETER
BOOL symt_get_address(const struct symt *type, ULONG64 *addr) DECLSPEC_HIDDEN
struct module * module_get_containee(const struct process *pcs, const struct module *inner) DECLSPEC_HIDDEN
BOOL WINAPI SymGetLineFromAddr64(HANDLE hProcess, DWORD64 dwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line)
struct hash_table_elt hash_elt
#define memmove(s1, s2, n)
static BOOL resort_symbols(struct module *module)
PWSTR WINAPI SymSetHomeDirectoryW(HANDLE hProcess, PCWSTR dir)
struct symt_hierarchy_point * symt_new_label(struct module *module, struct symt_compiland *compiland, const char *name, ULONG_PTR address)
struct symt_data * symt_new_global_variable(struct module *module, struct symt_compiland *compiland, const char *name, unsigned is_static, struct location loc, ULONG_PTR size, struct symt *type)
static int cmp_addr(ULONG64 a1, ULONG64 a2)
struct symt_compiland * symt_new_compiland(struct module *module, ULONG_PTR address, unsigned src_idx)
static BOOL symt_enum_locals(struct process *pcs, const WCHAR *mask, const struct sym_enum *se)
BOOL WINAPI SymGetSymPrev64(HANDLE hProcess, PIMAGEHLP_SYMBOL64 Symbol)
WCHAR * symt_get_nameW(const struct symt *sym) DECLSPEC_HIDDEN
BOOL WINAPI SymSetScopeFromAddr(HANDLE hProcess, ULONG64 addr)
BOOL WINAPI SymAddSymbolW(HANDLE hProcess, ULONG64 BaseOfDll, PCWSTR name, DWORD64 addr, DWORD size, DWORD flags)
static BOOL doSymEnumSymbols(HANDLE hProcess, ULONG64 BaseOfDll, PCWSTR Mask, PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext)
#define WideCharToMultiByte
BOOL WINAPI SymEnumSymbolsW(HANDLE hProcess, ULONG64 BaseOfDll, PCWSTR Mask, PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext)
struct symt_hierarchy_point * symt_add_function_point(struct module *module, struct symt_function *func, enum SymTagEnum point, const struct location *loc, const char *name)
int __cdecl symt_cmp_addr(const void *p1, const void *p2)
void copy_symbolW(SYMBOL_INFOW *siw, const SYMBOL_INFO *si)
#define ERROR_NO_MORE_ITEMS
ACPI_SIZE strlen(const char *String)
BOOL WINAPI SymEnumerateSymbols(HANDLE hProcess, DWORD BaseOfDll, PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext)
void * vector_at(const struct vector *v, unsigned pos) DECLSPEC_HIDDEN
BOOL WINAPI SymEnumLines(HANDLE hProcess, ULONG64 base, PCSTR compiland, PCSTR srcfile, PSYM_ENUMLINES_CALLBACK cb, PVOID user)
char * wine_dbgstr_w(const wchar_t *wstr)
struct process * process_find_by_handle(HANDLE hProcess)
struct hash_table ht_symbols
struct symt_function * symt_new_function(struct module *module, struct symt_compiland *compiland, const char *name, ULONG_PTR addr, ULONG_PTR size, struct symt *sig_type)
#define ERROR_INVALID_HANDLE
BOOL WINAPI SymGetSymFromAddr64(HANDLE hProcess, DWORD64 Address, PDWORD64 Displacement, PIMAGEHLP_SYMBOL64 Symbol)
BOOL symt_fill_func_line_info(const struct module *module, const struct symt_function *func, DWORD64 addr, IMAGEHLP_LINE64 *line)
BOOL WINAPI SymGetLineFromName64(HANDLE hProcess, PCSTR ModuleName, PCSTR FileName, DWORD dwLineNumber, PLONG lpDisplacement, PIMAGEHLP_LINE64 Line)
static const WCHAR * re_match_one(const WCHAR *string, const WCHAR *elt, BOOL _case)
struct module * module_find_by_nameA(const struct process *pcs, const char *name) DECLSPEC_HIDDEN
WINE_DEFAULT_DEBUG_CHANNEL(dbghelp)
PSYM_ENUMSYMBOLS_CALLBACK cb
BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID)
BOOL WINAPI SymEnumerateSymbols64(HANDLE hProcess, DWORD64 BaseOfDll, PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback, PVOID UserContext)
static BOOL doSymSearch(HANDLE hProcess, ULONG64 BaseOfDll, DWORD Index, DWORD SymTag, PCWSTR Mask, DWORD64 Address, PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext, DWORD Options)
static int re_match_char(WCHAR ch1, WCHAR ch2, BOOL _case)
#define SYMOPT_AUTO_PUBLICS
_In_ BOOL _In_ HANDLE hProcess
DWORD WINAPI UnDecorateSymbolNameW(const WCHAR *decorated_name, WCHAR *undecorated_name, DWORD undecorated_length, DWORD flags)
struct symt_block * symt_close_func_block(struct module *module, const struct symt_function *func, struct symt_block *block, unsigned pc)
BOOL WINAPI SymFromIndex(HANDLE hProcess, ULONG64 BaseOfDll, DWORD index, PSYMBOL_INFO symbol)
const char * source_get(const struct module *module, unsigned idx) DECLSPEC_HIDDEN
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char const char * ModuleName
BOOL WINAPI SymGetLineFromAddr(HANDLE hProcess, DWORD dwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE Line)
const char * symt_get_name(const struct symt *sym) DECLSPEC_HIDDEN
BOOL WINAPI SymFromAddrW(HANDLE hProcess, DWORD64 Address, DWORD64 *Displacement, PSYMBOL_INFOW Symbol)
CHAR FileName[MAX_PATH+1]
struct symt_public * symt_new_public(struct module *module, struct symt_compiland *compiland, const char *name, BOOL is_function, ULONG_PTR address, unsigned size)
#define SYMFLAG_PUBLIC_CODE
PSYM_ENUMSYMBOLS_CALLBACK64 cb
static BOOL CALLBACK sym_enumerate_cb(PSYMBOL_INFO syminfo, ULONG size, void *ctx)
#define UNDNAME_NAME_ONLY
IMAGEHLP_STACK_FRAME ctx_frame
BOOL symt_get_func_line_next(const struct module *module, PIMAGEHLP_LINE64 line)
PCHAR WINAPI SymSetHomeDirectory(HANDLE hProcess, PCSTR dir)
#define sprintf(buf, format,...)
GLenum GLuint GLenum GLsizei const GLchar * buf
void * pool_alloc(struct pool *a, size_t len) DECLSPEC_HIDDEN
struct hash_table_elt hash_elt
DWORD symt_ptr2index(struct module *module, const struct symt *sym)
BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID)
#define SYMSEARCH_GLOBALSONLY
struct symt * symt_index2ptr(struct module *module, DWORD id)
BOOL WINAPI SymMatchStringW(PCWSTR string, PCWSTR re, BOOL _case)
#define SYMOPT_CASE_INSENSITIVE
struct _SYMBOL_INFO * PSYMBOL_INFO
struct symt_block * symt_open_func_block(struct module *module, struct symt_function *func, struct symt_block *parent_block, unsigned pc, unsigned len)
BOOL WINAPI SymSearch(HANDLE hProcess, ULONG64 BaseOfDll, DWORD Index, DWORD SymTag, PCSTR Mask, DWORD64 Address, PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext, DWORD Options)
static void copy_line_64_from_32(IMAGEHLP_LINE64 *l64, const IMAGEHLP_LINE *l32)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
static WCHAR * file_regex(const char *srcfile)
void hash_table_iter_init(const struct hash_table *ht, struct hash_table_iter *hti, const char *name) DECLSPEC_HIDDEN
void vector_init(struct vector *v, unsigned elt_sz, unsigned bucket_sz) DECLSPEC_HIDDEN
static BOOL find_name(struct process *pcs, struct module *module, const char *name, SYMBOL_INFO *symbol)
static int re_fetch_char(const WCHAR **re)
struct symt_data * symt_new_constant(struct module *module, struct symt_compiland *compiland, const char *name, struct symt *type, const VARIANT *v)
static BOOL symt_enum_module(struct module_pair *pair, const WCHAR *match, const struct sym_enum *se)
char buffer[sizeof(SYMBOL_INFO)+MAX_SYM_NAME]
#define SYMFLAG_VALUEPRESENT
DWORD WINAPI UnDecorateSymbolName(const char *decorated_name, char *undecorated_name, DWORD undecorated_length, DWORD flags)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
struct symt_data * symt_add_func_local(struct module *module, struct symt_function *func, enum DataKind dt, const struct location *loc, struct symt_block *block, struct symt *type, const char *name)
char buffer[sizeof(SYMBOL_INFOW)+MAX_SYM_NAME]
static const WCHAR nameW[]
void * fetch_buffer(struct process *pcs, unsigned size)
static int cmp_sorttab_addr(struct module *module, int idx, ULONG64 addr)
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BOOL WINAPI SymFromAddr(HANDLE hProcess, DWORD64 Address, DWORD64 *Displacement, PSYMBOL_INFO Symbol)
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
BOOL module_get_debug(struct module_pair *) DECLSPEC_HIDDEN
static BOOL symt_grow_sorttab(struct module *module, unsigned sz)
static void symt_get_length(struct module *module, const struct symt *symt, ULONG64 *size)
BOOL WINAPI SymGetLineNext64(HANDLE hProcess, PIMAGEHLP_LINE64 Line)
static const struct update_accum a2
_In_ WDFCOLLECTION _In_ ULONG Index
BOOL WINAPI SymGetLinePrev64(HANDLE hProcess, PIMAGEHLP_LINE64 Line)
struct _SYMBOL_INFO SYMBOL_INFO
static void symt_fill_sym_info(struct module_pair *pair, const struct symt_function *func, const struct symt *sym, SYMBOL_INFO *sym_info)
#define SYMOPT_LOAD_LINES
struct hash_table_elt hash_elt
void hash_table_add(struct hash_table *ht, struct hash_table_elt *elt) DECLSPEC_HIDDEN
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
static BOOL re_match_multi(const WCHAR **pstring, const WCHAR **pre, BOOL _case)
BOOL WINAPI SymGetSymFromAddr(HANDLE hProcess, DWORD Address, PDWORD Displacement, PIMAGEHLP_SYMBOL Symbol)
BOOL WINAPI SymGetLineFromAddrW64(HANDLE hProcess, DWORD64 dwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINEW64 Line)
BOOL WINAPI SymGetSymFromName(HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL Symbol)
static BOOL CALLBACK sym_enumerate_cb64(PSYMBOL_INFO syminfo, ULONG size, void *ctx)
WINE_DECLARE_DEBUG_CHANNEL(dbghelp_symt)
ULONG64 InstructionOffset
GLenum const GLvoid * addr
static void copy_line_32_from_64(IMAGEHLP_LINE *l32, const IMAGEHLP_LINE64 *l64)
static BOOL CALLBACK sym_enumW(PSYMBOL_INFO si, ULONG size, PVOID ctx)
BOOL(CALLBACK * PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID)
struct module * module_find_by_addr(const struct process *pcs, DWORD64 addr, enum module_type type) DECLSPEC_HIDDEN
BOOL WINAPI SymGetLineNext(HANDLE hProcess, PIMAGEHLP_LINE Line)
#define memcpy(s1, s2, n)
BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL sym, PSTR UnDecName, DWORD UnDecNameLength)
BOOL(CALLBACK * PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID)
void * hash_table_iter_up(struct hash_table_iter *hti) DECLSPEC_HIDDEN
BOOL symt_normalize_function(struct module *module, const struct symt_function *func)
char * pool_strdup(struct pool *a, const char *str) DECLSPEC_HIDDEN
BOOL WINAPI SymSearchW(HANDLE hProcess, ULONG64 BaseOfDll, DWORD Index, DWORD SymTag, PCWSTR Mask, DWORD64 Address, PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, PVOID UserContext, DWORD Options)
BOOL WINAPI SymGetLineFromName(HANDLE hProcess, PCSTR ModuleName, PCSTR FileName, DWORD dwLineNumber, PLONG plDisplacement, PIMAGEHLP_LINE Line)
static void copy_line_W64_from_64(struct process *pcs, IMAGEHLP_LINEW64 *l64w, const IMAGEHLP_LINE64 *l64)
struct _SYMBOL_INFOW SYMBOL_INFOW
void * vector_add(struct vector *v, struct pool *pool) DECLSPEC_HIDDEN
static BOOL symt_enum_locals_helper(struct module_pair *pair, const WCHAR *match, const struct sym_enum *se, struct symt_function *func, const struct vector *v)
static unsigned __int64 next
BOOL symt_get_info(struct module *module, const struct symt *type, IMAGEHLP_SYMBOL_TYPE_INFO req, void *pInfo) DECLSPEC_HIDDEN
static int symt_get_best_at(struct module *module, int idx_sorttab)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL(CALLBACK * PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID)
BOOL WINAPI SymEnumSymbols(HANDLE hProcess, ULONG64 BaseOfDll, PCSTR Mask, PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, PVOID UserContext)
BOOL WINAPI SymFromIndexW(HANDLE hProcess, ULONG64 BaseOfDll, DWORD index, PSYMBOL_INFOW symbol)
static const struct newhuff ht[]
PSYM_ENUMERATESYMBOLS_CALLBACKW cb
static void symt_add_module_ht(struct module *module, struct symt_ht *ht)
struct hash_table_elt hash_elt
static const WCHAR starW[]
struct _SYMBOL_INFOW * PSYMBOL_INFOW
static void *CDECL und_alloc(size_t len)
#define MultiByteToWideChar
static BOOL send_symbol(const struct sym_enum *se, struct module_pair *pair, const struct symt_function *func, const struct symt *sym)
char * strchr(const char *String, int ch)
static void CDECL und_free(void *ptr)
static HMODULE MODULEINFO DWORD cb
BOOL WINAPI SymGetSymNext(HANDLE hProcess, PIMAGEHLP_SYMBOL Symbol)
BOOL WINAPI SymAddSymbol(HANDLE hProcess, ULONG64 BaseOfDll, PCSTR name, DWORD64 addr, DWORD size, DWORD flags)
BOOL WINAPI SymGetSymFromName64(HANDLE hProcess, PCSTR Name, PIMAGEHLP_SYMBOL64 Symbol)
char * strcpy(char *DstString, const char *SrcString)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
int strcmp(const char *String1, const char *String2)
#define ERROR_CALL_NOT_IMPLEMENTED
BOOL WINAPI SymMatchStringA(PCSTR string, PCSTR re, BOOL _case)
BOOL WINAPI SymGetLinePrev(HANDLE hProcess, PIMAGEHLP_LINE Line)
BOOL WINAPI SymFromName(HANDLE hProcess, PCSTR Name, PSYMBOL_INFO Symbol)
#define GetProcAddress(x, y)
struct symt_ht ** addr_sorttab
PSYM_ENUMERATESYMBOLS_CALLBACK cb
static const struct update_accum a1
GLuint GLuint GLsizei GLenum type
struct symt_thunk * symt_new_thunk(struct module *module, struct symt_compiland *compiland, const char *name, THUNK_ORDINAL ord, ULONG_PTR addr, ULONG_PTR size)
static BOOL sym_enum(HANDLE hProcess, ULONG64 BaseOfDll, PCWSTR Mask, const struct sym_enum *se)
BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym, PSTR UnDecName, DWORD UnDecNameLength)
static const WCHAR fileW[]
IMAGEHLP_MODULEW64 module
WCHAR *CDECL wine_get_dos_file_name(LPCSTR str)
void symt_add_func_line(struct module *module, struct symt_function *func, unsigned source_idx, int line_num, ULONG_PTR offset)
void user(int argc, const char *argv[])
#define SYMFLAG_PARAMETER
#define HeapFree(x, y, z)
BOOL WINAPI SymGetSymNext64(HANDLE hProcess, PIMAGEHLP_SYMBOL64 Symbol)
static unsigned where_to_insert(struct module *module, unsigned high, const struct symt_ht *elt)
struct hash_table_elt hash_elt
BOOL WINAPI SymGetLineFromNameW64(HANDLE hProcess, PCWSTR ModuleName, PCWSTR FileName, DWORD dwLineNumber, PLONG plDisplacement, PIMAGEHLP_LINEW64 Line)
unsigned vector_length(const struct vector *v) DECLSPEC_HIDDEN
struct hash_table_elt hash_elt
struct symt_ht * symt_find_nearest(struct module *module, DWORD_PTR addr)
GLuint const GLchar * name