From 2fee235bf35fbcb0186835434310cb6bf1bfd0c8 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Thu, 23 Mar 2006 23:04:50 +0000 Subject: [PATCH] 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 --- utils/findsym.pl | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 utils/findsym.pl 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; +} -- 2.34.1