Eric Pouech : dbghelp/dwarf: Add support for FORM_exprloc.

Alexandre Julliard julliard at winehq.org
Tue Sep 14 16:00:14 CDT 2021


Module: wine
Branch: master
Commit: 40877456ea0c7a959acca92631d1f1b8c89786f7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=40877456ea0c7a959acca92631d1f1b8c89786f7

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Sat Sep 11 10:59:12 2021 +0200

dbghelp/dwarf: Add support for FORM_exprloc.

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dbghelp/dwarf.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index a9a72ee6566..b7df7f108d9 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -495,6 +495,7 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx,
     case DW_FORM_ref_udata:
     case DW_FORM_udata:  step = dwarf2_leb128_length(ctx); break;
     case DW_FORM_string: step = strlen((const char*)ctx->data) + 1; break;
+    case DW_FORM_exprloc:
     case DW_FORM_block:  step = dwarf2_leb128_as_unsigned(ctx); break;
     case DW_FORM_block1: step = dwarf2_parse_byte(ctx); break;
     case DW_FORM_block2: step = dwarf2_parse_u2(ctx); break;
@@ -604,6 +605,7 @@ static void dwarf2_fill_attr(const dwarf2_parse_context_t* ctx,
         break;
 
     case DW_FORM_block:
+    case DW_FORM_exprloc:
         attr->u.block.size = dwarf2_get_leb128_as_unsigned(data, &attr->u.block.ptr);
         TRACE("block<%p,%u>\n", attr->u.block.ptr, attr->u.block.size);
         break;
@@ -955,6 +957,7 @@ static BOOL dwarf2_compute_location_attr(dwarf2_parse_context_t* ctx,
     case DW_FORM_block1:
     case DW_FORM_block2:
     case DW_FORM_block4:
+    case DW_FORM_exprloc:
         break;
     default: FIXME("Unsupported yet form %lx\n", xloc.form);
         return FALSE;
@@ -1696,6 +1699,7 @@ static void dwarf2_parse_variable(dwarf2_subprogram_t* subpgm,
         case DW_FORM_block1:
         case DW_FORM_block2:
         case DW_FORM_block4:
+        case DW_FORM_exprloc:
             v.n1.n2.vt = VT_I4;
             switch (value.u.block.size)
             {




More information about the wine-cvs mailing list