#! /usr/bin/perl use strict; use warnings; my $last; my $lastfile; while (<>) { next if /^diff /; my($thisname)=m{^.(?:Running (?:.*/)?|[A-Z]+: )(gdb[.]\w+/\S+[.]exp)(?: \Q...\E|: .*)$}; my $this; if (!$thisname || ($last && $thisname eq $last->{"name"})) { #if (!$thisname) { print "X: !thisname\n"; } else { print "X: \"".$last->{"name"}."\" -> \"$thisname\"\n"; } $this=$last; } else { #print "X: new \"$thisname\"\n"; $last=$this={"name"=>$thisname,"+Running"=>(/^[+]/||0)}; } next if /^@@ .* @@\n$/; if ($this->{"print"}) { print; next; } if (/^--- /) { $lastfile=$_; next; } if (/^\Q+++\E /) { $lastfile.=$_; next; } $this->{"buffer"}.=$_; next if /^ /; next if /^[+]Running / && $thisname; next if /^[+]PASS: /; next if /^[+]KPASS: /; next if /^-PASS: /; next if /^-FAIL: /; next if /^-KFAIL: /; next if /^-XFAIL: /; next if /^[+]FAIL: / && $this->{"+Running"}; next if /^[+]KFAIL: / && $this->{"+Running"}; next if /^[+]XFAIL: / && $this->{"+Running"}; next if /^[+]UNTESTED: / && $this->{"+Running"}; next if /^[+]gdb compile failed, / && $this->{"+Running"}; next if /^[+].*: Error: bad register name `%.*'\n$/ && $this->{"+Running"}; next if /^[+].*: Error: `.*' is only supported in 64-bit mode\n$/ && $this->{"+Running"}; $this->{"print"}=1; print $lastfile||""; $lastfile=undef(); print "\n#".$this->{"name"}."\n"; print $this->{"buffer"}; $this->{"buffer"}=undef(); next; }