| #!/usr/bin/env perl | 
 | # | 
 | # Program:  findsym.pl | 
 | # | 
 | # Synopsis: Generate a list of the libraries in which a symbol is defined or | 
 | #           referenced. | 
 | # | 
 | # Syntax:   findsym.pl <directory_with_libraries_in_it> <symbol> | 
 | # | 
 |  | 
 | use warnings; | 
 |  | 
 | # Give first option a name. | 
 | my $Directory = $ARGV[0]; | 
 | my $Symbol = $ARGV[1]; | 
 |  | 
 | # Open the directory and read its contents, sorting by name and differentiating | 
 | # by whether its a library (.a) or an object file (.o) | 
 | opendir DIR,$Directory; | 
 | my @files = readdir DIR; | 
 | closedir DIR; | 
 | @objects = grep(/l?i?b?LLVM.*\.[oa]$/,sort(@files)); | 
 |  | 
 | # Gather definitions from the libraries | 
 | foreach $lib (@objects) { | 
 |   my $head = 0; | 
 |   open SYMS,  | 
 |     "nm $Directory/$lib | grep '$Symbol' | sort --key=3 | uniq |"; | 
 |   while (<SYMS>) { | 
 |     if (!$head) { print "$lib:\n"; $head = 1; } | 
 |     chomp($_); | 
 |     print "  $_\n"; | 
 |   } | 
 |   close SYMS; | 
 | } |