From: Jacek Caban jacek@codeweavers.com
--- dlls/ntdll/unix/virtual.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c index 8087a12785c..509bf4fc789 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -640,7 +640,7 @@ void *get_builtin_so_handle( void *module ) */ static NTSTATUS get_builtin_unix_funcs( void *module, BOOL wow, const void **funcs ) { - const char *ptr_name = wow ? "__wine_unix_call_wow64_funcs" : "__wine_unix_call_funcs"; + const char *ptr_name = wow ? "__wine_unix_call_wow64_funcs" : "__wine_unix_call_funcs", *p; sigset_t sigset; NTSTATUS status = STATUS_DLL_NOT_FOUND; struct builtin_module *builtin; @@ -655,6 +655,12 @@ static NTSTATUS get_builtin_unix_funcs( void *module, BOOL wow, const void **fun LIST_FOR_EACH_ENTRY( builtin, &builtin_modules, struct builtin_module, entry ) { if (builtin->module != module) continue; + if (builtin->unix_path && (p = strrchr( builtin->unix_path, '/' )) && !strcmp( p, "/ntdll.so" )) + { + *funcs = wow ? __wine_unix_call_wow64_funcs : __wine_unix_call_funcs; + status = STATUS_SUCCESS; + break; + } if (builtin->unix_path && !builtin->unix_handle) builtin->unix_handle = dlopen( builtin->unix_path, RTLD_NOW ); if (builtin->unix_handle)