Commit a97b3f64 authored by Alexandre Julliard's avatar Alexandre Julliard

winedump: Handle ARM64 exception unwind info with flag==3.

parent 3825af60
......@@ -1645,11 +1645,14 @@ static void dump_arm64_unwind_info( const struct runtime_function_arm64 *func )
const struct unwind_info_arm64 *info;
const struct unwind_info_ext_arm64 *infoex;
const struct unwind_info_epilog_arm64 *infoepi;
const struct runtime_function_arm64 *parent_func;
const BYTE *ptr;
unsigned int i, rva, codes, epilogs;
if (func->Flag)
switch (func->Flag)
{
case 1:
case 2:
printf( "\nFunction %08x-%08x:\n", func->BeginAddress,
func->BeginAddress + func->FunctionLength * 4 );
printf( " len=%#x flag=%x regF=%u regI=%u H=%u CR=%u frame=%x\n",
......@@ -1657,6 +1660,13 @@ static void dump_arm64_unwind_info( const struct runtime_function_arm64 *func )
func->H, func->CR, func->FrameSize );
dump_arm64_packed_info( func );
return;
case 3:
rva = func->UnwindData & ~3;
parent_func = RVA( rva, sizeof(*parent_func) );
printf( "\nFunction %08x-%08x:\n", func->BeginAddress,
func->BeginAddress + 12 /* adrl x16, <dest>; br x16 */ );
printf( " forward to parent %08x\n", parent_func->BeginAddress );
return;
}
rva = func->UnwindData;
......
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