Commit 82dd799d authored by Ken Thomases's avatar Ken Thomases Committed by Alexandre Julliard

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

parent 6444290a
...@@ -1342,7 +1342,7 @@ static NTSTATUS dwarf_virtual_unwind( ULONG64 ip, ULONG64 *frame,CONTEXT *contex ...@@ -1342,7 +1342,7 @@ static NTSTATUS dwarf_virtual_unwind( ULONG64 ip, ULONG64 *frame,CONTEXT *contex
/* parse the CIE first */ /* parse the CIE first */
if (cie->version != 1) if (cie->version != 1 && cie->version != 3)
{ {
FIXME( "unknown CIE version %u at %p\n", cie->version, cie ); FIXME( "unknown CIE version %u at %p\n", cie->version, cie );
return STATUS_INVALID_DISPOSITION; return STATUS_INVALID_DISPOSITION;
...@@ -1351,7 +1351,10 @@ static NTSTATUS dwarf_virtual_unwind( ULONG64 ip, ULONG64 *frame,CONTEXT *contex ...@@ -1351,7 +1351,10 @@ static NTSTATUS dwarf_virtual_unwind( ULONG64 ip, ULONG64 *frame,CONTEXT *contex
info.code_align = dwarf_get_uleb128( &ptr ); info.code_align = dwarf_get_uleb128( &ptr );
info.data_align = dwarf_get_sleb128( &ptr ); info.data_align = dwarf_get_sleb128( &ptr );
if (cie->version == 1)
info.retaddr_reg = *ptr++; info.retaddr_reg = *ptr++;
else
info.retaddr_reg = dwarf_get_uleb128( &ptr );
info.state.cfa_rule = RULE_CFA_OFFSET; info.state.cfa_rule = RULE_CFA_OFFSET;
TRACE( "function %lx base %p cie %p len %x id %x version %x aug '%s' code_align %lu data_align %ld retaddr %s\n", TRACE( "function %lx base %p cie %p len %x id %x version %x aug '%s' code_align %lu data_align %ld retaddr %s\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment