summaryrefslogtreecommitdiffstats
path: root/winsup
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
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')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/dll_init.cc17
2 files changed, 21 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index af6b079e6..36347c950 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-05 Corinna Vinschen <corinna@vinschen.de>
+
+ * dll_init.cc (dll_list::operator[]): Extend comment a bit more to
+ explain previous patch.
+
2012-03-04 Corinna Vinschen <corinna@vinschen.de>
* dll_init.cc (dll_list::alloc): Compare linked DLLs by basename only.
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)
{