# build with generating debugging information # nm -olg *.o | perl unused-globals.pl | sort -k1.40 # wordlist.o:0000000000000590 T do_wordlist_crack /home/user/john/john/master/src/wordlist.c:161 # wordlist.o: U error /home/user/john/john/master/src/wordlist.c:80 use strict; use warnings; my (%used, %defined); while (<>) { chomp; my ($obj, $type, $symbol, $where) = /^(.*?):[0-9A-Fa-f]*\s+(\S) (\S+)\s?(.*)/; if ($type eq 'U') { $used{$symbol}++; } else { $where =~ s!.*/!!; $defined{$symbol} = $obj . ($where ? " <- $where" : ""); } } # unused for (sort keys %defined) { if (!$used{$_}) { printf "%-39s %s\n", $_, $defined{$_}; } } # #undefined # for (sort keys %used) { # if (!$defined{$_}) { # printf "%-39s %s\n", $_, $used{$_}; # } # }