1*1f5207b7SJohn Levon#!/usr/bin/perl 2*1f5207b7SJohn Levon 3*1f5207b7SJohn Levonuse strict; 4*1f5207b7SJohn Levon 5*1f5207b7SJohn Levonsub help() 6*1f5207b7SJohn Levon{ 7*1f5207b7SJohn Levon print "usage: $0 [-r]\n"; 8*1f5207b7SJohn Levon print "Counts the number of errors of each type.\n"; 9*1f5207b7SJohn Levon print "-r means down to the nearest 10.\n"; 10*1f5207b7SJohn Levon exit 1; 11*1f5207b7SJohn Levon} 12*1f5207b7SJohn Levon 13*1f5207b7SJohn Levonmy $round; 14*1f5207b7SJohn Levonmy $arg = shift; 15*1f5207b7SJohn Levonif ($arg =~ /-h/) { 16*1f5207b7SJohn Levon help(); 17*1f5207b7SJohn Levon} elsif ($arg =~ /-r/) { 18*1f5207b7SJohn Levon $round = 1; 19*1f5207b7SJohn Levon} 20*1f5207b7SJohn Levon 21*1f5207b7SJohn Levonmy %msgs; 22*1f5207b7SJohn Levon 23*1f5207b7SJohn Levonsub add_msg($) 24*1f5207b7SJohn Levon{ 25*1f5207b7SJohn Levon my $msg = shift; 26*1f5207b7SJohn Levon 27*1f5207b7SJohn Levon if (defined $msgs{$msg}) { 28*1f5207b7SJohn Levon $msgs{$msg}++; 29*1f5207b7SJohn Levon } else { 30*1f5207b7SJohn Levon $msgs{$msg} = 1; 31*1f5207b7SJohn Levon } 32*1f5207b7SJohn Levon} 33*1f5207b7SJohn Levon 34*1f5207b7SJohn Levonwhile (<>) { 35*1f5207b7SJohn Levon s/^.*?:\d+(|:\d+:) .*? //; 36*1f5207b7SJohn Levon s/[us](16|32|64)(min|max)//g; 37*1f5207b7SJohn Levon s/0x\w+//g; 38*1f5207b7SJohn Levon s/[01234567890]//g; 39*1f5207b7SJohn Levon if ($_ =~ /can't/) { 40*1f5207b7SJohn Levon s/(.*can't.*').*?('.*)/$1 $2/; 41*1f5207b7SJohn Levon s/(.*?)'.*?'(.*can't.*)/$1 $2/; 42*1f5207b7SJohn Levon } elsif ($_ =~ /don't/) { 43*1f5207b7SJohn Levon s/(.*don't.*').*?('.*)/$1 $2/; 44*1f5207b7SJohn Levon } else { 45*1f5207b7SJohn Levon s/'.*?'/''/g; 46*1f5207b7SJohn Levon } 47*1f5207b7SJohn Levon s/,//g; 48*1f5207b7SJohn Levon s/\(\w+ returns null\)/(... returns null)/; 49*1f5207b7SJohn Levon s/dma on the stack \(.*?\)/dma on the stack (...)/; 50*1f5207b7SJohn Levon s/possible ERR_PTR '' to .*/possible ERR_PTR '' to .../; 51*1f5207b7SJohn Levon s/inconsistent returns ([^ ]+?) locked \(\)/inconsistent returns ... locked ()/; 52*1f5207b7SJohn Levon s/(.*) [^ ]* (too large for) [^ ]+ (.*)/$1 $2 $3/; 53*1f5207b7SJohn Levon 54*1f5207b7SJohn Levon add_msg($_); 55*1f5207b7SJohn Levon} 56*1f5207b7SJohn Levon 57*1f5207b7SJohn Levonforeach my $key (sort { $msgs{$b} <=> $msgs{$a} } keys %msgs) { 58*1f5207b7SJohn Levon my $count = $msgs{$key}; 59*1f5207b7SJohn Levon 60*1f5207b7SJohn Levon if ($round) { 61*1f5207b7SJohn Levon $count = $msgs{$key} - $msgs{$key} % 10; 62*1f5207b7SJohn Levon } 63*1f5207b7SJohn Levon print "$count $key"; 64*1f5207b7SJohn Levon} 65