From: Reid Spencer Date: Thu, 23 Mar 2006 23:04:50 +0000 (+0000) Subject: A little script to find LLVM symbols. Ideally this would use c++filt for X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2fee235bf35fbcb0186835434310cb6bf1bfd0c8;p=oota-llvm.git 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 --- diff --git a/utils/findsym.pl b/utils/findsym.pl new file mode 100755 index 00000000000..31dd8b2f1f9 --- /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 +# + +# 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 () { + if (!$head) { print "$lib:\n"; $head = 1; } + chomp($_); + print " $_\n"; + } + close SYMS; +}