Ken Thomases : dbghelp: Add partial support for version 3 of DWARF CIEs which are generated by Clang /LLVM.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jun 25 08:19:40 CDT 2015


Module: wine
Branch: master
Commit: 500df92108ce726c177f62d8c18b4de9747b22a3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=500df92108ce726c177f62d8c18b4de9747b22a3

Author: Ken Thomases <ken at codeweavers.com>
Date:   Wed Jun 24 17:17:48 2015 -0500

dbghelp: Add partial support for version 3 of DWARF CIEs which are generated by Clang/LLVM.

---

 dlls/dbghelp/dwarf.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/dbghelp/dwarf.c b/dlls/dbghelp/dwarf.c
index fa9e559..03eb43b 100644
--- a/dlls/dbghelp/dwarf.c
+++ b/dlls/dbghelp/dwarf.c
@@ -2629,7 +2629,7 @@ static BOOL parse_cie_details(dwarf2_traverse_context_t* ctx, struct frame_info*
 
     /* parse the CIE first */
     version = dwarf2_parse_byte(ctx);
-    if (version != 1)
+    if (version != 1 && version != 3)
     {
         FIXME("unknown CIE version %u at %p\n", version, ctx->data - 1);
         return FALSE;
@@ -2639,7 +2639,10 @@ static BOOL parse_cie_details(dwarf2_traverse_context_t* ctx, struct frame_info*
 
     info->code_align = dwarf2_leb128_as_unsigned(ctx);
     info->data_align = dwarf2_leb128_as_signed(ctx);
-    info->retaddr_reg = dwarf2_parse_byte(ctx);
+    if (version == 1)
+        info->retaddr_reg = dwarf2_parse_byte(ctx);
+    else
+        info->retaddr_reg = dwarf2_leb128_as_unsigned(ctx);
     info->state.cfa_rule = RULE_CFA_OFFSET;
 
     end = NULL;




More information about the wine-cvs mailing list