From 0df720506a40cd5927ef8aba8cffceae91d47809 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 5 Apr 2014 03:47:22 +0200 Subject: [PATCH] Fix build failure caused by dynamic unwind patches on 32-bit. --- ...s-Add-tests-for-dynamic-unwind-table.patch | 20 +++++++++++-------- ...-RtlInstallFunctionTableCallback-to-.patch | 2 +- .../bbbf7d25-cca0-4630-9a83-0dec5e53ecb8.def | 2 +- patches/patch-list.patch | 2 +- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/patches/11-Dynamic_Unwind/0003-ntdll-tests-Add-tests-for-dynamic-unwind-table.patch b/patches/11-Dynamic_Unwind/0003-ntdll-tests-Add-tests-for-dynamic-unwind-table.patch index d35d2caa..5a2dc904 100644 --- a/patches/11-Dynamic_Unwind/0003-ntdll-tests-Add-tests-for-dynamic-unwind-table.patch +++ b/patches/11-Dynamic_Unwind/0003-ntdll-tests-Add-tests-for-dynamic-unwind-table.patch @@ -1,28 +1,30 @@ -From fe1571d281c60aa9a1db503c8d143ac5029982c2 Mon Sep 17 00:00:00 2001 +From f9bc66f164f6d556e383585d761ed7bf9b5187e1 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 5 Apr 2014 01:04:25 +0200 Subject: ntdll/tests: Add tests for dynamic unwind table. --- - dlls/ntdll/tests/exception.c | 133 ++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 133 insertions(+) + dlls/ntdll/tests/exception.c | 137 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 137 insertions(+) diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c -index b4cbaf5..ac70802 100644 +index b4cbaf5..9658aa5 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c -@@ -49,6 +49,10 @@ static NTSTATUS (WINAPI *pNtReadVirtualMemory)(HANDLE, const void*, void*, SIZE +@@ -49,6 +49,12 @@ static NTSTATUS (WINAPI *pNtReadVirtualMemory)(HANDLE, const void*, void*, SIZE static NTSTATUS (WINAPI *pNtTerminateProcess)(HANDLE handle, LONG exit_code); static NTSTATUS (WINAPI *pNtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG); static NTSTATUS (WINAPI *pNtSetInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG); ++#if defined(__x86_64__) +static BOOLEAN (WINAPI *pRtlAddFunctionTable)(RUNTIME_FUNCTION*, DWORD, DWORD64); +static BOOLEAN (WINAPI *pRtlDeleteFunctionTable)(RUNTIME_FUNCTION*); +static BOOLEAN (WINAPI *pRtlInstallFunctionTableCallback)(DWORD64, DWORD64, DWORD, PGET_RUNTIME_FUNCTION_CALLBACK, PVOID, PCWSTR); +static PRUNTIME_FUNCTION (WINAPI *pRtlLookupFunctionEntry)(ULONG64, ULONG64*, UNWIND_HISTORY_TABLE*); ++#endif static BOOL (WINAPI *pIsWow64Process)(HANDLE, PBOOL); #ifdef __i386__ -@@ -1447,6 +1451,122 @@ static void test_virtual_unwind(void) +@@ -1447,6 +1453,122 @@ static void test_virtual_unwind(void) call_virtual_unwind( i, &tests[i] ); } @@ -145,10 +147,11 @@ index b4cbaf5..ac70802 100644 #endif /* __x86_64__ */ START_TEST(exception) -@@ -1473,6 +1593,14 @@ START_TEST(exception) +@@ -1473,6 +1595,16 @@ START_TEST(exception) "NtQueryInformationProcess" ); pNtSetInformationProcess = (void*)GetProcAddress( hntdll, "NtSetInformationProcess" ); ++#if defined(__x86_64__) + pRtlAddFunctionTable = (void *)GetProcAddress( hntdll, + "RtlAddFunctionTable" ); + pRtlDeleteFunctionTable = (void *)GetProcAddress( hntdll, @@ -157,10 +160,11 @@ index b4cbaf5..ac70802 100644 + "RtlInstallFunctionTableCallback" ); + pRtlLookupFunctionEntry = (void *)GetProcAddress( hntdll, + "RtlLookupFunctionEntry" ); ++#endif pIsWow64Process = (void *)GetProcAddress(GetModuleHandleA("kernel32.dll"), "IsWow64Process"); #ifdef __i386__ -@@ -1537,6 +1665,11 @@ START_TEST(exception) +@@ -1537,6 +1669,11 @@ START_TEST(exception) test_virtual_unwind(); diff --git a/patches/11-Dynamic_Unwind/0004-kernel32-Forward-RtlInstallFunctionTableCallback-to-.patch b/patches/11-Dynamic_Unwind/0004-kernel32-Forward-RtlInstallFunctionTableCallback-to-.patch index 0f63623d..028c65b1 100644 --- a/patches/11-Dynamic_Unwind/0004-kernel32-Forward-RtlInstallFunctionTableCallback-to-.patch +++ b/patches/11-Dynamic_Unwind/0004-kernel32-Forward-RtlInstallFunctionTableCallback-to-.patch @@ -1,4 +1,4 @@ -From cc5139cddb7ca4df84b2e1f9b67b39c4c413b3ce Mon Sep 17 00:00:00 2001 +From 71d9e2ae7a81a8ab030933a10984cad5c5a8c7c1 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 5 Apr 2014 02:01:38 +0200 Subject: kernel32: Forward RtlInstallFunctionTableCallback to ntdll diff --git a/patches/11-Dynamic_Unwind/bbbf7d25-cca0-4630-9a83-0dec5e53ecb8.def b/patches/11-Dynamic_Unwind/bbbf7d25-cca0-4630-9a83-0dec5e53ecb8.def index 85a7ef1f..a5354abb 100644 --- a/patches/11-Dynamic_Unwind/bbbf7d25-cca0-4630-9a83-0dec5e53ecb8.def +++ b/patches/11-Dynamic_Unwind/bbbf7d25-cca0-4630-9a83-0dec5e53ecb8.def @@ -1,3 +1,3 @@ -Revision: 3 +Revision: 4 Author: Sebastian Lackner Title: Add implementation for dynamic unwind tables/callbacks on x86_64. diff --git a/patches/patch-list.patch b/patches/patch-list.patch index 782a7741..c72bc00e 100644 --- a/patches/patch-list.patch +++ b/patches/patch-list.patch @@ -57,7 +57,7 @@ index a273502..5fa0cd5 100644 + { "4cd13e94-7f2d-11e3-b5eb-0090f5c75ad5:1", "Erich E. Hoover", "Support for junction points/reparse points." }, + { "5fb1f5c8-7f17-11e3-9b62-0090f5c75ad5:1", "Erich E. Hoover", "Implement TransmitFile." }, + { "3d7c4774-9e7f-11e3-9cfc-0090f5c75ad5:1", "Erich E. Hoover", "Implement missing fonts expected by Silverlight." }, -+ { "bbbf7d25-cca0-4630-9a83-0dec5e53ecb8:3", "Sebastian Lackner", "Add implementation for dynamic unwind tables/callbacks on x86_64." }, ++ { "bbbf7d25-cca0-4630-9a83-0dec5e53ecb8:4", "Sebastian Lackner", "Add implementation for dynamic unwind tables/callbacks on x86_64." }, + { "0b21d7ac-0387-4493-aa38-fbafe3e749f5:1", "Michael Müller", "Decrease minimum SetTimer interval from 15 to 5 ms." }, + { "19835498-8d90-4673-867e-2376af4d7c76:1", "Sebastian Lackner", "Allow to set wined3d strictDrawOrdering via environment variable." }, + { "59bd38b7-bbdc-4cfd-9ccd-1c72c4ed84c0:1", "Sebastian Lackner", "Implement X11DRV_FLUSH_GDI_DISPLAY ExtEscape command." },