[PATCH 2/9] dbghelp: enhance support for SymTagBlock in SymGetTypeInfo().

Eric Pouech eric.pouech at gmail.com
Tue Oct 5 07:25:11 CDT 2021


- report address and size
- allow enumerating children

Signed-off-by: Eric Pouech <eric.pouech at 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;




More information about the wine-devel mailing list