Rebase against e83f427a65726bfdefd2712a96f228e720c8b274

This commit is contained in:
Alistair Leslie-Hughes 2019-09-19 08:53:36 +10:00
parent 6bee4b6e76
commit 692d7d43e0
4 changed files with 42 additions and 32 deletions

View File

@ -1,4 +1,4 @@
From 2c63306841e4cca19e722282efab78af21d3f5eb Mon Sep 17 00:00:00 2001
From 0b9ca95d49019b20fd8088c64217f524a9fe476f Mon Sep 17 00:00:00 2001
From: Andrew Wesie <awesie@gmail.com>
Date: Fri, 27 Jul 2018 01:26:56 -0500
Subject: [PATCH] Use NtContinue to continue execution after exceptions.
@ -14,9 +14,9 @@ unlikely that it has the correct behavior if called by an external caller.
The __syscall_NtContinue wrapper is used so that it can be hooked by a
third-party.
---
dlls/ntdll/exception.c | 9 +++++++--
dlls/ntdll/signal_i386.c | 3 ++-
2 files changed, 9 insertions(+), 3 deletions(-)
dlls/ntdll/exception.c | 9 +++++++--
dlls/ntdll/signal_i386.c | 10 ++++++++--
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/exception.c b/dlls/ntdll/exception.c
index 3b85f1efa04..411d2bf5b8f 100644
@ -39,10 +39,10 @@ index 3b85f1efa04..411d2bf5b8f 100644
/*************************************************************
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 50152370b49..59255ed7493 100644
index 87ffd62c8c5..6be23f850ba 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -2589,6 +2589,7 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
@@ -2546,19 +2546,25 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
__ASM_CFI(".cfi_same_value %ebp\n\t")
"ret $16" ) /* actually never returns */
@ -50,15 +50,26 @@ index 50152370b49..59255ed7493 100644
/*******************************************************************
* NtRaiseException (NTDLL.@)
@@ -2596,7 +2597,7 @@ __ASM_STDCALL_FUNC( RtlUnwind, 16,
*/
NTSTATUS WINAPI NtRaiseException( EXCEPTION_RECORD *rec, CONTEXT *context, BOOL first_chance )
{
NTSTATUS status = raise_exception( rec, context, first_chance );
- if (status == STATUS_SUCCESS) NtSetContextThread( GetCurrentThread(), context );
+ if (status == STATUS_SUCCESS) __syscall_NtContinue(context, FALSE);
return status;
+ NTSTATUS status;
+
if (first_chance)
{
- NTSTATUS status = send_debug_event( rec, TRUE, context );
+ status = send_debug_event( rec, TRUE, context );
if (status == DBG_CONTINUE || status == DBG_EXCEPTION_HANDLED)
NtSetContextThread( GetCurrentThread(), context );
}
- return raise_exception( rec, context, first_chance );
+ status = raise_exception( rec, context, first_chance );
+ if (status == STATUS_SUCCESS)
+ __syscall_NtContinue(context, FALSE);
+ return status;
}
--
2.17.1

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "12c09051b48507cf8bb37d500719661d0c6ad9f0"
echo "e83f427a65726bfdefd2712a96f228e720c8b274"
}
# Show version information

View File

@ -1,4 +1,4 @@
From e346f494c426a300082db6dd8f7ec42cb892e241 Mon Sep 17 00:00:00 2001
From a18943341e17fef24e9b7f8dd85458a2e33bedab Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 19 Mar 2015 02:07:24 +0100
Subject: [PATCH] user32: Avoid unnecessary wineserver calls in
@ -10,10 +10,10 @@ Subject: [PATCH] user32: Avoid unnecessary wineserver calls in
2 files changed, 19 insertions(+)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index dcfb251..92cfd25 100644
index cbe9920384f..cdb8f4047a1 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -2755,6 +2755,18 @@ static BOOL peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags
@@ -2756,6 +2756,18 @@ static int peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags,
unsigned int hw_id = 0; /* id of previous hardware message */
void *buffer;
size_t buffer_size = 256;
@ -30,9 +30,9 @@ index dcfb251..92cfd25 100644
+ if (!(shm->queue_bits & filter)) return FALSE;
+ }
if (!(buffer = HeapAlloc( GetProcessHeap(), 0, buffer_size ))) return FALSE;
if (!(buffer = HeapAlloc( GetProcessHeap(), 0, buffer_size ))) return -1;
@@ -2769,6 +2781,8 @@ static BOOL peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags
@@ -2770,6 +2782,8 @@ static int peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags,
thread_info->msg_source = prev_source;
@ -42,10 +42,10 @@ index dcfb251..92cfd25 100644
{
req->flags = flags;
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
index bf02ee5..fdbd77b 100644
index c11aae707c9..74f56925211 100644
--- a/dlls/user32/user_private.h
+++ b/dlls/user32/user_private.h
@@ -165,6 +165,8 @@ struct wm_char_mapping_data
@@ -169,6 +169,8 @@ struct wm_char_mapping_data
MSG get_msg;
};
@ -54,7 +54,7 @@ index bf02ee5..fdbd77b 100644
/* this is the structure stored in TEB->Win32ClientInfo */
/* no attempt is made to keep the layout compatible with the Windows one */
struct user_thread_info
@@ -185,6 +187,7 @@ struct user_thread_info
@@ -189,6 +191,7 @@ struct user_thread_info
DWORD GetMessageTimeVal; /* Value for GetMessageTime */
DWORD GetMessagePosVal; /* Value for GetMessagePos */
ULONG_PTR GetMessageExtraInfoVal; /* Value for GetMessageExtraInfo */
@ -62,7 +62,7 @@ index bf02ee5..fdbd77b 100644
struct user_key_state_info *key_state; /* Cache of global key state */
HWND top_window; /* Desktop window */
HWND msg_window; /* HWND_MESSAGE parent window */
@@ -193,6 +196,8 @@ struct user_thread_info
@@ -197,6 +200,8 @@ struct user_thread_info
C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) );
@ -72,5 +72,5 @@ index bf02ee5..fdbd77b 100644
extern BOOL (WINAPI *imm_register_window)(HWND) DECLSPEC_HIDDEN;
extern void (WINAPI *imm_unregister_window)(HWND) DECLSPEC_HIDDEN;
--
1.9.1
2.17.1

View File

@ -1,16 +1,16 @@
From 1a841fb1e6ab0e8fffa743bb287bb6422614f69a Mon Sep 17 00:00:00 2001
From 1b4774a6a67f8ff97838bf330b809d2a8aabf00e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 7 Sep 2017 00:38:09 +0200
Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
---
dlls/kernel32/tests/loader.c | 7 +-
dlls/ntdll/signal_x86_64.c | 3 +
dlls/ntdll/signal_x86_64.c | 2 +
dlls/ntdll/thread.c | 10 ++
libs/wine/loader.c | 4 +
tools/winebuild/parser.c | 2 +-
tools/winebuild/spec32.c | 230 ++++++++++++++++++++++++++++++++++-
6 files changed, 248 insertions(+), 8 deletions(-)
6 files changed, 247 insertions(+), 8 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index b4abbc0f59a..32b050850d2 100644
@ -40,19 +40,18 @@ index b4abbc0f59a..32b050850d2 100644
todo_wine ok(0, "%s: Export is a stub-function, skipping\n", func_name);
continue;
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c
index 2c26bd5604a..c6f16e5fae8 100644
index fbb2daff904..1579a94af2c 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -305,6 +305,8 @@ static inline struct amd64_thread_data *amd64_thread_data(void)
return (struct amd64_thread_data *)NtCurrentTeb()->SystemReserved2;
@@ -355,6 +355,7 @@ static inline void set_sigcontext( const CONTEXT *context, ucontext_t *sigcontex
#endif
}
+extern void DECLSPEC_NORETURN __wine_syscall_dispatcher( void );
+
/***********************************************************************
* Definitions for Win32 unwind tables
*/
@@ -3172,6 +3174,7 @@ NTSTATUS signal_alloc_thread( TEB **teb )
@@ -3118,6 +3119,7 @@ NTSTATUS signal_alloc_thread( TEB **teb )
{
(*teb)->Tib.Self = &(*teb)->Tib;
(*teb)->Tib.ExceptionList = (void *)~0UL;
@ -118,7 +117,7 @@ index f440881a0ec..6e1a613ae45 100644
if (odp->flags & (FLAG_FORWARD | FLAG_REGISTER))
return 0;
diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c
index 942645b5080..45503987094 100644
index 800cb230231..880a99c1e9a 100644
--- a/tools/winebuild/spec32.c
+++ b/tools/winebuild/spec32.c
@@ -372,11 +372,11 @@ static void output_relay_debug( DLLSPEC *spec )