[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