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[:...]]
.br
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
.I format: DefaultLoadOrder=native,elfdll,so,builtin
.I format: DefaultLoadOrder=native,so,builtin
.br
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
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
Case is not (yet) 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
ignored. Keep everything in lower case to be sure that your entries keep the
same meaning. See also commandline option
Case is not (yet) important and only the first letter of each type is
enough to identify the type n[ative], s[o], b[uiltin]. Also whitespace
is ignored. Keep everything in lower case to be sure that your entries
keep the same meaning. See also commandline option
.I --dll
for details about the allowable types.
.PP
.B [DllOverrides]
.br
There are no explicit keys defined other than module/library names. A comma
separated list of modules is followed by an assignment of the load order
for these specific modules. See above for possible types. You should not
specify an extension.
There are no explicit keys defined other than module/library names. A
module namd is followed by an assignment of the load order for this
specific module. See above for possible types. You should not specify
an extension.
.br
Examples:
.br
.I kernel32, gdi32, user32 = builtin
.I kernel32 = builtin
.br
.I kernel, gdi, user = builtin
.I kernel = builtin
.br
.I comdlg32 = elfdll, native, builtin
.I comdlg32 = native, builtin
.br
.I commdlg = native, builtin
.br
.I version, ver = elfdll, native, builtin
.br
Changing the load order of kernel/kernel32 and gdi/gdi32 to
anything other than builtin will cause wine to fail because wine cannot
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
to be converted to elfdlls and will live as builtins for quite some time
to come.
but kernel[32] will never work native).
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
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
what you are doing.
.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]
.br
.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
Use the specified X display
.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
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 (
.I native
), ELF encapsulated windows dlls (
.I elfdll
), native ELF libraries (
.I so
)and
@ -195,7 +193,7 @@ space: Native windows dlls (
internal dlls (
.I builtin
). 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.
.br
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
an application request to load c:\(rsfoo\(rsbar\(rsbaz.dll load the builtin library baz.
.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
Try to load comdlg32 and commdlg as elfdll first and try the native version
if the elfdll load fails; load shell32/shell always as builtin and
Try to load comdlg32 and commdlg as builtin first and try the native version
if the builtin load fails; load shell32/shell always as builtin and
comctl32/commctrl always as native.
.br
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
If set, the content of this variable is taken as the name of the directory where
.B wine
stores its data (usually
stores its data (the default is
.I $HOME/.wine
). This directory contains also the socket, which is used to communicate with the
.I wineserver.
@ -327,6 +325,27 @@ to different values for different
processes, it is possible to run a number of truly independent
.B wine
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
.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
.B AUTHORS
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
.PP
A status report on many applications is available from
@ -415,6 +440,11 @@ The
.B wine
server
.TP
.I @prefix@/bin/winedbg
The
.B wine
debugger
.TP
.I @prefix@/bin/wineclpsrv
The
.B wine
@ -435,10 +465,6 @@ User-specific configuration file
.I ~/.wine
Directory containing user specific data managed by
.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_DLL 1 /* Native DLLs */
#define MODULE_LOADORDER_ELFDLL 2 /* Elf-dlls */
#define MODULE_LOADORDER_SO 3 /* Native .so libraries */
#define MODULE_LOADORDER_BI 4 /* Built-in modules */
#define MODULE_LOADORDER_NTYPES 4
#define MODULE_LOADORDER_SO 2 /* Native .so libraries */
#define MODULE_LOADORDER_BI 3 /* Built-in modules */
#define MODULE_LOADORDER_NTYPES 3
typedef struct module_loadorder {
char *modulename;

View File

@ -42,9 +42,9 @@ static struct tagDllOverride {
{"w32skrnl,wow32", "builtin"},
{"advapi32,crtdll,ntdll", "builtin,native"},
{"lz32,lzexpand", "builtin,native"},
{"version,ver", "elfdll,builtin,native"},
{"version,ver", "builtin,native"},
/* "new" interface */
{"comdlg32,commdlg", "elfdll,builtin,native"},
{"comdlg32,commdlg", "builtin,native"},
{"shell32,shell", "builtin,native"},
{"shlwapi", "native,builtin"},
{"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 int warn;
char *cptr;
int n = 0;
@ -171,8 +172,9 @@ static BOOL ParseLoadOrder(char *order, module_loadorder_t *mlo)
case 'n': type = MODULE_LOADORDER_DLL; break;
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': type = MODULE_LOADORDER_SO; break;
@ -337,24 +339,23 @@ endit:
* The path will be appended to any existing LD_LIBRARY_PATH from the
* 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
* order. The DefaultLoadOrder key is used as a fallback when a module is
* 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:
* - native Native windows dll files
* - elfdll Dlls encapsulated in .so libraries
* - so Native .so libraries mapped to dlls
* - builtin Built-in modules
*
* 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.
* E.g.:
* n,el ,s , b
* n,s , b
* is equal to:
* native,elfdll,so,builtin
* native,so,builtin
*
* Section:
* [DllOverrides]
@ -367,9 +368,9 @@ endit:
* Examples:
* kernel32, gdi32, user32 = builtin
* kernel, gdi, user = builtin
* comdlg32 = elfdll, native, builtin
* comdlg32 = native, builtin
* commdlg = native, builtin
* version, ver = elfdll, native, builtin
* version, ver = native, builtin
*
*/
@ -395,7 +396,7 @@ BOOL MODULE_InitLoadOrder(void)
#endif
/* 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)
{
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 */
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"
" - 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"
" - different loadorders for different dlls can be specified by seperating the\n"
" commandline entries with a '+'\n"
@ -462,7 +463,7 @@ BOOL MODULE_InitLoadOrder(void)
if(TRACE_ON(module))
{
int i, j;
static char types[6] = "-NESB";
static char types[] = "-NSB";
for(i = 0; i < nmodule_loadorder; i++)
{

View File

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

View File

@ -26,7 +26,6 @@
#include "stackframe.h"
#include "debugtools.h"
#include "loadorder.h"
#include "elfdll.h"
#include "server.h"
DEFAULT_DEBUG_CHANNEL(module);
@ -942,7 +941,6 @@ static HINSTANCE16 MODULE_LoadModule16( LPCSTR libname, BOOL implicit, BOOL lib_
/* Fall through */
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 */
hinst = 2;
break;

View File

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

View File

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