[PATCH 5/7] Fix the DLL search path order

Thiago Macieira thiago at macieira.org
Fri Oct 11 11:05:41 UTC 2013


The correct order on Windows is:
 1. Local directory (relative to the binary)
 2. $PATH
 3. System dirs

We insert our -L flags between 1 and 2 above.

Signed-off-by: Thiago Macieira <thiago at macieira.org>
---
 scripts/win-ldd.pl | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/scripts/win-ldd.pl b/scripts/win-ldd.pl
index 4144d79..6907016 100644
--- a/scripts/win-ldd.pl
+++ b/scripts/win-ldd.pl
@@ -2,7 +2,7 @@
 use strict;
 my %deploy;
 my $objdump = $ENV{objdump} ? $ENV{objdump} : "objdump";
-my @searchdirs = split(/:/, $ENV{PATH});
+my @searchdirs;
 
 sub addDependenciesFor($) {
     open OBJDUMP, "-|", $objdump, "-p", $_[0] or die;
@@ -46,11 +46,19 @@ for (@ARGV) {
     if (-d $_) {
         push @searchdirs, $_;
     } elsif (-f $_) {
+        # Add $_'s path to the search list too
+        my $dirname = $_;
+        $dirname =~ s,/[^/]+$,,;
+        push @searchdirs, $dirname;
+
         $deploy{$_} = $_;
         addDependenciesFor($_);
     }
 }
 
+# Append PATH to @searchdirs
+ at searchdirs = (@searchdirs, split(/:/, $ENV{PATH}));
+
 while (1) {
     findMissingDependencies();
 
-- 
1.7.11.7



More information about the subsurface mailing list