[PATCH 0/3] winepulse: Add Wow64 handlers.
Andrew Eikum
aeikum at codeweavers.com
Tue Apr 19 10:58:54 CDT 2022
I don't really feel comfortable reviewing these. To me, they make the
code strictly worse, and I don't understand the wow64 stuff to know if
this is the best we can do.
Andrew
On Thu, Apr 14, 2022 at 10:03:08AM +0100, Huw Davies wrote:
> Since the wineoss queue has stalled for today, I thought I'd
> send in the Wow64 handlers for winepulse.
>
> The first two patches can be tested with a regular setup.
> The third requires enabling the new Wow64 mode (see the patch
> below). With that applied you build and install 32-bit and
> 64-bit versions of Wine and then run a 32-bit app with wine64.
> There's obviously no graphics at this point, but the 32-bit
> mmdevapi tests run well.
>
> Huw D. M. Davies (3):
> winepulse: Use handles to represent the stream.
> winepulse: Return offsets rather than ptrs to the strings.
> winepulse: Implement Wow64 entry points in the Unix library.
>
> dlls/winepulse.drv/mmdevdrv.c | 17 +-
> dlls/winepulse.drv/pulse.c | 522 ++++++++++++++++++++++++++++++++--
> dlls/winepulse.drv/unixlib.h | 44 ++-
> 3 files changed, 524 insertions(+), 59 deletions(-)
> --
> diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
> index d750f7a7579..b18f1c7fba9 100644
> --- a/dlls/ntdll/loader.c
> +++ b/dlls/ntdll/loader.c
> @@ -1548,8 +1548,8 @@ static NTSTATUS MODULE_InitDLL( WINE_MODREF *wm, UINT reason, LPVOID lpReserved
>
> if (wm->ldr.Flags & LDR_DONT_RESOLVE_REFS) return STATUS_SUCCESS;
> if (wm->ldr.TlsIndex != -1) call_tls_callbacks( wm->ldr.DllBase, reason );
> - if (wm->ldr.Flags & LDR_WINE_INTERNAL && reason == DLL_PROCESS_ATTACH)
> - unix_funcs->init_builtin_dll( wm->ldr.DllBase );
> +// if (wm->ldr.Flags & LDR_WINE_INTERNAL && reason == DLL_PROCESS_ATTACH)
> +// unix_funcs->init_builtin_dll( wm->ldr.DllBase );
> if (!entry) return STATUS_SUCCESS;
>
> if (TRACE_ON(relay))
> diff --git a/dlls/ntdll/unix/env.c b/dlls/ntdll/unix/env.c
> index ee958ae71f4..2bb5e8bbf83 100644
> --- a/dlls/ntdll/unix/env.c
> +++ b/dlls/ntdll/unix/env.c
> @@ -1919,7 +1919,7 @@ static RTL_USER_PROCESS_PARAMETERS *build_initial_params( void **module )
> if (!status)
> {
> if (main_image_info.ImageCharacteristics & IMAGE_FILE_DLL) status = STATUS_INVALID_IMAGE_FORMAT;
> - if (main_image_info.Machine != current_machine) status = STATUS_INVALID_IMAGE_FORMAT;
> +// if (main_image_info.Machine != current_machine) status = STATUS_INVALID_IMAGE_FORMAT;
> }
>
> if (status) /* try launching it through start.exe */
>
More information about the wine-devel
mailing list