diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-03-23 23:04:50 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-03-23 23:04:50 +0000 |
commit | 2fee235bf35fbcb0186835434310cb6bf1bfd0c8 (patch) | |
tree | 1afa26daada58aac85bbcfa979b4dd3a86094b56 /utils/findsym.pl | |
parent | 90c79d73ac071978f01eb48ea3f7e1cea79a730d (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27003 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/findsym.pl')
-rwxr-xr-x | utils/findsym.pl | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/utils/findsym.pl b/utils/findsym.pl new file mode 100755 index 0000000000..31dd8b2f1f --- /dev/null +++ b/utils/findsym.pl @@ -0,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; +} |