You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 384b0b35c357ca31ccb080162e1f39f93ec70054.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 3442d399135d784923bda352f26692cc63cc746c Mon Sep 17 00:00:00 2001
|
||||
From d87b3ff060a52b851aec1f66ff4b04fceebfc8ab Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 4 Oct 2014 02:53:22 +0200
|
||||
Subject: [PATCH] ntdll: Setup a temporary signal handler during process
|
||||
@@ -15,10 +15,10 @@ Subject: [PATCH] ntdll: Setup a temporary signal handler during process
|
||||
7 files changed, 74 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index 6c8f3a4996d..5d35b68476b 100644
|
||||
index 4d95c29ab24..4406c1eb634 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -2212,6 +2212,8 @@ void __wine_main( int argc, char *argv[], char *envp[] )
|
||||
@@ -2532,6 +2532,8 @@ void __wine_main( int argc, char *argv[], char *envp[] )
|
||||
#endif
|
||||
|
||||
virtual_init();
|
||||
@@ -28,10 +28,10 @@ index 6c8f3a4996d..5d35b68476b 100644
|
||||
|
||||
#ifdef __APPLE__
|
||||
diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c
|
||||
index c24fa3a9b78..516c30a95d2 100644
|
||||
index fe51629838c..a39f158530a 100644
|
||||
--- a/dlls/ntdll/unix/signal_arm.c
|
||||
+++ b/dlls/ntdll/unix/signal_arm.c
|
||||
@@ -892,6 +892,12 @@ void signal_init_process(void)
|
||||
@@ -1584,6 +1584,12 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -45,10 +45,10 @@ index c24fa3a9b78..516c30a95d2 100644
|
||||
/***********************************************************************
|
||||
* call_init_thunk
|
||||
diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c
|
||||
index 5b8fff6a406..a005eb3ceaa 100644
|
||||
index 794aa7b2925..bf8e69f1661 100644
|
||||
--- a/dlls/ntdll/unix/signal_arm64.c
|
||||
+++ b/dlls/ntdll/unix/signal_arm64.c
|
||||
@@ -1077,6 +1077,12 @@ void signal_init_process(void)
|
||||
@@ -1381,6 +1381,12 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -62,10 +62,10 @@ index 5b8fff6a406..a005eb3ceaa 100644
|
||||
/***********************************************************************
|
||||
* call_init_thunk
|
||||
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
|
||||
index eb69af9ce0e..39a36118e22 100644
|
||||
index cc8605c2a4f..bfd0c3eb7ef 100644
|
||||
--- a/dlls/ntdll/unix/signal_i386.c
|
||||
+++ b/dlls/ntdll/unix/signal_i386.c
|
||||
@@ -1780,6 +1780,30 @@ static BOOL handle_syscall_trap( ucontext_t *sigcontext )
|
||||
@@ -1839,6 +1839,30 @@ static BOOL handle_syscall_trap( ucontext_t *sigcontext )
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ index eb69af9ce0e..39a36118e22 100644
|
||||
/**********************************************************************
|
||||
* segv_handler
|
||||
*
|
||||
@@ -2367,6 +2391,34 @@ void signal_init_process(void)
|
||||
@@ -2410,6 +2434,34 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -132,10 +132,10 @@ index eb69af9ce0e..39a36118e22 100644
|
||||
/***********************************************************************
|
||||
* call_init_thunk
|
||||
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
|
||||
index ac8eddf739e..116bbaafd79 100644
|
||||
index cc070dda5ae..3b0f671afe2 100644
|
||||
--- a/dlls/ntdll/unix/signal_x86_64.c
|
||||
+++ b/dlls/ntdll/unix/signal_x86_64.c
|
||||
@@ -2624,6 +2624,12 @@ void signal_init_process(void)
|
||||
@@ -2462,6 +2462,12 @@ void signal_init_process(void)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -149,22 +149,22 @@ index ac8eddf739e..116bbaafd79 100644
|
||||
/***********************************************************************
|
||||
* call_init_thunk
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index 339a93bf2db..38314688cba 100644
|
||||
index fa7b97117ff..12a484d079a 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -237,6 +237,7 @@ extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
@@ -241,6 +241,7 @@ extern void signal_init_threading(void) DECLSPEC_HIDDEN;
|
||||
extern NTSTATUS signal_alloc_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void signal_init_thread( TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void signal_init_process(void) DECLSPEC_HIDDEN;
|
||||
+extern void signal_init_early(void) DECLSPEC_HIDDEN;
|
||||
extern void DECLSPEC_NORETURN signal_start_thread( PRTL_THREAD_START_ROUTINE entry, void *arg,
|
||||
BOOL suspend, TEB *teb ) DECLSPEC_HIDDEN;
|
||||
extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int), TEB *teb ) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index 49dd3aa51e2..35a9b43d577 100644
|
||||
index 45089ae5845..0a9c4f2feb0 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -3275,7 +3275,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
@@ -3279,7 +3279,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
|
||||
mutex_lock( &virtual_mutex ); /* no need for signal masking inside signal handler */
|
||||
vprot = get_page_vprot( page );
|
||||
@@ -174,5 +174,5 @@ index 49dd3aa51e2..35a9b43d577 100644
|
||||
struct thread_stack_info stack_info;
|
||||
if (!is_inside_thread_stack( page, &stack_info ))
|
||||
--
|
||||
2.30.2
|
||||
2.38.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From c16f89f347e49c107a46dda6d3b9bb811ccceb47 Mon Sep 17 00:00:00 2001
|
||||
From b6a6f7448cb4f202edec1a2644315e745b709afe Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Wesie <awesie@gmail.com>
|
||||
Date: Fri, 24 Apr 2020 14:55:14 -0500
|
||||
Subject: [PATCH] ntdll: Track if a WRITECOPY page has been modified.
|
||||
@@ -12,18 +12,18 @@ Signed-off-by: Andrew Wesie <awesie@gmail.com>
|
||||
1 file changed, 19 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
|
||||
index d727ff341df..d39f73c8d85 100644
|
||||
index 578ef4139b8..ff15840adb6 100644
|
||||
--- a/dlls/ntdll/unix/virtual.c
|
||||
+++ b/dlls/ntdll/unix/virtual.c
|
||||
@@ -125,6 +125,7 @@ struct file_view
|
||||
@@ -119,6 +119,7 @@ struct file_view
|
||||
#define VPROT_GUARD 0x10
|
||||
#define VPROT_COMMITTED 0x20
|
||||
#define VPROT_WRITEWATCH 0x40
|
||||
+#define VPROT_WRITTEN 0x80
|
||||
/* per-mapping protection flags */
|
||||
#define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */
|
||||
#define VPROT_NATIVE 0x0400
|
||||
@@ -1120,7 +1121,7 @@ static int get_unix_prot( BYTE vprot )
|
||||
|
||||
@@ -1072,7 +1073,7 @@ static int get_unix_prot( BYTE vprot )
|
||||
#if defined(__i386__)
|
||||
if (vprot & VPROT_WRITECOPY)
|
||||
{
|
||||
@@ -32,7 +32,7 @@ index d727ff341df..d39f73c8d85 100644
|
||||
prot = (prot & ~PROT_WRITE) | PROT_READ;
|
||||
else
|
||||
prot |= PROT_WRITE | PROT_READ;
|
||||
@@ -1557,7 +1558,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
|
||||
@@ -1635,7 +1636,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz
|
||||
*/
|
||||
static DWORD get_win32_prot( BYTE vprot, unsigned int map_prot )
|
||||
{
|
||||
@@ -45,7 +45,7 @@ index d727ff341df..d39f73c8d85 100644
|
||||
if (vprot & VPROT_GUARD) ret |= PAGE_GUARD;
|
||||
if (map_prot & SEC_NOCACHE) ret |= PAGE_NOCACHE;
|
||||
return ret;
|
||||
@@ -1668,12 +1673,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr
|
||||
@@ -1746,12 +1751,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr
|
||||
if (view->protect & VPROT_WRITEWATCH)
|
||||
{
|
||||
/* each page may need different protections depending on write watch flag */
|
||||
@@ -69,7 +69,7 @@ index d727ff341df..d39f73c8d85 100644
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -3433,7 +3447,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
@@ -3325,7 +3339,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack )
|
||||
}
|
||||
if (vprot & VPROT_WRITECOPY)
|
||||
{
|
||||
@@ -79,5 +79,5 @@ index d727ff341df..d39f73c8d85 100644
|
||||
}
|
||||
/* ignore fault if page is writable now */
|
||||
--
|
||||
2.33.0
|
||||
2.38.1
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Fixes: [29384] Multiple applications expect correct handling of WRITECOPY memory protection (Voobly fails to launch Age of Empires II, MSYS2)
|
||||
Depends: ntdll-ForceBottomUpAlloc
|
||||
#Depends: ntdll-ForceBottomUpAlloc
|
||||
# Causes regressions?
|
||||
# https://bugs.wine-staging.com/show_bug.cgi?id=207
|
||||
# https://bugs.wine-staging.com/show_bug.cgi?id=521
|
||||
|
Reference in New Issue
Block a user