[llvm-commits] CVS: llvm/utils/findsym.pl

Reid Spencer reid at x10sys.com
Thu Mar 23 15:05:04 PST 2006



Changes in directory llvm/utils:

findsym.pl added (r1.1)
---
Log message:

A little script to find LLVM symbols. Ideally this would use c++filt for 
both input and output to render everything in C++, but that will be the
next patch. For now, it just runs nm and greps each .o or .a file for 
the desired symbol.


---
Diffs of the changes:  (+34 -0)

 findsym.pl |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+)


Index: llvm/utils/findsym.pl
diff -c /dev/null llvm/utils/findsym.pl:1.1
*** /dev/null	Thu Mar 23 17:05:00 2006
--- llvm/utils/findsym.pl	Thu Mar 23 17:04:50 2006
***************
*** 0 ****
--- 1,34 ----
+ #!/usr/bin/perl -w
+ #
+ # Program:  findsym.pl
+ #
+ # Synopsis: Generate a list of the libraries in which a symbol is defined or
+ #           referenced.
+ #
+ # Syntax:   GenLibDeps.pl <directory_with_libraries_in_it> <symbol>
+ #
+ 
+ # 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;
+ }






More information about the llvm-commits mailing list