Alexandre Julliard : ntdll: Assume leaf function when we can' t find exception information for an ELF module.
Alexandre Julliard
julliard at winehq.org
Fri Oct 16 11:26:09 CDT 2009
Module: wine
Branch: master
Commit: 905609b73bfdedf9b409a3ff86ac9767d9a00af4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=905609b73bfdedf9b409a3ff86ac9767d9a00af4
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Oct 16 13:39:15 2009 +0200
ntdll: Assume leaf function when we can't find exception information for an ELF module.
---
dlls/ntdll/signal_x86_64.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index b5ff237..94b3d3c 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -1849,9 +1849,10 @@ static NTSTATUS call_stack_handlers( EXCEPTION_RECORD *rec, CONTEXT *orig_contex
const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context.Rip - 1), &bases );
if (!fde)
{
- ERR( "no exception data found in %s for function %lx\n",
- module ? debugstr_w(module->BaseDllName.Buffer) : "system library", context.Rip );
- break;
+ /* assume leaf function */
+ context.Rip = *(ULONG64 *)context.Rsp;
+ context.Rsp += sizeof(ULONG64);
+ continue;
}
status = dwarf_virtual_unwind( context.Rip, &dispatch.EstablisherFrame, &new_context,
fde, &bases, &dispatch.LanguageHandler, &dispatch.HandlerData );
@@ -2712,9 +2713,10 @@ void WINAPI RtlUnwindEx( ULONG64 end_frame, ULONG64 target_ip, EXCEPTION_RECORD
const struct dwarf_fde *fde = _Unwind_Find_FDE( (void *)(context.Rip - 1), &bases );
if (!fde)
{
- ERR( "no exception data found in %s for function %lx\n",
- module ? debugstr_w(module->BaseDllName.Buffer) : "system library", context.Rip );
- raise_status( STATUS_BAD_FUNCTION_TABLE, rec );
+ /* assume leaf function */
+ context.Rip = *(ULONG64 *)context.Rsp;
+ context.Rsp += sizeof(ULONG64);
+ continue;
}
dispatch.FunctionEntry = NULL;
status = dwarf_virtual_unwind( context.Rip, &dispatch.EstablisherFrame, &new_context, fde,
More information about the wine-cvs
mailing list