[PATCH] dbghelp: Support UWOP_EPILOG in unwind
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Thu Sep 9 01:14:47 CDT 2021
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/dbghelp/cpu_x86_64.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/dbghelp/cpu_x86_64.c b/dlls/dbghelp/cpu_x86_64.c
index 8e8ac85dd2f..4fd8d76e010 100644
--- a/dlls/dbghelp/cpu_x86_64.c
+++ b/dlls/dbghelp/cpu_x86_64.c
@@ -209,6 +209,19 @@ static void dump_unwind_info(struct cpu_stack_walk* csw, ULONG64 base, RUNTIME_F
case UWOP_PUSH_MACHFRAME:
TRACE("PUSH_MACHFRAME %u\n", info->UnwindCode[i].u.OpInfo);
break;
+ case UWOP_EPILOG:
+ if (info->Version == 2)
+ {
+ unsigned int offset;
+ if (info->UnwindCode[i].u.OpInfo)
+ offset = info->UnwindCode[i].u.CodeOffset;
+ else
+ offset = (info->UnwindCode[i+1].u.OpInfo << 8) + info->UnwindCode[i+1].u.CodeOffset;
+ TRACE("UWOP_EPILOG %u offset %u\n", info->UnwindCode[i].u.OpInfo, offset);
+ i += 1;
+ break;
+ }
+ /* Fall through */
default:
FIXME("unknown code %u\n", info->UnwindCode[i].u.UnwindOp);
break;
@@ -490,7 +503,7 @@ static BOOL interpret_function_table_entry(struct cpu_stack_walk* csw,
return FALSE;
}
- if (info->Version != 1)
+ if (info->Version != 1 && info->Version != 2)
{
WARN("unknown unwind info version %u at %lx\n", info->Version, base + function->UnwindData);
return FALSE;
--
2.33.0
More information about the wine-devel
mailing list