ntdll: Add a WINEARCH environment variable that allows forcing a specific 32- or 64-bit architecture.
This commit is contained in:
parent
9f7bc109d2
commit
a49891f1e2
|
@ -752,6 +752,18 @@ static void setup_config_dir(void)
|
||||||
|
|
||||||
mkdir( config_dir, 0777 );
|
mkdir( config_dir, 0777 );
|
||||||
if (chdir( config_dir ) == -1) fatal_perror( "chdir to %s\n", config_dir );
|
if (chdir( config_dir ) == -1) fatal_perror( "chdir to %s\n", config_dir );
|
||||||
|
|
||||||
|
if ((p = getenv( "WINEARCH" )) && !strcmp( p, "win32" ))
|
||||||
|
{
|
||||||
|
/* force creation of a 32-bit prefix */
|
||||||
|
int fd = open( "system.reg", O_WRONLY | O_CREAT | O_EXCL, 0666 );
|
||||||
|
if (fd != -1)
|
||||||
|
{
|
||||||
|
static const char regfile[] = "WINE REGISTRY Version 2\n\n#arch=win32\n";
|
||||||
|
write( fd, regfile, sizeof(regfile) - 1 );
|
||||||
|
close( fd );
|
||||||
|
}
|
||||||
|
}
|
||||||
MESSAGE( "wine: created the configuration directory '%s'\n", config_dir );
|
MESSAGE( "wine: created the configuration directory '%s'\n", config_dir );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1040,6 +1052,7 @@ NTSTATUS server_init_process_done(void)
|
||||||
size_t server_init_thread( void *entry_point )
|
size_t server_init_thread( void *entry_point )
|
||||||
{
|
{
|
||||||
static const int is_win64 = (sizeof(void *) > sizeof(int));
|
static const int is_win64 = (sizeof(void *) > sizeof(int));
|
||||||
|
const char *arch = getenv( "WINEARCH" );
|
||||||
int ret;
|
int ret;
|
||||||
int reply_pipe[2];
|
int reply_pipe[2];
|
||||||
struct sigaction sig_act;
|
struct sigaction sig_act;
|
||||||
|
@ -1090,6 +1103,15 @@ size_t server_init_thread( void *entry_point )
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
case STATUS_SUCCESS:
|
case STATUS_SUCCESS:
|
||||||
|
if (arch)
|
||||||
|
{
|
||||||
|
if (!strcmp( arch, "win32" ) && (is_win64 || is_wow64))
|
||||||
|
fatal_error( "WINEARCH set to win32 but '%s' is a 64-bit installation.\n",
|
||||||
|
wine_get_config_dir() );
|
||||||
|
if (!strcmp( arch, "win64" ) && !is_wow64)
|
||||||
|
fatal_error( "WINEARCH set to win64 but '%s' is a 32-bit installation.\n",
|
||||||
|
wine_get_config_dir() );
|
||||||
|
}
|
||||||
return info_size;
|
return info_size;
|
||||||
case STATUS_NOT_REGISTRY_FILE:
|
case STATUS_NOT_REGISTRY_FILE:
|
||||||
fatal_error( "'%s' is a 32-bit installation, it cannot support 64-bit applications.\n",
|
fatal_error( "'%s' is a 32-bit installation, it cannot support 64-bit applications.\n",
|
||||||
|
|
|
@ -142,8 +142,9 @@ on all relay messages (API calls).
|
||||||
.TP
|
.TP
|
||||||
WINEDEBUG=relay
|
WINEDEBUG=relay
|
||||||
will turn on all relay messages. For more control on including or excluding
|
will turn on all relay messages. For more control on including or excluding
|
||||||
functions and dlls from the relay trace look into the [Debug] section
|
functions and dlls from the relay trace, look into the
|
||||||
of the wine configuration file.
|
.B HKEY_CURRENT_USER\\\\Software\\\\Wine\\\\Debug
|
||||||
|
registry key.
|
||||||
.PP
|
.PP
|
||||||
For more information on debugging messages, see the
|
For more information on debugging messages, see the
|
||||||
.I Running Wine
|
.I Running Wine
|
||||||
|
@ -204,6 +205,19 @@ the builtin load fails; load shell32 always as builtin and comctl32
|
||||||
always as native. Oleaut32 will be disabled.
|
always as native. Oleaut32 will be disabled.
|
||||||
.RE
|
.RE
|
||||||
.TP
|
.TP
|
||||||
|
.I WINEARCH
|
||||||
|
Specifies the Windows architecture to support. It can be set either to
|
||||||
|
.B win32
|
||||||
|
(support only 32-bit applications), or to
|
||||||
|
.B win64
|
||||||
|
(support both 64-bit applications and 32-bit ones in WoW64 mode).
|
||||||
|
.br
|
||||||
|
The architecture supported by a given Wine prefix is set at prefix
|
||||||
|
creation time and cannot be changed afterwards. When running with an
|
||||||
|
existing prefix, Wine will refuse to start if
|
||||||
|
.I WINEARCH
|
||||||
|
doesn't match the prefix architecture.
|
||||||
|
.TP
|
||||||
.I DISPLAY
|
.I DISPLAY
|
||||||
Specifies the X11 display to use.
|
Specifies the X11 display to use.
|
||||||
.TP
|
.TP
|
||||||
|
|
Loading…
Reference in New Issue