-
Notifications
You must be signed in to change notification settings - Fork 31
/
dupsyms
38 lines (34 loc) · 656 Bytes
/
dupsyms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/local/bin/perl -w
use File::Find;
use Cwd;
my $root = getcwd();
find(sub {
if (/\.so$/)
{
do_syms($File::Find::name);
}
},'.');
sub do_syms
{
my $path = shift;
open(NM,"nm -DPp $root/$path|") || die "Cannot open pipe:$!";
while (<NM>)
{
my ($sym,$kind) = /^(\w+)\s+(\S)/;
next if ($kind =~ /^[UBAw]$/ || $sym =~ /^_(init|fini)$/);
$def{$sym}{$path} = $kind;
}
}
foreach my $sym (sort keys %def)
{
my @where = keys %{$def{$sym}};
if (@where > 1)
{
print "$sym :\n";
foreach my $path (sort @where)
{
print " $def{$sym}{$path} $path\n";
}
print "\n";
}
}