| #! /bin/sh |
| |
| # This filter should be applied to *every* stderr result. It removes |
| # Valgrind startup stuff and pid numbers. |
| # |
| # Nb: The GNU and BSD implementations of 'sed' are quite different, so |
| # anything remotely complicated (e.g. "\(a\|b\)" alternatives) can't be |
| # easily done. Use Perl instead for any such cases. |
| |
| dir=`dirname $0` |
| |
| # Remove ==pid== and --pid-- and **pid** strings |
| perl -p -e 's/(==|--|\*\*)[0-9]{1,7}\1 //' | |
| |
| # Do NOT remove debug level output, i.e. lines beginning with --pid: |
| # Doing so would also remove asserts from the address space manager |
| # and we always to see those. |
| |
| # Remove "Command: line". (If wrapping occurs, it won't remove the |
| # subsequent lines...) |
| sed "/^Command: .*$/d" | |
| |
| # Remove "WARNING: assuming toc 0x.." strings |
| sed "/^WARNING: assuming toc 0x*/d" | |
| |
| # Remove "Using Valgrind-$VERSION and LibVEX..." line. |
| # Tools have to filter their own line themselves. |
| sed "/^Using Valgrind-.* and LibVEX; rerun with -h for copyright info/ d" | |
| |
| # Anonymise line numbers in vg_replace_malloc.c, remove dirname if present |
| perl -p -e "s/(m_replacemalloc\/)?vg_replace_malloc.c:\d+\)/vg_replace_malloc.c:...\)/" | |
| |
| # Likewise for valgrind.h |
| perl -p -e "s/valgrind\.h:\d+\)/valgrind\.h:...\)/" | |
| |
| # Hide suppressed error counts |
| sed "s/^\(ERROR SUMMARY[^(]*(suppressed: \)[0-9]*\( from \)[0-9]*)$/\10\20)/" | |
| |
| # Reduce some libc incompatibility |
| $dir/filter_libc | |
| |
| # Remove line info out of order warnings |
| sed "/warning: line info addresses out of order/d" | |
| |
| # Older bash versions print abnormal termination messages on the stderr |
| # of the bash process. Newer bash versions redirect such messages properly. |
| # Suppress any redirected abnormal termination messages. You can find the |
| # complete list of messages in the bash source file siglist.c. |
| perl -n -e 'print if !/^(Segmentation fault|Alarm clock|Aborted|Bus error|Killed)( \(core dumped\))?$/' | |
| |
| # Similar as above, but for ksh on Solaris/illumos. |
| perl -n -e 'print if !/^(Memory fault|Killed) $/' | |
| |
| # Translate intercepted glibc functions back to their canonical name |
| perl -p -e "s/: memcpy\@\@?GLIBC_[.1-9]+ \(vg_replace_strmem.c:.*?\)/: memcpy \(vg_replace_strmem.c:...\)/" | |
| sed -e "s/: \(__GI_\|__\|\)\(memcmp\|memcpy\|strcpy\|strncpy\|strchr\|strrchr\)\(\|_sse4_1\|_sse42\|_sse2_unaligned\|_sse2\) (vg_replace_strmem.c:/: \2 (vg_replace_strmem.c:/" | |
| |
| # Remove any ": dumping core" message as the user might have a |
| # limit set that prevents the core dump |
| sed "s/\(signal [0-9]* (SIG[A-Z]*)\): dumping core/\1/" | |
| |
| # Remove the size in "The main thread stack size..." message. |
| sed "s/The main thread stack size used in this run was [0-9]*/The main thread stack size used in this run was .../" | |
| |
| # Remove the size in "10482464 bytes below stack pointer" message. |
| sed "s/[0-9][0-9]* bytes below stack pointer/.... bytes below stack pointer/" | |
| |
| # Suppress warnings from incompatible debug info |
| sed '/warning: the debug information found in "[^"]*" does not match/d' | |
| |
| # Suppress warnings from Dwarf reader |
| sed '/warning: evaluate_Dwarf3_Expr: unhandled DW_OP_/d' |