Commit Graph

166 Commits

Author SHA1 Message Date
Alexandre Julliard
a458f3e538 ntdll: Support loading a builtin dll by specifying an explicit path to
the .so file.
2006-02-07 21:16:25 +01:00
Eric Pouech
e66e227dbe Fixes for missing prototypes warnings. 2006-02-06 13:13:28 +01:00
Robert Shearman
2d08465b81 ntdll: Loader optimization.
Optimize for the case where a DLL with no path is requested and it is
already loaded.
2006-01-18 14:22:19 +01:00
Alexandre Julliard
45a4e5439b Set refcount to -1 on implicitly loaded dlls to avoid unloading them
(suggested by Michael Ost).
2006-01-04 14:55:33 +01:00
Alexandre Julliard
5dc6d95952 ntdll: New implementation of relay thunks.
New implementation of relay thunks that doesn't require modifying code
on the fly, so that the thunks can be put in the text section.
Some performance improvements.
2005-12-18 10:45:01 +01:00
Alexandre Julliard
ae964ac801 Take advantage of the __EXCEPT_PAGE_FAULT macro. 2005-12-16 17:17:57 +01:00
Alexandre Julliard
4cbf118d88 Check for a valid module before attempting to read the export
directory in LdrGetProcedureAddress.
2005-11-29 17:10:30 +01:00
Ge van Geldorp
1a1583a364 Match PSDK STATUS_* definitions. 2005-11-28 17:32:54 +01:00
Alexandre Julliard
cc01e8ff05 Preserve 16-byte stack alignment in the various assembly
functions. Needed for MacOSX.
2005-11-23 19:55:06 +01:00
Alexandre Julliard
cb443bdb04 Attach to implicitly loaded builtin dlls on process startup. 2005-10-26 12:12:44 +00:00
Alexandre Julliard
c2bb910877 Ignore the size of the import directory, process imports until we find
a null entry.
2005-10-04 15:54:55 +00:00
Alexandre Julliard
884599112e Use SIZE_T instead of ULONG for the size arguments of the virtual
memory functions.
2005-09-12 10:36:06 +00:00
Alexandre Julliard
20a1a203c6 Use a more portable scheme for storing the name of a critical
section.
2005-09-09 10:19:44 +00:00
Mike McCormack
b5bd4a101a Fix gcc 4.0 warnings. 2005-09-02 14:47:36 +00:00
Alexandre Julliard
bba5423d0f Uncomment out DisableThreadLibraryCalls in DllMain and add the
kernel32 imports that it requires.
2005-08-29 15:11:37 +00:00
Alexandre Julliard
b480a3c544 Removed a redundant and possibly wrong warning. 2005-08-12 16:02:42 +00:00
Alexandre Julliard
915aebb852 Moved the version initialization to ntdll.
Properly set the version fields in the PEB.
Removed some no longer used structures.
2005-08-10 13:12:27 +00:00
Alexandre Julliard
31dd4af57d Don't call process attach notification during process shutdown.
Make sure we don't insert a module in the same list twice.
2005-08-09 20:45:46 +00:00
Kevin Koltzau
6873379991 Define 64bit PE structures. 2005-07-19 11:44:32 +00:00
Alexandre Julliard
3be8cb8b02 Moved initialization of the default user process parameters to ntdll. 2005-07-14 12:33:30 +00:00
Alexandre Julliard
11ad6a0ac4 Return the startup info size in the init_thread request, and allocate
the process parameters structure in ntdll instead of kernel.
2005-07-13 19:43:35 +00:00
Alexandre Julliard
d3a6a16efd Initialize relay debugging earlier on now that the registry is loaded
by the server.
2005-07-13 14:23:06 +00:00
Mike McCormack
6b636e3e7b Use RTL_CRITICAL_SECTION instead of CRITICAL_SECTION. 2005-06-25 18:00:57 +00:00
Mike McCormack
04f9f1b066 Don't include winbase.h or winerror.h when not necessary. 2005-06-21 09:52:40 +00:00
Mike McCormack
5b2d5fd758 Use HANDLE instead of HKEY in the NT API. 2005-06-17 13:58:33 +00:00
Alexandre Julliard
73f6718134 Allocate the system view for builtin modules earlier in
load_builtin_callback so that we also create one for the main
executable.
2005-06-05 18:22:02 +00:00
Alexandre Julliard
7016b99972 Moved the loaddll trace into the load_builtin_dll function so that it
gets printed even when we don't get the expected so file.
2005-05-23 10:33:34 +00:00
Alexandre Julliard
b3e0a032ce Moved entry point definitions from module.h to kernel16_private.h. 2005-05-18 18:27:54 +00:00
Alexandre Julliard
4de9cfd1cd Moved import tracing to a separate channel so that +module traces
don't contain too much noise.
2005-05-18 09:51:46 +00:00
Vincent Béron
0bdac8c0f9 Use "" for Windows includes in dlls, instead of <>. 2005-03-21 10:52:26 +00:00
Dmitry Timoshkov
75b93ff1aa Match OVERLAPPED structure to the SDK definition. 2005-03-17 19:00:08 +00:00
Dmitry Timoshkov
0497af09a7 Match RaiseException and EXCEPTION_RECORD to SDK definitions. 2005-02-24 13:15:36 +00:00
Ivan Leo Puoti
d3edafe1e2 Replace GetCurrentProcess() with NtCurrentProcess() in ntdll. 2005-02-22 19:33:50 +00:00
Ivan Leo Puoti
bfef6208a2 Added NtLoadDriver and NtUnloadDriver stubs. 2005-01-24 12:49:53 +00:00
Mike Hearn
bef1336667 Give a more informative error when a DLL fails to initialize during
startup.
2005-01-11 16:01:31 +00:00
Alexandre Julliard
d5088668de Generate stub entries on the fly for missing entry points instead of
returning a deadbeef pointer.
2004-12-14 20:03:23 +00:00
Alexandre Julliard
b98c2e3847 Append .dll extension in all cases (spotted by Mike Hearn). 2004-11-23 14:03:49 +00:00
Alexandre Julliard
fac7a5ab8b Free the memory view before we unload a builtin dll to avoid a race
condition.
2004-11-06 03:54:23 +00:00
Robert Shearman
2050591370 Fix NtAllocateVirtualMemory declaration and fix users of the
function.
2004-10-11 20:59:06 +00:00
Mike McCormack
d80eb97b29 Use FILE_SHARE_DELETE when loading modules, as running an exe that's
going to be deleted should work.
2004-09-15 18:02:49 +00:00
Alexandre Julliard
60f0439ba6 Make relay and snooping work for LoadLibrary+GetProcAddress sequence
(based on a patch by Dmitry Timoshkov).
2004-08-02 22:25:01 +00:00
Alexandre Julliard
9f58ee709d Set the system directory in ntdll as soon as we have determined it. 2004-07-15 22:07:21 +00:00
Filip Navara
fc51760f48 Unprotect Import Address Table while filling it. 2004-06-22 02:07:47 +00:00
Alexandre Julliard
fd9792bdc9 Added support for the IMAGE_FILE_LARGE_ADDRESS_AWARE flag. 2004-06-18 00:26:57 +00:00
Eric Pouech
db52588754 Const correctness. 2004-06-15 00:47:00 +00:00
Alexandre Julliard
ae42aad2ae Initialize ntdll debugging earlier on so that we can trace the server
startup too.
2004-05-05 05:56:37 +00:00
Alexandre Julliard
174e2a6464 Reimplemented GetFileAttributesW, SetFileAttributesW and SetFileTime
using the corresponding ntdll functionality.
2004-04-20 00:36:29 +00:00
Alexandre Julliard
e792fb74ba Implemented NtCreatelFile using the new symlink scheme.
Use NtCreateFile in the loader, and get rid of the CreateFileW upcall
hack.
2004-04-12 23:31:09 +00:00
Alexandre Julliard
670711ef25 Handle file mappings on removable media entirely inside ntdll. 2004-04-06 23:13:47 +00:00
Alexandre Julliard
a86a022256 Added workaround for broken dlls that modify ebx in their entry point
(reported by Christian Costa).
2004-03-19 02:07:16 +00:00
Mike Hearn
a54e3216c3 - Add debug SnoopFromInclude/SnoopFromExclude options.
- Correct TRACE debug channel usage in SNOOP_SetupDLL.
- Refactor check_relay_from_relay.
2004-03-16 03:10:07 +00:00
Alexandre Julliard
fe8ead56a8 Get rid of ntdll_get_process_heap and ntdll_get_process_pmts by using
standard APIs instead.
2004-03-12 01:59:35 +00:00
Alexandre Julliard
fc8b376a55 Return right away from import_dll when a dll is not found to avoid
displaying many useless function errors.
2004-02-24 01:25:03 +00:00
Alexandre Julliard
f19c9e7cdd Get pointer to CreateFileW earlier on during startup.
Make sure we don't crash when loading a dll before the modref for the
main exe has been created.
2004-02-07 01:11:54 +00:00
Alexandre Julliard
3604824262 If supported by the linker, prevent the ELF loader from calling the
dll constructors at load time and call them from the dll entry point
instead.
2004-01-08 03:36:53 +00:00
Mike Hearn
5f5034ff3b Print exe name when initialization fails. 2003-12-31 00:11:48 +00:00
Alexandre Julliard
0382aead65 Removed no longer used extra space allocated in the modref structure. 2003-12-03 20:28:41 +00:00
Alexandre Julliard
402b79a1e8 Porting fixes. 2003-11-27 00:59:36 +00:00
Alexandre Julliard
cba157e998 Better support for loading exe files as libraries.
Make sure kernel32 and ntdll have a full path name even though they
are loaded before we know the system dir.
2003-11-25 05:28:57 +00:00
Alexandre Julliard
16b4411669 Removed MODULE_GetLoadOrderA. 2003-11-25 01:03:04 +00:00
Alexandre Julliard
f9be2f3d21 Removed some unnecessary includes. 2003-11-17 20:31:29 +00:00
Alexandre Julliard
7924f421e9 Allocate the TEB and signal stack separately from the main stack.
Dynamically allocate the initial TEB too so that it is properly
page-aligned.
2003-11-04 04:50:18 +00:00
Alexandre Julliard
a062677a95 Allocate a memory view for builtin dlls so that VirtualQuery returns
something sensible.
2003-11-03 22:23:09 +00:00
Alexandre Julliard
8f1b861e27 Repaired relay debugging for kernel and ntdll (spotted by Uwe
Bonnes).
2003-10-28 00:25:32 +00:00
Alexandre Julliard
f9df57d94d Call the application entry point from kernel32, some apps depend on
that.
2003-10-24 00:32:36 +00:00
Gerald Pfeifer
9b4b21b7b0 Fix function pointer variable declaration in __wine_process_init(). 2003-10-14 05:19:24 +00:00
Alexandre Julliard
e55d5937ac Set or clear the BeingDebugged flag in the PEB when a debugger is
attached to or detached from a process.
Don't send exception events to the server unless a debugger is
present.
2003-10-14 01:30:42 +00:00
Alexandre Julliard
a438ebc509 Fixed importing of dlls with no exports (reported by Warren Baird).
Don't crash on an empty load order specification (reported by Maxime
Bellengé).
Try to avoid crashing when an import is missing for a builtin dll.
2003-10-10 23:28:51 +00:00
Alexandre Julliard
410e6b7b39 Changed the init code to make libwine load only ntdll and transfer
control to it, and then have ntdll load kernel32 using the normal
loader mechanisms.
Get rid of BUILTIN32_LoadExeModule.
2003-10-10 00:12:17 +00:00
Alexandre Julliard
953849f2fc Added hack to call CreateFileW through a pointer so that we don't need
to link to kernel functions.
Commented out SMB support in NtReadFile for now.
2003-10-08 03:51:31 +00:00
Alexandre Julliard
af192f83b6 Store a "removable" flag instead of the full drive type in the server
file object; this way we don't need to use GetDriveTypeW in the loader
code.
Make sure we always have a valid builtin_load_info pointer.
2003-10-08 00:25:32 +00:00
Alexandre Julliard
146afcc98c Removed references to GetSystemDirectoryW.
Optimized module lookup a bit.
Keep track of the modref pointer across builtin dll loads to avoid
having to look it up by name afterwards.
2003-10-07 22:56:34 +00:00
Alexandre Julliard
5d9422b09f Rewrite of the dll file search algorithm to better deal with the
broken behavior of RtlDosSearchPath_U.
2003-10-07 03:48:42 +00:00
Alexandre Julliard
632676b17e Moved the final process init and dependency loading to
dlls/ntdll/loader.c, (ab)using the LdrInitializeThunk entry point.
2003-10-06 21:18:51 +00:00
Alexandre Julliard
4137aecaa5 Changed LdrLoadDll to only search for the dll in the specified path,
using ntdll functions.
Moved LOAD_WITH_ALTERED_SEARCH_PATH functionality to LoadLibraryEx
where it belongs.
2003-10-02 04:58:49 +00:00
Alexandre Julliard
c30cefb2d5 Store module names in Unicode in the server. 2003-09-30 01:04:19 +00:00
Alexandre Julliard
f80b869939 Converted most of the loader code to Unicode. 2003-09-29 20:42:24 +00:00
Alexandre Julliard
1cb92bbeec Converted the load order code to use Unicode throughout. 2003-09-27 03:50:40 +00:00
Alexandre Julliard
74c5efeb76 Moved WINE_MODREF definition to loader.c.
Removed short module name from WINE_MODREF, Windows doesn't have it.
Rewrote LdrGetDllHandle to only use Unicode.
2003-09-25 23:55:35 +00:00
Alexandre Julliard
2052538a47 Moved loadorder support to dlls/ntdll.
Removed the --dll option and replaced it by the WINEDLLOVERRIDES
environment variable.
2003-09-25 20:33:41 +00:00
Alexandre Julliard
97ad311e71 Moved the 32-bit builtin loader and the remaining bits of the PE
loader into dlls/ntdll/loader.c.
2003-09-19 04:04:57 +00:00
Francois Gouget
ae50013017 Fix the case of product and company names. 2003-09-08 19:38:45 +00:00
Alexandre Julliard
e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Alexandre Julliard
02f2813968 Renamed a few TEB fields to use the "official" names. 2003-08-27 23:14:29 +00:00
Alexandre Julliard
19b6a49845 Allocate DebugInfo field for all critical sections (based on a patch
by Alex Pasadyn).
Get rid of the Wine-specific CRITICAL_SECTION_INIT macro.
2003-08-12 23:50:54 +00:00
Alexandre Julliard
0fb0f2a306 Print status codes in hex. 2003-07-18 23:00:49 +00:00
Eric Pouech
675b75597b - removed next & prev fields from WINE_MODREF and implement instead
the three linked lists in LDR_MODULE
- added PEB_LDR_DATA structure to PEB
- removed a couple of no longer needed global & static variables
2003-07-01 03:38:56 +00:00
Alexandre Julliard
b379334271 Make sure to return an error if load_dll fails because the load order
is empty.
2003-06-27 04:06:23 +00:00
Troy Rollo
b58e121326 Removed FIXME when loading second exe file. 2003-06-27 04:05:27 +00:00
Alexandre Julliard
c7a51eec43 Only create the 16-bit dummy module when we need really it. 2003-05-20 02:32:26 +00:00
Alexandre Julliard
adb532903c Rewrote module TLS support and moved it to ntdll. 2003-05-14 19:51:14 +00:00
Robert Shearman
8e3bb615a0 Fix NULL pointer error when displaying error message about missing
forwarded export.
2003-05-13 00:28:25 +00:00
Alexandre Julliard
d9bab57477 Added support for calling the TLS callback functions. 2003-05-08 04:13:26 +00:00
Alexandre Julliard
f130f8099a Added possibility to filter relay traces based on the module that
called the function. Cleaned up a few traces.
2003-04-07 23:27:54 +00:00
Alexandre Julliard
0412cc55d2 Rewrote most of the import fixup code to avoid doing redundant work
for every entry point. Moved it all to dlls/ntdll/loader.c.
Various optimizations in the other loader routines.
2003-04-05 05:16:11 +00:00
Alexandre Julliard
39f73ddeaa Merged PE_InitDLL into MODULE_InitDLL.
Fixed a few traces.
2003-04-04 19:50:17 +00:00
Alexandre Julliard
5cdfa593c0 Fixed duplicate initialization of some of the wm->ldr fields. 2003-03-22 20:54:40 +00:00
Eric Pouech
69dc0d93d5 Removed no longer needed MODREF.find_export field. 2003-03-21 21:27:16 +00:00
Eric Pouech
051f87150f - implemented LdrQueryProcessModuleInformation
- rewrote VERSION_GetLinkedDllVersion() with this new function instead
  of accessing directly the modref list
2003-03-21 00:34:36 +00:00
Eric Pouech
19e050eb6f Moved WINE_MODREF.flags to WINE_MODREF.ldr.Flags, and make use of the
same flags values as Win2000.
2003-03-20 23:40:08 +00:00