The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl -w

use Config;

$nm_opt = "";
$nm_opt = "-g" if ($Config{'osname'} eq 'sunos');
$nm_opt = "-px" if ($Config{'osname'} eq 'solaris');

chomp(@so_files = `find blib -name '*.so' -print`); 

%sym = ();

foreach $module (@so_files)
 {
  my ($leaf) = ($module =~ m#/([^/]+)\.so$#);
  foreach (`nm $nm_opt $module`)
   {
    if (/^(0x)?[0-9a-f]{8}\s+([A-Z])\s+_?(.*)$/)
     {
      my ($kind,$name) = ($2,$3);
      if ($kind ne 'U')
       {
        $sym{$name} = [] unless (exists $sym{$name});
        push(@{$sym{$name}},$leaf,$kind);
       }
     }
   }
 }

foreach $name (sort keys %sym)
 {
  my @def = @{$sym{$name}};
  if (@def != 2)
   {
    print "$name defined ",join(',',@def),"\n";
   }
 }