[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