- 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;