4 use warnings FATAL
=> qw
/all/;
14 $event = "cycles" unless defined $event;
16 die "$0 <options> irdump script" unless @ARGV == 2;
21 my$addrs = read_irdump
($irdump);
22 count_hits
($addrs, $script);
23 annotate
($irdump, $addrs);
29 open IRDUMP
, $file or die "Error opening irdump $file: $!";
31 if (m/^\s*0x0*([a-f0-9]+):/) {
32 $addrs{$1} = { count
=> 0 };
35 close IRDUMP
or die "Error closing irdump $file: $!";
40 my($addrs, $file) = @_;
42 open SCRIPT
, $file or die "Error opening script $file: $!";
45 if (defined $cur_event) {
46 if ($cur_event eq $event) {
47 if (m/^\s+0*([0-9a-fA-F]+)\s+(.*?)\s+\(([^\(\)]*)\)\s*$/) {
48 if (defined $addrs->{$1}) {
49 $addrs->{$1}{count
} += 1;
56 } elsif (m/^\s*(\S+)\s+(\d+)(?:\s+\[\d+\])?\s+(?:(\d+\.\d+):)?\s*(?:\d+\s*)?([-\w]+)(?::p+)?:\s*$/) {
60 close SCRIPT
or die "Error closing script $file: $!";
64 my($file, $addrs) = @_;
67 open IRDUMP
, $file or die "Error opening irdump $file: $!";
69 if (m/^\s*0x([a-f0-9]+):/) {
70 if (defined $addrs->{$1}) {
71 my$c = $addrs->{$1}{count
};
75 $_ = sprintf "Q%6d %s", $c, $_;
81 close IRDUMP
or die "Error closing irdump $file: $!";
83 print "Total: $total\n";