[PATCH 07/10] dbghelp{dwarf}: added definitions of some GNU extenstions for FORM:s.

Eric Pouech eric.pouech at gmail.com
Sat Sep 11 03:59:24 CDT 2021


And returning failure when encoutering them, as they are not supported yet

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 dlls/dbghelp/dwarf.c |   10 ++++++++++
 dlls/dbghelp/dwarf.h |    4 ++++
 2 files changed, 14 insertions(+)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index 14c1861b85a..3988f2b3d44 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -501,6 +501,8 @@ static void dwarf2_swallow_attribute(dwarf2_traverse_context_t* ctx,
     case DW_FORM_block2: step = dwarf2_parse_u2(ctx); break;
     case DW_FORM_block4: step = dwarf2_parse_u4(ctx); break;
     case DW_FORM_sec_offset:
+    case DW_FORM_GNU_ref_alt:
+    case DW_FORM_GNU_strp_alt:
     case DW_FORM_strp:   step = head->offset_size; break;
     default:
         FIXME("Unhandled attribute form %lx\n", abbrev_attr->form);
@@ -633,6 +635,14 @@ static BOOL dwarf2_fill_attr(const dwarf2_parse_context_t* ctx,
         TRACE("sec_offset<%s>\n", wine_dbgstr_longlong(attr->u.lluvalue));
         break;
 
+    case DW_FORM_GNU_ref_alt:
+        FIXME("Unhandled FORM_GNU_ref_alt\n");
+        attr->u.uvalue = 0;
+        return FALSE;
+    case DW_FORM_GNU_strp_alt:
+        FIXME("Unhandled FORM_GNU_strp_alt\n");
+        attr->u.string = NULL;
+        return FALSE;
     default:
         FIXME("Unhandled attribute form %lx\n", abbrev_attr->form);
         break;
diff --git a/dlls/dbghelp/dwarf.h b/dlls/dbghelp/dwarf.h
index 603c302d136..a50a7251876 100644
--- a/dlls/dbghelp/dwarf.h
+++ b/dlls/dbghelp/dwarf.h
@@ -266,6 +266,10 @@ typedef enum dwarf_form_e
   DW_FORM_exprloc                       = 0x18,
   DW_FORM_flag_present                  = 0x19,
   DW_FORM_ref_sig8                      = 0x20,
+
+  /** GNU extensions */
+  DW_FORM_GNU_ref_alt                   = 0x1f20,
+  DW_FORM_GNU_strp_alt                  = 0x1f21,
 } dwarf_form_t;
 
 /** type encoding */




More information about the wine-devel mailing list