use strict;
use warnings;
+sub gitmark($) {
+ my($s)=@_;
+ return "" if $s!~m{^(... )([^/]*/+[^/]*)/};
+ my($pfx,$dir)=($1,$2);
+ local *GIT;
+ $dir.="/build/gdbgit";
+ return "" if !-d $dir;
+ open GIT,"cd '$dir';git log --format=%H HEAD^..HEAD|" or return "";
+ my $git=do { local $/; <GIT>; };
+ close GIT;
+ chomp $git;
+ return "${pfx}GIT commit $git\n" if $git=~/^[0-9a-f]{40}$/;
+ return "";
+}
+
my @ignore=(
qr{^.PASS: }o,
qr{^.KPASS: }o,
qr{^.FAIL: \S+\.exp: valgrind check \d+\n$}o,
qr{^.KFAIL: gdb.threads/watchthreads2.exp: gdb can drop watchpoints in multithreaded app \(PRMS: gdb/10116\)\n$}o,
qr{^.FAIL: gdb.base/info-os.exp: .*\n$}o,
+qr{^.FAIL: gdb.threads/multiple-step-overs.exp: .*\n$}o,
+qr{^.FAIL: gdb.base/random-signal.exp: stop with control-c \Q(timeout)\E\n$}o,
);
my $ignore=shift @ignore;
$ignore=qr/$ignore|$_/ for @ignore;
$lastfile=$_;
}
if (/^--- /) {
- $lastfile=$_;
+ $lastfile=$_.gitmark($_);
next;
}
if (/^\Q+++\E /) {
- $lastfile.=$_;
+ $lastfile.=$_.gitmark($_);
next;
}
$this->{"buffer"}.=$_;