Removed "elfdll" load order option and updated documentation.

This commit is contained in:
Alexandre Julliard 2000-11-30 01:15:30 +00:00
parent 2af03e45b5
commit 32fcfc24ae
8 changed files with 110 additions and 112 deletions

View File

@ -150,47 +150,43 @@ debugger.
.I format: EXTRA_LD_LIBRARY_PATH=@prefix@/lib/wine[:/more/path/to/search[:...]] .I format: EXTRA_LD_LIBRARY_PATH=@prefix@/lib/wine[:/more/path/to/search[:...]]
.br .br
The path will be appended to any existing LD_LIBRARY_PATH from the The path will be appended to any existing LD_LIBRARY_PATH from the
environment for the search of elfdlls and .so libraries. environment for the search of .so libraries.
.PP .PP
.I format: DefaultLoadOrder=native,elfdll,so,builtin .I format: DefaultLoadOrder=native,so,builtin
.br .br
A comma separated list of module-types to try to load in that specific A comma separated list of module-types to try to load in that specific
order. The DefaultLoadOrder key is used as a fallback when a module is order. The DefaultLoadOrder key is used as a fallback when a module is
not specified explicitely. If the DefaultLoadOrder key is not found, not specified explicitely. If the DefaultLoadOrder key is not found,
then the order "native,elfdll,so,builtin" is used. then the order "native,builtin,so" is used.
.br .br
Case is not (yet) important and only the first letter of each type is enough Case is not (yet) important and only the first letter of each type is
to identify the type n[ative], e[lfdll], s[o], b[uiltin]. Also whitespace is enough to identify the type n[ative], s[o], b[uiltin]. Also whitespace
ignored. Keep everything in lower case to be sure that your entries keep the is ignored. Keep everything in lower case to be sure that your entries
same meaning. See also commandline option keep the same meaning. See also commandline option
.I --dll .I --dll
for details about the allowable types. for details about the allowable types.
.PP .PP
.B [DllOverrides] .B [DllOverrides]
.br .br
There are no explicit keys defined other than module/library names. A comma There are no explicit keys defined other than module/library names. A
separated list of modules is followed by an assignment of the load order module namd is followed by an assignment of the load order for this
for these specific modules. See above for possible types. You should not specific module. See above for possible types. You should not specify
specify an extension. an extension.
.br .br
Examples: Examples:
.br .br
.I kernel32, gdi32, user32 = builtin .I kernel32 = builtin
.br .br
.I kernel, gdi, user = builtin .I kernel = builtin
.br .br
.I comdlg32 = elfdll, native, builtin .I comdlg32 = native, builtin
.br .br
.I commdlg = native, builtin .I commdlg = native, builtin
.br .br
.I version, ver = elfdll, native, builtin
.br
Changing the load order of kernel/kernel32 and gdi/gdi32 to Changing the load order of kernel/kernel32 and gdi/gdi32 to
anything other than builtin will cause wine to fail because wine cannot anything other than builtin will cause wine to fail because wine cannot
use native versions for these libraries (gdi[32] might work native someday, use native versions for these libraries (gdi[32] might work native someday,
but kernel[32] will never work native). These libraries are also the last but kernel[32] will never work native).
to be converted to elfdlls and will live as builtins for quite some time
to come.
Note that using the native versions of user[32] isn't recommended right now, Note that using the native versions of user[32] isn't recommended right now,
as these modules face nearly the same problems as kernel/gdi and we only as these modules face nearly the same problems as kernel/gdi and we only
just managed to make them work partially. But trying to use it might get just managed to make them work partially. But trying to use it might get
@ -200,30 +196,6 @@ Always make sure that you have some kind of strategy in mind when you start
fiddling with the current defaults and needless to say that you must know fiddling with the current defaults and needless to say that you must know
what you are doing. what you are doing.
.PP .PP
.B [DllPairs]
.br
This is a simple pairing in the form 'name1 = name2'. It is supposed to
identify the dlls that cannot live without eachother unless they are
loaded in the same format. Examples are common dialogs and controls,
shell, kernel, gdi, user, etc...
.br
The code will issue a warning if the loadorder of these pairs are different
and might cause hard-to-find bugs due to incompatible pairs loaded at
run-time. Note that this pairing gives
.B no
guarantee that the pairs
actually get loaded as the same type, nor that the correct versions are
loaded (might be implemented later). It merely notes obvious trouble.
.br
Examples:
.br
.I kernel = kernel32
.br
.I commdlg = comdlg32
.br
The implementation will probably change in a later stage to force pairs to
be loaded correctly, but there are also drawbacks with such an approach.
.PP
.B [serialports] .B [serialports]
.br .br
.I format: com[12345678] = <devicename> .I format: com[12345678] = <devicename>

View File

@ -180,14 +180,12 @@ Use a desktop window of the given geometry, e.g. "640x480"
.I --display name .I --display name
Use the specified X display Use the specified X display
.TP .TP
.I --dll name[,name[,...]]={native|elfdll|so|builtin}[,{n|e|s|b}[,...]][+...] .I --dll name[,name[,...]]={native|so|builtin}[,{n|s|b}[,...]][+...]
Selects the override type and load order of dll used in the loading process Selects the override type and load order of dll used in the loading process
for any dll. The default is set in @sysconfdir@/wine.conf or ~/.winerc. There for any dll. The default is set in @sysconfdir@/wine.conf or ~/.winerc. There
are currently four types of libraries that can be loaded into a process' address are currently three types of libraries that can be loaded into a process' address
space: Native windows dlls ( space: Native windows dlls (
.I native .I native
), ELF encapsulated windows dlls (
.I elfdll
), native ELF libraries ( ), native ELF libraries (
.I so .I so
)and )and
@ -195,7 +193,7 @@ space: Native windows dlls (
internal dlls ( internal dlls (
.I builtin .I builtin
). The type may be abbreviated with the first letter of the type ( ). The type may be abbreviated with the first letter of the type (
.I n, e, s, b .I n, s, b
). Each sequence of orders must be separated by commas. ). Each sequence of orders must be separated by commas.
.br .br
Each dll may have its own specific load order. The load order determines Each dll may have its own specific load order. The load order determines
@ -218,10 +216,10 @@ the builtin version if the native load fails.
Try to load the libraries shell and shell32 as native windows dlls. Furthermore, if Try to load the libraries shell and shell32 as native windows dlls. Furthermore, if
an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz. an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz.
.br .br
.I --dll comdlg32,commdlg=e,n:shell,shell32=b+comctl32,commctrl=n .I --dll comdlg32,commdlg=b,n:shell,shell32=b+comctl32,commctrl=n
.br .br
Try to load comdlg32 and commdlg as elfdll first and try the native version Try to load comdlg32 and commdlg as builtin first and try the native version
if the elfdll load fails; load shell32/shell always as builtin and if the builtin load fails; load shell32/shell always as builtin and
comctl32/commctrl always as native. comctl32/commctrl always as native.
.br .br
Note: It is wise to keep dll pairs (comdlg32/commdlg, shell/shell32, etc.) Note: It is wise to keep dll pairs (comdlg32/commdlg, shell/shell32, etc.)
@ -311,7 +309,7 @@ appropriate syntax for your shell to enter environment variables you need.
.I WINEPREFIX .I WINEPREFIX
If set, the content of this variable is taken as the name of the directory where If set, the content of this variable is taken as the name of the directory where
.B wine .B wine
stores its data (usually stores its data (the default is
.I $HOME/.wine .I $HOME/.wine
). This directory contains also the socket, which is used to communicate with the ). This directory contains also the socket, which is used to communicate with the
.I wineserver. .I wineserver.
@ -327,6 +325,27 @@ to different values for different
processes, it is possible to run a number of truly independent processes, it is possible to run a number of truly independent
.B wine .B wine
processes. processes.
.TP
.I WINESERVER
Specifies the path and name of the
.B wineserver
binary. If not set, a file named "wineserver" is searched in the
path and in a few other likely locations.
.TP
.I WINELOADER
Specifies the path and name of the
.B wine
binary to use to launch new Windows processes. If not set, a binary
named "wine" is searched in the path and in a few other likely
locations.
.TP
.I WINEDLLPATH
Specifies the path(s) in which to search for builtin dll files. This
is a list of directories separated by ":". Builtin dlls are also
searched in the directories specified by the standard
.I LD_LIBRARY_PATH
if they are not found in the directories listed in
.I WINEDLLPATH.
.SH CONFIGURATION FILE .SH CONFIGURATION FILE
.B wine .B wine
@ -350,6 +369,12 @@ is available thanks to the work of many developers. For a listing
of the authors, please see the file of the authors, please see the file
.B AUTHORS .B AUTHORS
in the top-level directory of the source distribution. in the top-level directory of the source distribution.
.SH COPYRIGHT
.B wine
can be distributed under the terms of the X11 license. A copy of the
license is in the file
.B LICENSE
in the top-level directory of the source distribution.
.SH BUGS .SH BUGS
.PP .PP
A status report on many applications is available from A status report on many applications is available from
@ -415,6 +440,11 @@ The
.B wine .B wine
server server
.TP .TP
.I @prefix@/bin/winedbg
The
.B wine
debugger
.TP
.I @prefix@/bin/wineclpsrv .I @prefix@/bin/wineclpsrv
The The
.B wine .B wine
@ -435,10 +465,6 @@ User-specific configuration file
.I ~/.wine .I ~/.wine
Directory containing user specific data managed by Directory containing user specific data managed by
.B wine. .B wine.
.TP
.I @prefix@/lib/wine.sym
Global symbol table (used in debugger)
.SH "SEE ALSO"
.BR wine.conf (5),
.BR clone (2)
.SH "SEE ALSO"
.BR wine.conf (5)

View File

@ -11,10 +11,9 @@
#define MODULE_LOADORDER_INVALID 0 /* Must be 0 */ #define MODULE_LOADORDER_INVALID 0 /* Must be 0 */
#define MODULE_LOADORDER_DLL 1 /* Native DLLs */ #define MODULE_LOADORDER_DLL 1 /* Native DLLs */
#define MODULE_LOADORDER_ELFDLL 2 /* Elf-dlls */ #define MODULE_LOADORDER_SO 2 /* Native .so libraries */
#define MODULE_LOADORDER_SO 3 /* Native .so libraries */ #define MODULE_LOADORDER_BI 3 /* Built-in modules */
#define MODULE_LOADORDER_BI 4 /* Built-in modules */ #define MODULE_LOADORDER_NTYPES 3
#define MODULE_LOADORDER_NTYPES 4
typedef struct module_loadorder { typedef struct module_loadorder {
char *modulename; char *modulename;

View File

@ -42,9 +42,9 @@ static struct tagDllOverride {
{"w32skrnl,wow32", "builtin"}, {"w32skrnl,wow32", "builtin"},
{"advapi32,crtdll,ntdll", "builtin,native"}, {"advapi32,crtdll,ntdll", "builtin,native"},
{"lz32,lzexpand", "builtin,native"}, {"lz32,lzexpand", "builtin,native"},
{"version,ver", "elfdll,builtin,native"}, {"version,ver", "builtin,native"},
/* "new" interface */ /* "new" interface */
{"comdlg32,commdlg", "elfdll,builtin,native"}, {"comdlg32,commdlg", "builtin,native"},
{"shell32,shell", "builtin,native"}, {"shell32,shell", "builtin,native"},
{"shlwapi", "native,builtin"}, {"shlwapi", "native,builtin"},
{"shfolder", "builtin,native"}, {"shfolder", "builtin,native"},
@ -149,6 +149,7 @@ static char *get_tok(const char *str, const char *delim)
*/ */
static BOOL ParseLoadOrder(char *order, module_loadorder_t *mlo) static BOOL ParseLoadOrder(char *order, module_loadorder_t *mlo)
{ {
static int warn;
char *cptr; char *cptr;
int n = 0; int n = 0;
@ -171,8 +172,9 @@ static BOOL ParseLoadOrder(char *order, module_loadorder_t *mlo)
case 'n': type = MODULE_LOADORDER_DLL; break; case 'n': type = MODULE_LOADORDER_DLL; break;
case 'E': /* Elfdll */ case 'E': /* Elfdll */
case 'e': type = MODULE_LOADORDER_ELFDLL; break; case 'e':
if (!warn++) MESSAGE("Load order 'elfdll' no longer support, ignored\n");
break;
case 'S': /* So */ case 'S': /* So */
case 's': type = MODULE_LOADORDER_SO; break; case 's': type = MODULE_LOADORDER_SO; break;
@ -337,24 +339,23 @@ endit:
* The path will be appended to any existing LD_LIBRARY_PATH from the * The path will be appended to any existing LD_LIBRARY_PATH from the
* environment (see note in code below). * environment (see note in code below).
* *
* DefaultLoadOrder=native,elfdll,so,builtin * DefaultLoadOrder=native,so,builtin
* A comma separated list of module types to try to load in that specific * A comma separated list of module types to try to load in that specific
* order. The DefaultLoadOrder key is used as a fallback when a module is * order. The DefaultLoadOrder key is used as a fallback when a module is
* not specified explicitly. If the DefaultLoadOrder key is not found, * not specified explicitly. If the DefaultLoadOrder key is not found,
* then the order "dll,elfdll,so,bi" is used * then the order "dll,so,bi" is used
* The possible module types are: * The possible module types are:
* - native Native windows dll files * - native Native windows dll files
* - elfdll Dlls encapsulated in .so libraries
* - so Native .so libraries mapped to dlls * - so Native .so libraries mapped to dlls
* - builtin Built-in modules * - builtin Built-in modules
* *
* Case is not important and only the first letter of each type is enough to * Case is not important and only the first letter of each type is enough to
* identify the type n[ative], e[lfdll], s[o], b[uiltin]. Also whitespace is * identify the type n[ative], s[o], b[uiltin]. Also whitespace is
* ignored. * ignored.
* E.g.: * E.g.:
* n,el ,s , b * n,s , b
* is equal to: * is equal to:
* native,elfdll,so,builtin * native,so,builtin
* *
* Section: * Section:
* [DllOverrides] * [DllOverrides]
@ -367,9 +368,9 @@ endit:
* Examples: * Examples:
* kernel32, gdi32, user32 = builtin * kernel32, gdi32, user32 = builtin
* kernel, gdi, user = builtin * kernel, gdi, user = builtin
* comdlg32 = elfdll, native, builtin * comdlg32 = native, builtin
* commdlg = native, builtin * commdlg = native, builtin
* version, ver = elfdll, native, builtin * version, ver = native, builtin
* *
*/ */
@ -395,7 +396,7 @@ BOOL MODULE_InitLoadOrder(void)
#endif #endif
/* Get the default load order */ /* Get the default load order */
nbuffer = PROFILE_GetWineIniString("DllDefaults", "DefaultLoadOrder", "n,b,e,s", buffer, sizeof(buffer)); nbuffer = PROFILE_GetWineIniString("DllDefaults", "DefaultLoadOrder", "n,b,s", buffer, sizeof(buffer));
if(!nbuffer) if(!nbuffer)
{ {
MESSAGE("MODULE_InitLoadOrder: mysteriously read nothing from default loadorder\n"); MESSAGE("MODULE_InitLoadOrder: mysteriously read nothing from default loadorder\n");
@ -431,9 +432,9 @@ BOOL MODULE_InitLoadOrder(void)
/* Add the commandline overrides to the pool */ /* Add the commandline overrides to the pool */
if(!ParseCommandlineOverrides()) if(!ParseCommandlineOverrides())
{ {
MESSAGE( "Syntax: -dll name[,name[,...]]={native|elfdll|so|builtin}[,{n|e|s|b}[,...]][+...]\n" MESSAGE( "Syntax: -dll name[,name[,...]]={native|so|builtin}[,{n|s|b}[,...]][+...]\n"
" - 'name' is the name of any dll without extension\n" " - 'name' is the name of any dll without extension\n"
" - the order of loading (native, elfdll, so and builtin) can be abbreviated\n" " - the order of loading (native, so and builtin) can be abbreviated\n"
" with the first letter\n" " with the first letter\n"
" - different loadorders for different dlls can be specified by seperating the\n" " - different loadorders for different dlls can be specified by seperating the\n"
" commandline entries with a '+'\n" " commandline entries with a '+'\n"
@ -462,7 +463,7 @@ BOOL MODULE_InitLoadOrder(void)
if(TRACE_ON(module)) if(TRACE_ON(module))
{ {
int i, j; int i, j;
static char types[6] = "-NESB"; static char types[] = "-NSB";
for(i = 0; i < nmodule_loadorder; i++) for(i = 0; i < nmodule_loadorder; i++)
{ {

View File

@ -20,7 +20,6 @@
#include "debugtools.h" #include "debugtools.h"
#include "callback.h" #include "callback.h"
#include "loadorder.h" #include "loadorder.h"
#include "elfdll.h"
#include "server.h" #include "server.h"
DEFAULT_DEBUG_CHANNEL(module); DEFAULT_DEBUG_CHANNEL(module);
@ -1379,12 +1378,6 @@ WINE_MODREF *MODULE_LoadLibraryExA( LPCSTR libname, HFILE hfile, DWORD flags )
pwm = PE_LoadLibraryExA(filename, flags); pwm = PE_LoadLibraryExA(filename, flags);
break; break;
case MODULE_LOADORDER_ELFDLL:
TRACE("Trying elfdll '%s'\n", filename);
if (!(pwm = BUILTIN32_LoadLibraryExA(filename, flags)))
pwm = ELFDLL_LoadLibraryExA(filename, flags);
break;
case MODULE_LOADORDER_SO: case MODULE_LOADORDER_SO:
TRACE("Trying so-library '%s'\n", filename); TRACE("Trying so-library '%s'\n", filename);
if (!(pwm = BUILTIN32_LoadLibraryExA(filename, flags))) if (!(pwm = BUILTIN32_LoadLibraryExA(filename, flags)))

View File

@ -26,7 +26,6 @@
#include "stackframe.h" #include "stackframe.h"
#include "debugtools.h" #include "debugtools.h"
#include "loadorder.h" #include "loadorder.h"
#include "elfdll.h"
#include "server.h" #include "server.h"
DEFAULT_DEBUG_CHANNEL(module); DEFAULT_DEBUG_CHANNEL(module);
@ -942,7 +941,6 @@ static HINSTANCE16 MODULE_LoadModule16( LPCSTR libname, BOOL implicit, BOOL lib_
/* Fall through */ /* Fall through */
case MODULE_LOADORDER_SO: /* This is not supported for NE modules */ case MODULE_LOADORDER_SO: /* This is not supported for NE modules */
case MODULE_LOADORDER_ELFDLL: /* This is not supported for NE modules */
case MODULE_LOADORDER_INVALID: /* We ignore this as it is an empty entry */ case MODULE_LOADORDER_INVALID: /* We ignore this as it is an empty entry */
hinst = 2; hinst = 2;
break; break;

View File

@ -21,9 +21,9 @@
#include "windef.h" #include "windef.h"
#include "wine/winbase16.h" #include "wine/winbase16.h"
#include "wine/library.h" #include "wine/library.h"
#include "elfdll.h"
#include "global.h" #include "global.h"
#include "neexe.h" #include "neexe.h"
#include "module.h"
#include "heap.h" #include "heap.h"
#include "main.h" #include "main.h"
#include "winerror.h" #include "winerror.h"

View File

@ -66,31 +66,40 @@ ShellLinker=wineshelllink
[DllDefaults] [DllDefaults]
EXTRA_LD_LIBRARY_PATH=${HOME}/wine/cvs/lib EXTRA_LD_LIBRARY_PATH=${HOME}/wine/cvs/lib
DefaultLoadOrder = native, builtin, elfdll, so DefaultLoadOrder = native, builtin, so
[DllOverrides] [DllOverrides]
kernel32, gdi32, user32 = builtin commdlg = builtin, native
krnl386, gdi, user = builtin comdlg32 = builtin, native
toolhelp = builtin ver = builtin, native
comdlg32, commdlg = elfdll, builtin, native version = builtin, native
version, ver = elfdll, builtin, native shell = builtin, native
shell32, shell = builtin, native shell32 = builtin, native
lz32, lzexpand = builtin, native lzexpand = builtin, native
commctrl, comctl32 = builtin, native lz32 = builtin, native
wsock32, winsock = builtin comctl32 = builtin, native
advapi32, crtdll, ntdll = builtin, native commctrl = builtin, native
mpr, winspool.drv = builtin, native wsock32 = builtin
ddraw, dinput, dsound = builtin, native winsock = builtin
winmm, mmsystem = builtin advapi32 = builtin, native
msvideo, msvfw32 = builtin, native crtdll = builtin, native
mcicda.drv, mciseq.drv = builtin, native mpr = builtin, native
winspool.drv = builtin, native
ddraw = builtin, native
dinput = builtin, native
dsound = builtin, native
mmsystem = builtin
winmm = builtin
msvideo = builtin, native
msvfw32 = builtin, native
mcicda.drv = builtin, native
mciseq.drv = builtin, native
mciwave.drv = builtin, native mciwave.drv = builtin, native
mciavi.drv, mcianim.drv = native, builtin mciavi.drv = native, builtin
msacm.drv, midimap.drv = builtin, native mcianim.drv = native, builtin
w32skrnl = builtin msacm.drv = builtin, native
wnaspi32, wow32 = builtin midimap.drv = builtin, native
system, display, wprocs = builtin wnaspi32 = builtin
wineps = builtin
icmp = builtin icmp = builtin
[x11drv] [x11drv]