summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dll_init.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2012-03-05 10:27:44 +0000
committerCorinna Vinschen <corinna@vinschen.de>2012-03-05 10:27:44 +0000
commit75effa37fcb63c1e72918f6689660e4c3b11a5e8 (patch)
tree75e2ec4f4de6a95bae643c926c922b5cd3c18e65 /winsup/cygwin/dll_init.cc
parentf5b0d9d414b7be8e93363fb7a2d46425710585f7 (diff)
downloadcygnal-75effa37fcb63c1e72918f6689660e4c3b11a5e8.tar.gz
cygnal-75effa37fcb63c1e72918f6689660e4c3b11a5e8.tar.bz2
cygnal-75effa37fcb63c1e72918f6689660e4c3b11a5e8.zip
* dll_init.cc (dll_list::operator[]): Extend comment a bit more to
explain previous patch.
Diffstat (limited to 'winsup/cygwin/dll_init.cc')
-rw-r--r--winsup/cygwin/dll_init.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc
index 170cf84e0..3b358d5a0 100644
--- a/winsup/cygwin/dll_init.cc
+++ b/winsup/cygwin/dll_init.cc
@@ -131,7 +131,22 @@ dll::init ()
So I reverted the original change from 2012-02-08 and only applied the
following fix: Check if the path is preceeded by a long pathname prefix,
and, if so, drop it forthwith so that subsequent full path comparisons
- work as expected. */
+ work as expected.
+
+ At least that was the original idea. In fact there are two case, linked
+ and runtime loaded DLLs, which have to be distinguished:
+
+ - Linked DLLs are loaded by only specifying the basename of the DLL and
+ searching it using the system DLL search order as given in the
+ aforementioned MSDN URL.
+
+ - Runtime loaded DLLs are specified with the full path since that's how
+ dlopen works.
+
+ In effect, we have to be careful not to mix linked and loaded DLLs.
+ For more info how this gets accomplished, see the comments at the start
+ of dll_list::alloc, as well as the comment preceeding the definition of
+ the in_load_after_fork bool later in the file. */
dll *
dll_list::operator[] (const PWCHAR name)
{