X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2FGenLibDeps.pl;h=74eedd3383bcac469dd2252a04e9de6a9d073bc9;hb=8a6ccb5f73cf2e490faa181ad6662633b3ee38df;hp=419d8f92d866d62cf43d074f8d702a8cbfa924f7;hpb=d0fa46aa62604a51e1804d3cdcc64d3172fb52dc;p=oota-llvm.git diff --git a/utils/GenLibDeps.pl b/utils/GenLibDeps.pl index 419d8f92d86..74eedd3383b 100755 --- a/utils/GenLibDeps.pl +++ b/utils/GenLibDeps.pl @@ -8,6 +8,7 @@ # # Syntax: GenLibDeps.pl [-flat] [path_to_nm_binary] # +use strict; # Parse arguments... my $FLAT = 0; @@ -47,8 +48,8 @@ if (!defined($nmPath) || $nmPath eq "") { opendir DIR,$Directory; my @files = readdir DIR; closedir DIR; -@libs = grep(/libLLVM.*\.a$/,sort(@files)); -@objs = grep(/LLVM.*\.o$/,sort(@files)); +my @libs = grep(/libLLVM.*\.a$/,sort(@files)); +my @objs = grep(/LLVM.*\.o$/,sort(@files)); # Declare the hashes we will use to keep track of the library and object file # symbol definitions. @@ -56,22 +57,26 @@ my %libdefs; my %objdefs; # Gather definitions from the libraries -foreach $lib (@libs ) { - open DEFS, - "$nmPath -g $Directory/$lib | grep ' [ABCDGRST] ' | sed -e 's/^[0-9A-Fa-f]* [ABCDGRST] //' | sort | uniq |"; +foreach my $lib (@libs ) { + open DEFS, "$nmPath -g $Directory/$lib|"; while () { - chomp($_); + next if (! / [ABCDGRST] /); + s/^[^ ]* [ABCDGRST] //; + s/\015?\012//; # not sure if is in binmode and uses LF or CRLF. + # this strips both LF and CRLF. $libdefs{$_} = $lib; } close DEFS; } # Gather definitions from the object files. -foreach $obj (@objs ) { - open DEFS, - "$nmPath -g $Directory/$obj | grep ' [ABCDGRST] ' | sed -e 's/^[0-9A-Fa-f]* [ABCDGRST] //' | sort | uniq |"; +foreach my $obj (@objs ) { + open DEFS, "$nmPath -g $Directory/$obj |"; while () { - chomp($_); + next if (! / [ABCDGRST] /); + s/^[^ ]* [ABCDGRST] //; + s/\015?\012//; # not sure if is in binmode and uses LF or CRLF. + # this strips both LF and CRLF. $objdefs{$_} = $obj; } close DEFS; @@ -100,7 +105,7 @@ sub gen_one_entry { $DepLibs{$libdefs{$_}} = [] unless exists $DepLibs{$libdefs{$_}}; push(@{$DepLibs{$libdefs{$_}}}, $_); } elsif (defined($objdefs{$_}) && $objdefs{$_} ne $lib) { - $libroot = $lib; + my $libroot = $lib; $libroot =~ s/lib(.*).a/$1/; if ($objdefs{$_} ne "$libroot.o") { $DepLibs{$objdefs{$_}} = [] unless exists $DepLibs{$objdefs{$_}}; @@ -115,14 +120,14 @@ sub gen_one_entry { if ($WHY) { print "\n"; my @syms = @{$DepLibs{$key}}; - foreach $sym (@syms) { + foreach my $sym (@syms) { print " $sym\n"; } } } else { print "
  • $key
  • \n"; } - $suffix = substr($key,length($key)-1,1); + my $suffix = substr($key,length($key)-1,1); $key =~ s/(.*)\.[oa]/$1/; if ($suffix eq "a") { if (!$FLAT) { print DOT "$lib_ns -> $key [ weight=0 ];\n" }; @@ -169,7 +174,7 @@ if (!$FLAT) { } # Print libraries first -foreach $lib (@libs) { +foreach my $lib (@libs) { gen_one_entry($lib); } @@ -196,7 +201,7 @@ if (!$FLAT) { } # Print objects second -foreach $obj (@objs) { +foreach my $obj (@objs) { gen_one_entry($obj); }