valgrind_test_cleaner.pl 738 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my ($block, $blockOK);
  5. sub endBlock(_) {
  6. return unless $block;
  7. if ($blockOK) {
  8. print @$block;
  9. }
  10. undef $block;
  11. undef $blockOK;
  12. }
  13. sub startBlock(_) {
  14. $block = [@_];
  15. }
  16. sub addToBlock(_) {
  17. my ($line) = @_;
  18. push @$block, $line;
  19. return unless $line =~ /^==\d+==\s+(at|by) 0x[0-9A-F]+: (.*) \(.+:\d+\)$/;
  20. $_ = $2;
  21. return $blockOK = 1 if /^isc::/;
  22. return $blockOK = 1 if /^asiolink:/;
  23. return if /^main \(/;
  24. return if /^testing::/;
  25. return if /^\(anonymous namespace\)::/;
  26. $blockOK = 1;
  27. }
  28. while(<>) {
  29. if (/^==\d+==\s*$/) {
  30. print;
  31. endBlock;
  32. } elsif (/^==\d+==\s+\d+bytes.*lost in loss record/) {
  33. startBlock;
  34. } elsif ($block) {
  35. addToBlock;
  36. } else {
  37. print;
  38. }
  39. }
  40. endBlock;