Make GenLibDeps.pl more robust in the face of broken piping problems.
authorChris Lattner <sabre@nondot.org>
Sat, 4 Oct 2008 18:03:46 +0000 (18:03 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 4 Oct 2008 18:03:46 +0000 (18:03 +0000)
Patch by Kenneth Boyd!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57057 91177308-0d34-0410-b5e6-96231b3b80d8

utils/GenLibDeps.pl

index 35811b4e3cd132c33ff7a6a3af19fd0da32817bd..21853d5350b021aa6c88c879f7e628c6944add4c 100755 (executable)
@@ -114,6 +114,32 @@ sub gen_one_entry {
     }
   }
   close UNDEFS;
+  unless(keys %DepLibs) {
+    # above failed
+    open UNDEFS, "$nmPath -g -u $Directory/$lib |";
+    while (<UNDEFS>) {
+      # to bypass non-working sed
+      if ('  ' eq substr($_,0,2) and index($_,'U ')) {
+        $_ = substr($_,index($_,'U ')+2)
+      };
+      $_ = substr($_,index($_,'  *U ')+5) if -1!=index($_,'  *U ');
+
+      chomp;
+      my $lib_printed = 0;
+      if (defined($libdefs{$_}) && $libdefs{$_} ne $lib) {
+        $DepLibs{$libdefs{$_}} = [] unless exists $DepLibs{$libdefs{$_}};
+        push(@{$DepLibs{$libdefs{$_}}}, $_);
+      } elsif (defined($objdefs{$_}) && $objdefs{$_} ne $lib) {
+        my $libroot = $lib;
+        $libroot =~ s/lib(.*).a/$1/;
+        if ($objdefs{$_} ne "$libroot.o") {
+          $DepLibs{$objdefs{$_}} = [] unless exists $DepLibs{$objdefs{$_}};
+          push(@{$DepLibs{$objdefs{$_}}}, $_);
+        }
+      }
+    }
+  }
+
   for my $key (sort keys %DepLibs) {
     if ($FLAT) {
       print " $key";