Rebase against bf83d755d987fec552cd1dce30638c31c49ab760.

This commit is contained in:
Zebediah Figura
2020-05-29 19:13:43 -05:00
parent 4e692b5301
commit 06877e55b1
22 changed files with 785 additions and 1065 deletions

View File

@@ -1,4 +1,4 @@
From b72a4fc5697e18fab51553bf182e10352893b09f Mon Sep 17 00:00:00 2001
From 45598a4fa2472c7df34c472fb0c193d9948a469d 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.
@@ -6,11 +6,12 @@ Subject: [PATCH] tools/winebuild: Add syscall thunks for 64 bit.
---
dlls/kernel32/tests/loader.c | 7 +-
dlls/ntdll/signal_x86_64.c | 2 +
dlls/ntdll/thread.c | 17 ++-
dlls/ntdll/thread.c | 13 +-
libs/wine/loader.c | 4 +
programs/wineboot/wineboot.c | 4 +
tools/winebuild/parser.c | 2 +-
tools/winebuild/spec32.c | 285 ++++++++++++++++++++++++++++++++++-
6 files changed, 307 insertions(+), 10 deletions(-)
7 files changed, 307 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index 95939ba6bde..ae5462f6e55 100644
@@ -40,7 +41,7 @@ index 95939ba6bde..ae5462f6e55 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 31af1e98d3f..324a92b41a9 100644
index e92470e9606..e089afd71f5 100644
--- a/dlls/ntdll/signal_x86_64.c
+++ b/dlls/ntdll/signal_x86_64.c
@@ -354,6 +354,7 @@ static inline void set_sigcontext( const CONTEXT *context, ucontext_t *sigcontex
@@ -60,7 +61,7 @@ index 31af1e98d3f..324a92b41a9 100644
}
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 9fcbd8310ed..ed1183b0512 100644
index fb5320603dc..20934448fa3 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -54,6 +54,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(thread);
@@ -72,18 +73,7 @@ index 9fcbd8310ed..ed1183b0512 100644
void (WINAPI *kernel32_start_process)(LPTHREAD_START_ROUTINE,void*) = NULL;
/* info passed to a starting thread */
@@ -206,6 +208,10 @@ static void fill_user_shared_data( struct _KUSER_SHARED_DATA *data )
data->NumberOfPhysicalPages = sbi.MmNumberOfPhysicalPages;
wcscpy( data->NtSystemRoot, windows_dir );
+ /* Pretend we don't support the SYSCALL instruction on x86-64. Needed for
+ * Chromium; see output_syscall_thunks_x64() in winebuild. */
+ data->SystemCallPad[0] = 1;
+
switch (sci.Architecture)
{
case PROCESSOR_ARCHITECTURE_INTEL:
@@ -312,9 +318,9 @@ TEB *thread_init(void)
@@ -230,9 +232,9 @@ TEB *thread_init(void)
/* reserve space for shared user data */
addr = (void *)0x7ffe0000;
@@ -95,7 +85,7 @@ index 9fcbd8310ed..ed1183b0512 100644
if (status)
{
MESSAGE( "wine: failed to map the shared user data: %08x\n", status );
@@ -322,6 +328,13 @@ TEB *thread_init(void)
@@ -240,6 +242,13 @@ TEB *thread_init(void)
}
user_shared_data = addr;
@@ -125,6 +115,21 @@ index 4597a6cb324..3d0d75e9c6d 100644
sec->Characteristics = (IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ);
sec++;
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index 21be0f55fb0..f84a7fe8a0c 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -235,6 +235,10 @@ static void create_user_shared_data(void)
data->NumberOfPhysicalPages = sbi.MmNumberOfPhysicalPages;
wcscpy( data->NtSystemRoot, L"C:\\windows" );
+ /* Pretend we don't support the SYSCALL instruction on x86-64. Needed for
+ * Chromium; see output_syscall_thunks_x64() in winebuild. */
+ data->SystemCallPad[0] = 1;
+
features = data->ProcessorFeatures;
switch (sci.Architecture)
{
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index 74216f8bb6e..820516329a4 100644
--- a/tools/winebuild/parser.c