Fix test that wrongly excluded some dumpbin symbols.

Keep the intermediate symbol file rather then blowing it away, for easier debugging.
This commit is contained in:
Andrew Dunstan 2008-01-31 03:26:14 +00:00
parent 0688d84041
commit 0a4ef62bf8
1 changed files with 5 additions and 3 deletions

View File

@ -2,7 +2,7 @@ my @def;
# #
# Script that generates a .DEF file for all objects in a directory # Script that generates a .DEF file for all objects in a directory
# #
# $PostgreSQL: pgsql/src/tools/msvc/gendef.pl,v 1.6 2007/05/03 14:04:03 mha Exp $ # $PostgreSQL: pgsql/src/tools/msvc/gendef.pl,v 1.7 2008/01/31 03:26:14 adunstan Exp $
# #
die "Usage: gendef.pl <modulepath>\n" unless ($ARGV[0] =~ /\\([^\\]+$)/); die "Usage: gendef.pl <modulepath>\n" unless ($ARGV[0] =~ /\\([^\\]+$)/);
@ -18,14 +18,16 @@ print "Generating $defname.DEF from directory $ARGV[0]\n";
while (<$ARGV[0]/*.obj>) while (<$ARGV[0]/*.obj>)
{ {
my $symfile = $_;
$symfile=~ s/\.obj$/.sym/i;
print "."; print ".";
system("dumpbin /symbols /out:symbols.out $_ >NUL") && die "Could not call dumpbin"; system("dumpbin /symbols /out:symbols.out $_ >NUL") && die "Could not call dumpbin";
open(F, "<symbols.out") || die "Could not open symbols.out for $_\n"; open(F, "<symbols.out") || die "Could not open symbols.out for $_\n";
while (<F>) while (<F>)
{ {
s/\(\)//g; s/\(\)//g;
next unless /^\d/;
my @pieces = split; my @pieces = split;
next unless $pieces[0] =~ /^[A-F0-9]{3}$/;
next unless $pieces[6]; next unless $pieces[6];
next if ($pieces[2] eq "UNDEF"); next if ($pieces[2] eq "UNDEF");
next unless ($pieces[4] eq "External"); next unless ($pieces[4] eq "External");
@ -41,7 +43,7 @@ while (<$ARGV[0]/*.obj>)
push @def, $pieces[6]; push @def, $pieces[6];
} }
close(F); close(F);
unlink("symbols.out"); rename("symbols.out",$symfile);
} }
print "\n"; print "\n";