ntdll: Remove support for being loaded directly from libwine.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
15c3eaafbb
commit
83a4549e9b
|
@ -3900,33 +3900,6 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static NTSTATUS load_ntdll_so( HMODULE module, const IMAGE_NT_HEADERS *nt )
|
|
||||||
{
|
|
||||||
NTSTATUS (__cdecl *init_func)( HMODULE module, const void *ptr_in, void *ptr_out );
|
|
||||||
Dl_info info;
|
|
||||||
char *name;
|
|
||||||
void *handle;
|
|
||||||
|
|
||||||
if (!dladdr( load_ntdll_so, &info ))
|
|
||||||
{
|
|
||||||
fprintf( stderr, "cannot get path to ntdll.dll.so\n" );
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
name = strdup( info.dli_fname );
|
|
||||||
strcpy( name + strlen(name) - strlen(".dll.so"), ".so" );
|
|
||||||
if (!(handle = dlopen( name, RTLD_NOW )))
|
|
||||||
{
|
|
||||||
fprintf( stderr, "failed to load %s: %s\n", name, dlerror() );
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if (!(init_func = dlsym( handle, "__wine_init_unix_lib" )))
|
|
||||||
{
|
|
||||||
fprintf( stderr, "init func not found in %s\n", name );
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
return init_func( module, nt, &unix_funcs );
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* __wine_process_init
|
* __wine_process_init
|
||||||
*/
|
*/
|
||||||
|
@ -3948,13 +3921,9 @@ void __wine_process_init(void)
|
||||||
HMODULE ntdll_module = (HMODULE)((__wine_spec_nt_header.OptionalHeader.ImageBase + 0xffff) & ~0xffff);
|
HMODULE ntdll_module = (HMODULE)((__wine_spec_nt_header.OptionalHeader.ImageBase + 0xffff) & ~0xffff);
|
||||||
INITIAL_TEB stack;
|
INITIAL_TEB stack;
|
||||||
SIZE_T info_size;
|
SIZE_T info_size;
|
||||||
TEB *teb;
|
TEB *teb = thread_init( &info_size );
|
||||||
PEB *peb;
|
PEB *peb = teb->Peb;
|
||||||
|
|
||||||
if (!unix_funcs) load_ntdll_so( ntdll_module, &__wine_spec_nt_header );
|
|
||||||
|
|
||||||
teb = thread_init( &info_size );
|
|
||||||
peb = teb->Peb;
|
|
||||||
peb->ProcessHeap = RtlCreateHeap( HEAP_GROWABLE, NULL, 0, 0, NULL, NULL );
|
peb->ProcessHeap = RtlCreateHeap( HEAP_GROWABLE, NULL, 0, 0, NULL, NULL );
|
||||||
peb->LoaderLock = &loader_section;
|
peb->LoaderLock = &loader_section;
|
||||||
|
|
||||||
|
|
|
@ -105,10 +105,6 @@ static void (CDECL *p__wine_set_unix_funcs)( int version, const struct unix_func
|
||||||
static void fatal_error( const char *err, ... ) __attribute__((noreturn, format(printf,1,2)));
|
static void fatal_error( const char *err, ... ) __attribute__((noreturn, format(printf,1,2)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern int __wine_main_argc;
|
|
||||||
extern char **__wine_main_argv;
|
|
||||||
extern char **__wine_main_environ;
|
|
||||||
|
|
||||||
#if defined(linux) || defined(__APPLE__)
|
#if defined(linux) || defined(__APPLE__)
|
||||||
static const BOOL use_preloader = TRUE;
|
static const BOOL use_preloader = TRUE;
|
||||||
#else
|
#else
|
||||||
|
@ -1803,39 +1799,6 @@ void __wine_main( int argc, char *argv[], char *envp[] )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int add_area( void *base, size_t size, void *arg )
|
|
||||||
{
|
|
||||||
mmap_add_reserved_area( base, size );
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
|
||||||
* __wine_init_unix_lib
|
|
||||||
*
|
|
||||||
* Lib entry point called by ntdll.dll.so if not yet initialized.
|
|
||||||
*/
|
|
||||||
NTSTATUS __cdecl __wine_init_unix_lib( HMODULE module, const void *ptr_in, void *ptr_out )
|
|
||||||
{
|
|
||||||
const IMAGE_NT_HEADERS *nt = ptr_in;
|
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
extern char **__wine_get_main_environment(void);
|
|
||||||
char **envp = __wine_get_main_environment();
|
|
||||||
#else
|
|
||||||
char **envp = __wine_main_environ;
|
|
||||||
#endif
|
|
||||||
init_paths( __wine_main_argc, __wine_main_argv, envp );
|
|
||||||
|
|
||||||
ntdll_module = module;
|
|
||||||
map_so_dll( nt, module );
|
|
||||||
fixup_ntdll_imports( &__wine_spec_nt_header );
|
|
||||||
init_environment( __wine_main_argc, __wine_main_argv, envp );
|
|
||||||
wine_dll_set_callback( load_builtin_callback );
|
|
||||||
*(struct unix_funcs **)ptr_out = &unix_funcs;
|
|
||||||
wine_mmap_enum_reserved_areas( add_area, NULL, 0 );
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL WINAPI DECLSPEC_HIDDEN DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
|
BOOL WINAPI DECLSPEC_HIDDEN DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
|
||||||
{
|
{
|
||||||
if (reason == DLL_PROCESS_ATTACH) LdrDisableThreadCalloutsForDll( inst );
|
if (reason == DLL_PROCESS_ATTACH) LdrDisableThreadCalloutsForDll( inst );
|
||||||
|
|
Loading…
Reference in New Issue