parent
d21e5d7c74
commit
2101e29194
@ -0,0 +1,76 @@
|
|||||||
|
diff --git a/debian/changelog b/debian/changelog
|
||||||
|
index bf71cad..9293125 100644
|
||||||
|
--- a/debian/changelog
|
||||||
|
+++ b/debian/changelog
|
||||||
|
@@ -1,3 +1,7 @@
|
||||||
|
+wine-staging (1.7.36-1) UNRELEASED; urgency=low
|
||||||
|
+ * Update patchset for RtlUnwindEx on x86_64 and fix a second bug.
|
||||||
|
+ -- Sebastian Lackner <sebastian@fds-team.de> Sun, 15 Feb 2015 22:24:13 +0100
|
||||||
|
+
|
||||||
|
wine-staging (1.7.36) unstable; urgency=low
|
||||||
|
* Fix an incompatibility of patchinstall.sh with non-bash shells under specific situations.
|
||||||
|
* Improve dinput-Events patch to be compatible with applications which do not explicitly poll for input.
|
||||||
|
diff --git a/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch b/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch
|
||||||
|
index 455a7fc..c5e8903 100644
|
||||||
|
--- a/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch
|
||||||
|
+++ b/patches/ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch
|
||||||
|
@@ -1,18 +1,32 @@
|
||||||
|
-From 7dd7631b611976b237acc63386b26866e5b4b253 Mon Sep 17 00:00:00 2001
|
||||||
|
+From 3c89d2a189c2cc869c7ce81293ab752e3fa57708 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||||
|
Date: Sun, 25 Jan 2015 15:46:05 +0100
|
||||||
|
-Subject: ntdll: Fix check for end_frame in RtlUnwindEx on x86_64.
|
||||||
|
+Subject: ntdll: Fix check for end_frame in RtlUnwindEx on x86_64. (rev 2)
|
||||||
|
|
||||||
|
+Changes in v2:
|
||||||
|
+* Calling wine internal handlers should not mess up the EstablisherFrame.
|
||||||
|
---
|
||||||
|
- dlls/ntdll/signal_x86_64.c | 2 +-
|
||||||
|
- 1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
+ dlls/ntdll/signal_x86_64.c | 5 +++--
|
||||||
|
+ 1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
|
||||||
|
-index 05581c2..e739cdb 100644
|
||||||
|
+index 05581c2..7072569 100644
|
||||||
|
--- a/dlls/ntdll/signal_x86_64.c
|
||||||
|
+++ b/dlls/ntdll/signal_x86_64.c
|
||||||
|
-@@ -3178,7 +3178,7 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec
|
||||||
|
- dispatch.EstablisherFrame = new_context.Rsp;
|
||||||
|
+@@ -3167,6 +3167,7 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec
|
||||||
|
+ }
|
||||||
|
+ else /* hack: call builtin handlers registered in the tib list */
|
||||||
|
+ {
|
||||||
|
++ DWORD64 backup_frame = dispatch.EstablisherFrame;
|
||||||
|
+ while ((ULONG64)teb_frame < new_context.Rsp && (ULONG64)teb_frame < (ULONG64)end_frame)
|
||||||
|
+ {
|
||||||
|
+ TRACE( "found builtin frame %p handler %p\n", teb_frame, teb_frame->Handler );
|
||||||
|
+@@ -3175,10 +3176,10 @@ void WINAPI RtlUnwindEx( PVOID end_frame, PVOID target_ip, EXCEPTION_RECORD *rec
|
||||||
|
+ teb_frame = __wine_pop_frame( teb_frame );
|
||||||
|
+ }
|
||||||
|
+ if ((ULONG64)teb_frame == (ULONG64)end_frame && (ULONG64)end_frame < new_context.Rsp) break;
|
||||||
|
+- dispatch.EstablisherFrame = new_context.Rsp;
|
||||||
|
++ dispatch.EstablisherFrame = backup_frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (context->Rsp == (ULONG64)end_frame) break;
|
||||||
|
@@ -21,5 +35,5 @@ index 05581c2..e739cdb 100644
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
-2.2.1
|
||||||
|
+2.2.2
|
||||||
|
|
||||||
|
diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh
|
||||||
|
index b1ac228..9f8a0fa 100755
|
||||||
|
--- a/patches/patchinstall.sh
|
||||||
|
+++ b/patches/patchinstall.sh
|
||||||
|
@@ -2228,7 +2228,7 @@ fi
|
||||||
|
if test "$enable_ntdll_RtlUnwindEx" -eq 1; then
|
||||||
|
patch_apply ntdll-RtlUnwindEx/0001-ntdll-Fix-check-for-end_frame-in-RtlUnwindEx-on-x86_.patch
|
||||||
|
(
|
||||||
|
- echo '+ { "Sebastian Lackner", "ntdll: Fix check for end_frame in RtlUnwindEx on x86_64.", 1 },';
|
||||||
|
+ echo '+ { "Sebastian Lackner", "ntdll: Fix check for end_frame in RtlUnwindEx on x86_64.", 2 },';
|
||||||
|
) >> "$patchlist"
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in new issue