#!/usr/bin/perl -w # # Program: findsym.pl # # Synopsis: Generate a list of the libraries in which a symbol is defined or # referenced. # # Syntax: findsym.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; }