- children of SymTagExe and SymTagCompiland can now be enumerated - SymTagCompiland's lexical parent is now reported to SymTagExe - native doesn't expose compiland's address, so don't expose it
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dbghelp_private.h | 1 + dlls/dbghelp/symbol.c | 4 ++++ dlls/dbghelp/type.c | 16 +++++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index 0587ce13914..2fc5a7e5eca 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -169,6 +169,7 @@ struct symt_block struct symt_module /* in fact any of .exe, .dll... */ { struct symt symt; /* module */ + struct vector vchildren; /* compilation units */ struct module* module; };
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index e2fde00456a..091ea173305 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -191,6 +191,7 @@ struct symt_module* symt_new_module(struct module* module) { sym->symt.tag = SymTagExe; sym->module = module; + vector_init(&sym->vchildren, sizeof(struct symt*), 8); } return sym; } @@ -199,6 +200,7 @@ struct symt_compiland* symt_new_compiland(struct module* module, ULONG_PTR address, unsigned src_idx) { struct symt_compiland* sym; + struct symt_compiland** p;
TRACE_(dbghelp_symt)("Adding compiland symbol %s:%s\n", debugstr_w(module->modulename), source_get(module, src_idx)); @@ -210,6 +212,8 @@ struct symt_compiland* symt_new_compiland(struct module* module, sym->source = src_idx; vector_init(&sym->vchildren, sizeof(struct symt*), 32); sym->user = NULL; + p = vector_add(&module->top->vchildren, &module->pool); + *p = sym; } return sym; } diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index 70719cf6b7c..4eb230e2755 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -158,11 +158,10 @@ BOOL symt_get_address(const struct symt* type, ULONG64* addr) case SymTagThunk: *addr = ((const struct symt_thunk*)type)->address; break; - case SymTagCompiland: - *addr = ((const struct symt_compiland*)type)->address; - break; default: FIXME("Unsupported sym-tag %s for get-address\n", symt_get_tag_str(type->tag)); + /* fall through */ + case SymTagCompiland: return FALSE; } return TRUE; @@ -549,6 +548,8 @@ BOOL symt_get_info(struct module* module, const struct symt* type,
switch (type->tag) { + case SymTagExe: v = &((const struct symt_module*)type)->vchildren; break; + case SymTagCompiland: v = &((const struct symt_compiland*)type)->vchildren; break; case SymTagUDT: v = &((const struct symt_udt*)type)->vchildren; break; case SymTagEnum: v = &((const struct symt_enum*)type)->vchildren; break; case SymTagFunctionType: v = &((const struct symt_function_signature*)type)->vchildren; break; @@ -594,6 +595,12 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case TI_GET_CHILDRENCOUNT: switch (type->tag) { + case SymTagExe: + X(DWORD) = vector_length(&((const struct symt_module*)type)->vchildren); + break; + case SymTagCompiland: + X(DWORD) = vector_length(&((const struct symt_compiland*)type)->vchildren); + break; case SymTagUDT: X(DWORD) = vector_length(&((const struct symt_udt*)type)->vchildren); break; @@ -697,6 +704,9 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case TI_GET_LEXICALPARENT: switch (type->tag) { + case SymTagCompiland: + X(DWORD) = symt_ptr2index(module, &((const struct symt_compiland*)type)->container->symt); + break; case SymTagBlock: X(DWORD) = symt_ptr2index(module, ((const struct symt_block*)type)->container); break;
- report address and size - allow enumerating children
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/type.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index 4eb230e2755..67e2f233c40 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -141,6 +141,9 @@ BOOL symt_get_address(const struct symt* type, ULONG64* addr) default: return FALSE; } break; + case SymTagBlock: + *addr = ((const struct symt_block*)type)->address; + break; case SymTagFunction: *addr = ((const struct symt_function*)type)->address; break; @@ -554,6 +557,7 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagEnum: v = &((const struct symt_enum*)type)->vchildren; break; case SymTagFunctionType: v = &((const struct symt_function_signature*)type)->vchildren; break; case SymTagFunction: v = &((const struct symt_function*)type)->vchildren; break; + case SymTagBlock: v = &((const struct symt_block*)type)->vchildren; break; default: FIXME("Unsupported sym-tag %s for find-children\n", symt_get_tag_str(type->tag)); @@ -613,6 +617,9 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagFunction: X(DWORD) = vector_length(&((const struct symt_function*)type)->vchildren); break; + case SymTagBlock: + X(DWORD) = vector_length(&((const struct symt_block*)type)->vchildren); + break; case SymTagPointerType: /* MS does it that way */ case SymTagArrayType: /* MS does it that way */ case SymTagThunk: /* MS does it that way */ @@ -659,6 +666,9 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagFunction: X(DWORD64) = ((const struct symt_function*)type)->size; break; + case SymTagBlock: + X(DWORD64) = ((const struct symt_block*)type)->size; + break; case SymTagPointerType: X(DWORD64) = ((const struct symt_pointer*)type)->size; break;
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/type.c | 1 + include/cvconst.h | 1 + include/dbghelp.h | 9 +++++++++ 3 files changed, 11 insertions(+)
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index 67e2f233c40..c942a49642b 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -83,6 +83,7 @@ static const char* symt_get_tag_str(DWORD tag) case SymTagExport: return "SymTagExport"; case SymTagHeapAllocationSite: return "SymTagHeapAllocationSite"; case SymTagCoffGroup: return "SymTagCoffGroup"; + case SymTagInlinee: return "SymTagInlinee"; default: return "---"; } } diff --git a/include/cvconst.h b/include/cvconst.h index f90c61a57fa..82929dda772 100644 --- a/include/cvconst.h +++ b/include/cvconst.h @@ -66,6 +66,7 @@ enum SymTagEnum SymTagExport, SymTagHeapAllocationSite, SymTagCoffGroup, + SymTagInlinee, SymTagMax };
diff --git a/include/dbghelp.h b/include/dbghelp.h index bf235c7f97a..75dfd76b327 100644 --- a/include/dbghelp.h +++ b/include/dbghelp.h @@ -1071,6 +1071,15 @@ typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO TI_GET_UDTKIND, TI_IS_EQUIV_TO, TI_GET_CALLING_CONVENTION, + TI_IS_CLOSE_EQUIV_TO, + TI_GTIEX_REQS_VALID, + TI_GET_VIRTUALBASEOFFSET, + TI_GET_VIRTUALBASEDISPINDEX, + TI_GET_IS_REFERENCE, + TI_GET_INDIRECTVIRTUALBASECLASS, + TI_GET_VIRTUALBASETABLETYPE, + TI_GET_OBJECTPOINTERTYPE, + IMAGEHLP_SYMBOL_TYPE_INFO_MAX } IMAGEHLP_SYMBOL_TYPE_INFO;
#define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001
(as any other type)
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dbghelp_private.h | 1 - dlls/dbghelp/type.c | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index 2fc5a7e5eca..474e76d52b6 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -294,7 +294,6 @@ struct symt_function_arg_type { struct symt symt; struct symt* arg_type; - struct symt* container; };
struct symt_pointer diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index c942a49642b..bff31bc2546 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -410,7 +410,6 @@ BOOL symt_add_function_signature_parameter(struct module* module, if (!arg) return FALSE; arg->symt.tag = SymTagFunctionArgType; arg->arg_type = param; - arg->container = &sig_type->symt; p = vector_add(&sig_type->vchildren, &module->pool); if (!p) return FALSE; /* FIXME we leak arg */ *p = &arg->symt; @@ -730,11 +729,9 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagThunk: X(DWORD) = symt_ptr2index(module, ((const struct symt_thunk*)type)->container); break; - case SymTagFunctionArgType: - X(DWORD) = symt_ptr2index(module, ((const struct symt_function_arg_type*)type)->container); - break; case SymTagUDT: case SymTagEnum: + case SymTagFunctionArgType: X(DWORD) = symt_ptr2index(module, &module->top->symt); break; default:
- matches what native does - will silence a bunch of FIXME:s
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/type.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 7 deletions(-)
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index bff31bc2546..a73bf8dca14 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -111,6 +111,10 @@ const char* symt_get_name(const struct symt* sym) case SymTagArrayType: case SymTagPointerType: case SymTagFunctionType: + case SymTagFunctionArgType: + case SymTagBlock: + case SymTagFuncDebugStart: + case SymTagFuncDebugEnd: return NULL; } } @@ -165,7 +169,16 @@ BOOL symt_get_address(const struct symt* type, ULONG64* addr) default: FIXME("Unsupported sym-tag %s for get-address\n", symt_get_tag_str(type->tag)); /* fall through */ + case SymTagExe: case SymTagCompiland: + case SymTagFunctionType: + case SymTagFunctionArgType: + case SymTagBaseType: + case SymTagUDT: + case SymTagEnum: + case SymTagTypedef: + case SymTagPointerType: + case SymTagArrayType: return FALSE; } return TRUE; @@ -558,6 +571,17 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagFunctionType: v = &((const struct symt_function_signature*)type)->vchildren; break; case SymTagFunction: v = &((const struct symt_function*)type)->vchildren; break; case SymTagBlock: v = &((const struct symt_block*)type)->vchildren; break; + case SymTagPointerType: + case SymTagArrayType: + case SymTagFunctionArgType: + case SymTagThunk: + case SymTagLabel: + case SymTagFuncDebugStart: + case SymTagFuncDebugEnd: + case SymTagTypedef: + case SymTagBaseType: + /* for those, CHILDRENCOUNT returns 0 */ + return tifp->Count == 0; default: FIXME("Unsupported sym-tag %s for find-children\n", symt_get_tag_str(type->tag)); @@ -620,18 +644,25 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagBlock: X(DWORD) = vector_length(&((const struct symt_block*)type)->vchildren); break; - case SymTagPointerType: /* MS does it that way */ - case SymTagArrayType: /* MS does it that way */ - case SymTagThunk: /* MS does it that way */ + /* some SymTag:s return 0 */ + case SymTagPointerType: + case SymTagArrayType: + case SymTagFunctionArgType: + case SymTagThunk: + case SymTagFuncDebugStart: + case SymTagFuncDebugEnd: + case SymTagLabel: + case SymTagTypedef: + case SymTagBaseType: X(DWORD) = 0; break; default: FIXME("Unsupported sym-tag %s for get-children-count\n", symt_get_tag_str(type->tag)); /* fall through */ + /* some others return error */ case SymTagData: case SymTagPublicSymbol: - case SymTagBaseType: return FALSE; } break; @@ -699,14 +730,15 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagThunk: X(DWORD64) = ((const struct symt_thunk*)type)->size; break; - case SymTagLabel: - X(DWORD64) = 0; - break; default: FIXME("Unsupported sym-tag %s for get-length\n", symt_get_tag_str(type->tag)); /* fall through */ + case SymTagExe: + case SymTagCompiland: case SymTagFunctionType: + case SymTagFunctionArgType: + case SymTagLabel: return FALSE; } break; @@ -729,11 +761,25 @@ BOOL symt_get_info(struct module* module, const struct symt* type, case SymTagThunk: X(DWORD) = symt_ptr2index(module, ((const struct symt_thunk*)type)->container); break; + case SymTagFuncDebugStart: + case SymTagFuncDebugEnd: + case SymTagLabel: + X(DWORD) = symt_ptr2index(module, ((const struct symt_hierarchy_point*)type)->parent); + break; case SymTagUDT: case SymTagEnum: + case SymTagFunctionType: case SymTagFunctionArgType: + case SymTagPointerType: + case SymTagArrayType: + case SymTagBaseType: + case SymTagTypedef: + case SymTagBaseClass: + case SymTagPublicSymbol: X(DWORD) = symt_ptr2index(module, &module->top->symt); break; + case SymTagExe: + return FALSE; default: FIXME("Unsupported sym-tag %s for get-lexical-parent\n", symt_get_tag_str(type->tag)); @@ -775,6 +821,19 @@ BOOL symt_get_info(struct module* module, const struct symt* type, default: FIXME("Unsupported sym-tag %s for get-offset\n", symt_get_tag_str(type->tag)); + case SymTagExe: + case SymTagCompiland: + case SymTagUDT: + case SymTagFunctionType: + case SymTagFunctionArgType: + case SymTagPointerType: + case SymTagArrayType: + case SymTagBaseType: + case SymTagTypedef: + case SymTagBlock: + case SymTagFuncDebugStart: + case SymTagFuncDebugEnd: + case SymTagLabel: return FALSE; } break; @@ -839,7 +898,14 @@ BOOL symt_get_info(struct module* module, const struct symt* type, /* fall through */ case SymTagPublicSymbol: case SymTagThunk: + case SymTagBlock: + case SymTagFuncDebugStart: + case SymTagFuncDebugEnd: case SymTagLabel: + case SymTagExe: + case SymTagCompiland: + case SymTagUDT: + case SymTagBaseType: return FALSE; } break;
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/type.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index a73bf8dca14..24c8da7da78 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -969,17 +969,15 @@ BOOL symt_get_info(struct module* module, const struct symt* type,
#undef X
- case TI_GET_ADDRESSOFFSET: - case TI_GET_SYMINDEX: - case TI_GET_THISADJUST: - case TI_GET_VIRTUALBASECLASS: - case TI_GET_VIRTUALBASEPOINTEROFFSET: - case TI_GET_VIRTUALTABLESHAPEID: - case TI_IS_EQUIV_TO: - FIXME("Unsupported GetInfo request (%u)\n", req); - return FALSE; default: - FIXME("Unknown GetInfo request (%u)\n", req); + { + static DWORD64 once; + if (!(once & ((DWORD64)1 << req))) + { + FIXME("Unsupported GetInfo request (%u)\n", req); + once |= (DWORD64)1 << req; + } + } return FALSE; }
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dwarf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c index 430544196c5..c15b59b57c3 100644 --- a/dlls/dbghelp/dwarf.c +++ b/dlls/dbghelp/dwarf.c @@ -1988,7 +1988,7 @@ static void dwarf2_parse_subprogram_label(dwarf2_subprogram_t* subpgm, name.u.string = NULL;
loc.kind = loc_absolute; - loc.offset = subpgm->ctx->module_ctx->load_offset + low_pc.u.uvalue; + loc.offset = subpgm->ctx->module_ctx->load_offset + low_pc.u.uvalue - subpgm->func->address; symt_add_function_point(subpgm->ctx->module_ctx->module, subpgm->func, SymTagLabel, &loc, name.u.string); }
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dbghelp.spec | 4 ++-- dlls/dbghelp/image.c | 6 ++++-- include/dbghelp.h | 9 +++++---- include/imagehlp.h | 17 ++++++++++------- 4 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec index 39820a98566..047e81b3777 100644 --- a/dlls/dbghelp/dbghelp.spec +++ b/dlls/dbghelp/dbghelp.spec @@ -25,7 +25,7 @@ @ stdcall ImagehlpApiVersion() @ stdcall ImagehlpApiVersionEx(ptr) @ stdcall MakeSureDirectoryPathExists(str) -@ stdcall MapDebugInformation(long str str long) +@ stdcall -arch=i386 MapDebugInformation(long str str long) @ stdcall MiniDumpReadDumpStream(ptr long ptr ptr ptr) @ stdcall MiniDumpWriteDump(ptr long ptr long ptr ptr ptr) @ stdcall SearchTreeForFile(str str ptr) @@ -187,7 +187,7 @@ @ stdcall SymUnloadModule64(long int64) @ stdcall UnDecorateSymbolName(str ptr long long) @ stdcall UnDecorateSymbolNameW(wstr ptr long long) -@ stdcall UnmapDebugInformation(ptr) +@ stdcall -arch=i386 UnmapDebugInformation(ptr) @ stdcall WinDbgExtensionDllInit(ptr long long) #@ stub block #@ stub chksym diff --git a/dlls/dbghelp/image.c b/dlls/dbghelp/image.c index 59622180dc7..7de0a6e23c8 100644 --- a/dlls/dbghelp/image.c +++ b/dlls/dbghelp/image.c @@ -26,8 +26,6 @@ #include "winternl.h" #include "wine/debug.h"
-WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); - /*********************************************************************** * GetTimestampForLoadedLibrary (DBGHELP.@) */ @@ -37,6 +35,9 @@ DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE Module) return (nth) ? nth->FileHeader.TimeDateStamp : 0; }
+#ifndef _WIN64 +WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); + /*********************************************************************** * MapDebugInformation (DBGHELP.@) */ @@ -57,3 +58,4 @@ BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo) SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return FALSE; } +#endif diff --git a/include/dbghelp.h b/include/dbghelp.h index 75dfd76b327..c4770553809 100644 --- a/include/dbghelp.h +++ b/include/dbghelp.h @@ -1408,6 +1408,7 @@ typedef struct API_VERSION LPAPI_VERSION WINAPI ImagehlpApiVersion(void); LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION);
+#ifndef _WIN64 typedef struct _IMAGE_DEBUG_INFORMATION { LIST_ENTRY List; @@ -1443,6 +1444,10 @@ typedef struct _IMAGE_DEBUG_INFORMATION DWORD Reserved[ 2 ]; } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
+PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG); +BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); +#endif + typedef enum { SYMOPT_EX_DISABLEACCESSTIMEUPDATE, @@ -1453,10 +1458,6 @@ typedef enum #endif } IMAGEHLP_EXTENDED_OPTIONS;
-PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG); - -BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); - DWORD WINAPI SymGetOptions(void); DWORD WINAPI SymSetOptions(DWORD);
diff --git a/include/imagehlp.h b/include/imagehlp.h index 5ee978a3d4c..72936e4353e 100644 --- a/include/imagehlp.h +++ b/include/imagehlp.h @@ -239,6 +239,7 @@ typedef struct _API_VERSION { USHORT Reserved; } API_VERSION, *LPAPI_VERSION;
+#ifndef _WIN64 typedef struct _IMAGE_DEBUG_INFORMATION { LIST_ENTRY List; DWORD Size; @@ -282,6 +283,15 @@ typedef struct _IMAGE_DEBUG_INFORMATION { DWORD Reserved[3]; } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION;
+PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation( + HANDLE FileHandle, PCSTR FileName, + PCSTR SymbolPath, ULONG ImageBase +); +BOOL WINAPI UnmapDebugInformation( + PIMAGE_DEBUG_INFORMATION DebugInfo +); +#endif + typedef struct _ADDRESS { DWORD Offset; WORD Segment; @@ -958,10 +968,6 @@ BOOL WINAPI MapAndLoad( PCSTR ImageName, PCSTR DllPath, PLOADED_IMAGE LoadedImage, BOOL DotDll, BOOL ReadOnly ); -PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation( - HANDLE FileHandle, PCSTR FileName, - PCSTR SymbolPath, ULONG ImageBase -); DWORD WINAPI MapFileAndCheckSumA( PCSTR Filename, PDWORD HeaderSum, PDWORD CheckSum ); @@ -1385,9 +1391,6 @@ DWORD WINAPI UnDecorateSymbolNameW( BOOL WINAPI UnMapAndLoad( PLOADED_IMAGE LoadedImage ); -BOOL WINAPI UnmapDebugInformation( - PIMAGE_DEBUG_INFORMATION DebugInfo -); BOOL WINAPI UpdateDebugInfoFile( PCSTR ImageFileName, PCSTR SymbolPath, PSTR DebugFilePath, PIMAGE_NT_HEADERS32 NtHeaders
(MASM generate those)
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/type.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index 24c8da7da78..64caa76a426 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -160,7 +160,7 @@ BOOL symt_get_address(const struct symt* type, ULONG64* addr) case SymTagLabel: if (!((const struct symt_hierarchy_point*)type)->parent || !symt_get_address(((const struct symt_hierarchy_point*)type)->parent, addr)) - return FALSE; + *addr = 0; *addr += ((const struct symt_hierarchy_point*)type)->loc.offset; break; case SymTagThunk:
Eric Pouech eric.pouech@gmail.com writes:
- children of SymTagExe and SymTagCompiland can now be enumerated
- SymTagCompiland's lexical parent is now reported to SymTagExe
- native doesn't expose compiland's address, so don't expose it
Signed-off-by: Eric Pouech eric.pouech@gmail.com
When your subject is "improve xx" followed by a list of changes, it's a sure sign that the patch should be split.
Also please try to follow the standard commit style, it should use imperative form, so for instance "report parent" instead of "parent is now reported" etc.