diff --git a/patches/ntdll-RtlAddGrowableFunctionTable/0001-ntdll-Add-RtlAddGrowableFunctionTable-stub.patch b/patches/ntdll-RtlAddGrowableFunctionTable/0001-ntdll-Add-RtlAddGrowableFunctionTable-stub.patch new file mode 100644 index 00000000..d4e5bc9f --- /dev/null +++ b/patches/ntdll-RtlAddGrowableFunctionTable/0001-ntdll-Add-RtlAddGrowableFunctionTable-stub.patch @@ -0,0 +1,93 @@ +From 587e15322d1f68aa61c01ec3a92d13aeda1af6d9 Mon Sep 17 00:00:00 2001 +From: Austin English +Date: Wed, 24 Jan 2018 22:27:51 -0700 +Subject: [PATCH] ntdll: Add RtlAddGrowableFunctionTable stub + +Signed-off-by: Alex Henrie +--- + dlls/ntdll/ntdll.spec | 1 + + dlls/ntdll/signal_arm.c | 10 ++++++++++ + dlls/ntdll/signal_arm64.c | 10 ++++++++++ + dlls/ntdll/signal_x86_64.c | 12 ++++++++++++ + 4 files changed, 33 insertions(+) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index c602dbb..4fa9c7d 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -434,6 +434,7 @@ + @ stdcall RtlAddMandatoryAce(ptr long long long long ptr) + # @ stub RtlAddRange + @ cdecl -arch=arm,arm64,x86_64 RtlAddFunctionTable(ptr long long) ++@ cdecl -arch=arm,arm64,x86_64 RtlAddGrowableFunctionTable(ptr ptr long long long long) + @ stdcall RtlAddRefActivationContext(ptr) + # @ stub RtlAddRefMemoryStream + @ stdcall RtlAddVectoredContinueHandler(long ptr) +diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c +index 5ca45ea..f5b9a64 100644 +--- a/dlls/ntdll/signal_arm.c ++++ b/dlls/ntdll/signal_arm.c +@@ -1058,6 +1058,16 @@ BOOLEAN CDECL RtlAddFunctionTable( RUNTIME_FUNCTION *table, DWORD count, DWORD a + return TRUE; + } + ++/************************************************************************* ++ * RtlAddGrowableFunctionTable (NTDLL.@) ++ */ ++DWORD WINAPI RtlAddGrowableFunctionTable( void **table, RUNTIME_FUNCTION *functions, DWORD count, DWORD max_count, ++ ULONG_PTR base, ULONG_PTR end ) ++{ ++ FIXME( "(%p, %p, %d, %d, %ld, %ld) stub!\n", table, functions, count, max_count, base, end ); ++ if (table) *table = NULL; ++ return S_OK; ++} + + /********************************************************************** + * RtlDeleteFunctionTable (NTDLL.@) +diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c +index 923bc39..9e113ed 100644 +--- a/dlls/ntdll/signal_arm64.c ++++ b/dlls/ntdll/signal_arm64.c +@@ -976,6 +976,16 @@ BOOLEAN CDECL RtlAddFunctionTable( RUNTIME_FUNCTION *table, DWORD count, ULONG_P + return TRUE; + } + ++/************************************************************************* ++ * RtlAddGrowableFunctionTable (NTDLL.@) ++ */ ++DWORD WINAPI RtlAddGrowableFunctionTable( void **table, RUNTIME_FUNCTION *functions, DWORD count, DWORD max_count, ++ ULONG_PTR base, ULONG_PTR end ) ++{ ++ FIXME( "(%p, %p, %d, %d, %ld, %ld) stub!\n", table, functions, count, max_count, base, end ); ++ if (table) *table = NULL; ++ return S_OK; ++} + + /********************************************************************** + * RtlDeleteFunctionTable (NTDLL.@) +diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c +index f5dfd27..a6934ba 100644 +--- a/dlls/ntdll/signal_x86_64.c ++++ b/dlls/ntdll/signal_x86_64.c +@@ -3506,6 +3506,18 @@ BOOLEAN CDECL RtlInstallFunctionTableCallback( DWORD64 table, DWORD64 base, DWOR + } + + ++/************************************************************************* ++ * RtlAddGrowableFunctionTable (NTDLL.@) ++ */ ++DWORD WINAPI RtlAddGrowableFunctionTable( void **table, RUNTIME_FUNCTION *functions, DWORD count, DWORD max_count, ++ ULONG_PTR base, ULONG_PTR end ) ++{ ++ FIXME( "(%p, %p, %d, %d, %ld, %ld) stub!\n", table, functions, count, max_count, base, end ); ++ if (table) *table = NULL; ++ return S_OK; ++} ++ ++ + /********************************************************************** + * RtlDeleteFunctionTable (NTDLL.@) + */ +-- +1.9.1 + diff --git a/patches/ntdll-RtlAddGrowableFunctionTable/0002-ntdll-Add-RtlGrowFunctionTable-stub.patch b/patches/ntdll-RtlAddGrowableFunctionTable/0002-ntdll-Add-RtlGrowFunctionTable-stub.patch new file mode 100644 index 00000000..9fb58357 --- /dev/null +++ b/patches/ntdll-RtlAddGrowableFunctionTable/0002-ntdll-Add-RtlGrowFunctionTable-stub.patch @@ -0,0 +1,86 @@ +From 31ac411774a34b84726b1a0f6bffae2cb8d9f15a Mon Sep 17 00:00:00 2001 +From: Alex Henrie +Date: Wed, 24 Jan 2018 22:27:52 -0700 +Subject: [PATCH] ntdll: Add RtlGrowFunctionTable stub + +Signed-off-by: Alex Henrie +--- + dlls/ntdll/ntdll.spec | 1 + + dlls/ntdll/signal_arm.c | 8 ++++++++ + dlls/ntdll/signal_arm64.c | 8 ++++++++ + dlls/ntdll/signal_x86_64.c | 9 +++++++++ + 4 files changed, 26 insertions(+) + +diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec +index 4fa9c7d..85897b1 100644 +--- a/dlls/ntdll/ntdll.spec ++++ b/dlls/ntdll/ntdll.spec +@@ -684,6 +684,7 @@ + @ stdcall RtlGetUnloadEventTraceEx(ptr ptr ptr) + @ stub RtlGetUserInfoHeap + @ stdcall RtlGetVersion(ptr) ++@ stdcall -arch=arm,arm64,x86_64 RtlGrowFunctionTable(ptr long) + @ stub RtlGuidToPropertySetName + @ stdcall RtlHashUnicodeString(ptr long long ptr) + @ stdcall RtlIdentifierAuthoritySid(ptr) +diff --git a/dlls/ntdll/signal_arm.c b/dlls/ntdll/signal_arm.c +index f5b9a64..41bbdb7 100644 +--- a/dlls/ntdll/signal_arm.c ++++ b/dlls/ntdll/signal_arm.c +@@ -1069,6 +1069,14 @@ DWORD WINAPI RtlAddGrowableFunctionTable( void **table, RUNTIME_FUNCTION *functi + return S_OK; + } + ++/************************************************************************* ++ * RtlGrowFunctionTable (NTDLL.@) ++ */ ++void WINAPI RtlGrowFunctionTable( void *table, DWORD count ) ++{ ++ FIXME( "(%p, %d) stub!\n", table, count ); ++} ++ + /********************************************************************** + * RtlDeleteFunctionTable (NTDLL.@) + */ +diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c +index 9e113ed..8e99e7e 100644 +--- a/dlls/ntdll/signal_arm64.c ++++ b/dlls/ntdll/signal_arm64.c +@@ -987,6 +987,14 @@ DWORD WINAPI RtlAddGrowableFunctionTable( void **table, RUNTIME_FUNCTION *functi + return S_OK; + } + ++/************************************************************************* ++ * RtlGrowFunctionTable (NTDLL.@) ++ */ ++void WINAPI RtlGrowFunctionTable( void *table, DWORD count ) ++{ ++ FIXME( "(%p, %d) stub!\n", table, count ); ++} ++ + /********************************************************************** + * RtlDeleteFunctionTable (NTDLL.@) + */ +diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c +index a6934ba..848b9a0 100644 +--- a/dlls/ntdll/signal_x86_64.c ++++ b/dlls/ntdll/signal_x86_64.c +@@ -3518,6 +3518,15 @@ DWORD WINAPI RtlAddGrowableFunctionTable( void **table, RUNTIME_FUNCTION *functi + } + + ++/************************************************************************* ++ * RtlGrowFunctionTable (NTDLL.@) ++ */ ++void WINAPI RtlGrowFunctionTable( void *table, DWORD count ) ++{ ++ FIXME( "(%p, %d) stub!\n", table, count ); ++} ++ ++ + /********************************************************************** + * RtlDeleteFunctionTable (NTDLL.@) + */ +-- +1.9.1 + diff --git a/patches/ntdll-RtlAddGrowableFunctionTable/definition b/patches/ntdll-RtlAddGrowableFunctionTable/definition new file mode 100644 index 00000000..9c9cc932 --- /dev/null +++ b/patches/ntdll-RtlAddGrowableFunctionTable/definition @@ -0,0 +1,4 @@ +Fixes: [42255] ntdll: Add RtlAddGrowableFunctionTable stub +Fixes: ntdll: Add RtlGrowFunctionTable stub +Depends: ntdll-RtlGetUnloadEventTraceEx + diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 1e5e85cd..83e8616a 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -220,6 +220,7 @@ patch_enable_all () enable_ntdll_Pipe_SpecialCharacters="$1" enable_ntdll_ProcessQuotaLimits="$1" enable_ntdll_Purist_Mode="$1" + enable_ntdll_RtlAddGrowableFunctionTable="$1" enable_ntdll_RtlCaptureStackBackTrace="$1" enable_ntdll_RtlCreateUserThread="$1" enable_ntdll_RtlGetUnloadEventTraceEx="$1" @@ -824,6 +825,9 @@ patch_enable () ntdll-Purist_Mode) enable_ntdll_Purist_Mode="$2" ;; + ntdll-RtlAddGrowableFunctionTable) + enable_ntdll_RtlAddGrowableFunctionTable="$2" + ;; ntdll-RtlCaptureStackBackTrace) enable_ntdll_RtlCaptureStackBackTrace="$2" ;; @@ -2022,13 +2026,6 @@ if test "$enable_ntdll_WRITECOPY" -eq 1; then enable_ntdll_User_Shared_Data=1 fi -if test "$enable_ntdll_RtlGetUnloadEventTraceEx" -eq 1; then - if test "$enable_ntdll_RtlQueryPackageIdentity" -gt 1; then - abort "Patchset ntdll-RtlQueryPackageIdentity disabled, but ntdll-RtlGetUnloadEventTraceEx depends on that." - fi - enable_ntdll_RtlQueryPackageIdentity=1 -fi - if test "$enable_ntdll_RtlCreateUserThread" -eq 1; then if test "$enable_ntdll_LdrInitializeThunk" -gt 1; then abort "Patchset ntdll-LdrInitializeThunk disabled, but ntdll-RtlCreateUserThread depends on that." @@ -2036,6 +2033,20 @@ if test "$enable_ntdll_RtlCreateUserThread" -eq 1; then enable_ntdll_LdrInitializeThunk=1 fi +if test "$enable_ntdll_RtlAddGrowableFunctionTable" -eq 1; then + if test "$enable_ntdll_RtlGetUnloadEventTraceEx" -gt 1; then + abort "Patchset ntdll-RtlGetUnloadEventTraceEx disabled, but ntdll-RtlAddGrowableFunctionTable depends on that." + fi + enable_ntdll_RtlGetUnloadEventTraceEx=1 +fi + +if test "$enable_ntdll_RtlGetUnloadEventTraceEx" -eq 1; then + if test "$enable_ntdll_RtlQueryPackageIdentity" -gt 1; then + abort "Patchset ntdll-RtlQueryPackageIdentity disabled, but ntdll-RtlGetUnloadEventTraceEx depends on that." + fi + enable_ntdll_RtlQueryPackageIdentity=1 +fi + if test "$enable_ntdll_Purist_Mode" -eq 1; then if test "$enable_ntdll_DllRedirects" -gt 1; then abort "Patchset ntdll-DllRedirects disabled, but ntdll-Purist_Mode depends on that." @@ -4956,6 +4967,56 @@ if test "$enable_ntdll_Purist_Mode" -eq 1; then ) >> "$patchlist" fi +# Patchset ntdll-RtlQueryPackageIdentity +# | +# | Modified files: +# | * dlls/ntdll/tests/Makefile.in, dlls/ntdll/tests/rtl.c +# | +if test "$enable_ntdll_RtlQueryPackageIdentity" -eq 1; then + patch_apply ntdll-RtlQueryPackageIdentity/0003-ntdll-tests-Add-basic-tests-for-RtlQueryPackageIdent.patch + ( + printf '%s\n' '+ { "Michael Müller", "ntdll/tests: Add basic tests for RtlQueryPackageIdentity.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-RtlGetUnloadEventTraceEx +# | +# | This patchset has the following (direct or indirect) dependencies: +# | * ntdll-RtlQueryPackageIdentity +# | +# | This patchset fixes the following Wine bugs: +# | * [#44897] Implement stub for ntdll.RtlGetUnloadEventTraceEx +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c +# | +if test "$enable_ntdll_RtlGetUnloadEventTraceEx" -eq 1; then + patch_apply ntdll-RtlGetUnloadEventTraceEx/0001-ntdll-Add-stub-for-RtlGetUnloadEventTraceEx.patch + ( + printf '%s\n' '+ { "Michael Müller", "ntdll: Add stub for RtlGetUnloadEventTraceEx.", 1 },'; + ) >> "$patchlist" +fi + +# Patchset ntdll-RtlAddGrowableFunctionTable +# | +# | This patchset has the following (direct or indirect) dependencies: +# | * ntdll-RtlQueryPackageIdentity, ntdll-RtlGetUnloadEventTraceEx +# | +# | This patchset fixes the following Wine bugs: +# | * [#42255] ntdll: Add RtlAddGrowableFunctionTable stub +# | +# | Modified files: +# | * dlls/ntdll/ntdll.spec, dlls/ntdll/signal_arm.c, dlls/ntdll/signal_arm64.c, dlls/ntdll/signal_x86_64.c +# | +if test "$enable_ntdll_RtlAddGrowableFunctionTable" -eq 1; then + patch_apply ntdll-RtlAddGrowableFunctionTable/0001-ntdll-Add-RtlAddGrowableFunctionTable-stub.patch + patch_apply ntdll-RtlAddGrowableFunctionTable/0002-ntdll-Add-RtlGrowFunctionTable-stub.patch + ( + printf '%s\n' '+ { "Austin English", "ntdll: Add RtlAddGrowableFunctionTable stub.", 1 },'; + printf '%s\n' '+ { "Alex Henrie", "ntdll: Add RtlGrowFunctionTable stub.", 1 },'; + ) >> "$patchlist" +fi + # Patchset ntdll-RtlCaptureStackBackTrace # | # | This patchset fixes the following Wine bugs: @@ -4989,36 +5050,6 @@ if test "$enable_ntdll_RtlCreateUserThread" -eq 1; then ) >> "$patchlist" fi -# Patchset ntdll-RtlQueryPackageIdentity -# | -# | Modified files: -# | * dlls/ntdll/tests/Makefile.in, dlls/ntdll/tests/rtl.c -# | -if test "$enable_ntdll_RtlQueryPackageIdentity" -eq 1; then - patch_apply ntdll-RtlQueryPackageIdentity/0003-ntdll-tests-Add-basic-tests-for-RtlQueryPackageIdent.patch - ( - printf '%s\n' '+ { "Michael Müller", "ntdll/tests: Add basic tests for RtlQueryPackageIdentity.", 1 },'; - ) >> "$patchlist" -fi - -# Patchset ntdll-RtlGetUnloadEventTraceEx -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * ntdll-RtlQueryPackageIdentity -# | -# | This patchset fixes the following Wine bugs: -# | * [#44897] Implement stub for ntdll.RtlGetUnloadEventTraceEx -# | -# | Modified files: -# | * dlls/ntdll/ntdll.spec, dlls/ntdll/rtl.c -# | -if test "$enable_ntdll_RtlGetUnloadEventTraceEx" -eq 1; then - patch_apply ntdll-RtlGetUnloadEventTraceEx/0001-ntdll-Add-stub-for-RtlGetUnloadEventTraceEx.patch - ( - printf '%s\n' '+ { "Michael Müller", "ntdll: Add stub for RtlGetUnloadEventTraceEx.", 1 },'; - ) >> "$patchlist" -fi - # Patchset ntdll-Serial_Port_Detection # | # | This patchset fixes the following Wine bugs: