1b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#! /bin/sh
2b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# filter the output of gdb.
4b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
5b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovdir=`dirname $0`
6b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
7b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov$dir/filter_stderr                                                  |
8b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
9b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# Anonymise addresses
10b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov$dir/../tests/filter_addresses                                      |
11b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
12b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# memcheck stuff
13b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov$dir/filter_memcheck_monitor                                        |
14b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
15b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
16b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# Anonymise or remove :
17b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete the initial lines between the launch of vgdb and the
18b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#         output of the echo command telling it is launched.
19b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#         This removes a whole lot of uninteresting lines varying
20b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#         with OS/glibc/gdb dep
21b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       initial tty control character sent by gdb 7.0
22b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       remove missing debuginfos
23b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       vgdb message
24b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       pid numbers
25b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       Thread numbers
26b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete thread switches
27b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       info threads output (e.g. which thread is running and syscall)
28b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete Reading symbols file lines
29b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete Loaded symbols file lines
30b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete language switch messages.
31b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       remove gdb prompts.
32b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       remove gdb continuation prompts.
33b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       remove gdb done prompts.
34b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       a 'general' system calls stack trace part
35b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       a more specialised system call select stack trace part
36b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#             (on 32 bits, we have an int_80, on 64 bits, directly select)
37b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       and yet another (gdb 7.0 way) to get a system call
38b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       and yet another (gdb 7.0 arm way) to get a system call
39b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       and cleanup some lines for a system call (on ubuntu 10 64 bits)
40b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#           (pay attention : there are tab characters there in)
41b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#           + yet another way to get a select system call
42b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       which registers can't be modified
43b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       special transform for arm/ppc watchpoints which have an additional address
44b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#              at the beginning
45b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       SIGFPE backtrace is varying so much that we just remove all lines
46b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       after the signal trapping using an expr in this sed, followed by another sed.
47b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       transform info thread of 7.3 into the layout of 7.2 and before.
48b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete lines telling that some memory can't be accessed: this is
49b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#         a.o. produced by gdb 7.2 on arm (same with standard gdbserver)
50b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#       delete empty lines (the last line (only made of prompts) sometimes
51b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#           finishes with a new line, sometimes not ???).
52b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovsed -e '/Remote debugging using/,/vgdb launched process attached/d'                                   \
53b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/^\[?1034hReading symbols/Reading symbols/'                                                \
54b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^Missing separate debuginfo/d'                                                               \
55b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^Try: zypper install -C/d'                                                                   \
56b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(relaying data between gdb and process \)[0-9][0-9]*/\1..../'                              \
57b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/pid [0-9][0-9]*/pid ..../g'                                                                 \
58b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/Thread [0-9][0-9]*/Thread ..../g'                                                           \
59b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/\[Switching to Thread ....\]/d'                                                              \
60b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(\[Switching to thread [1234] (Thread ....)\]\)#0/\1\n#0/'                                 \
61b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/^\([ \* ] [0-9] Thread .... (tid [0-9] VgTs_WaitSys)  0x........ in\).*$/\1 syscall .../'   \
62b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/#[0-9]\(  0x........ in sleeper_or_burner\)/#.\1/'                                          \
63b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^Reading symbols from .*\.\.\.done\./d'                                                      \
64b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^Loaded symbols for .*$/d'                                                                   \
65b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^Current language.*/d'                                                                       \
66b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^The current source language is.*/d'                                                         \
67b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/(gdb) //g'                                                                                  \
68b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/^>[> ]*//'                                                                                  \
69b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^done\.$/d'                                                                                  \
70b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in _dl_sysinfo_int80 () from \/lib\/ld-linux.so.*/in syscall .../'                          \
71b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in kill ().*$/in syscall .../'                                                              \
72b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in .*kill ().*$/in syscall .../'                                                            \
73b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in _dl_sysinfo_int80 ()/in syscall .../'                                                    \
74b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^   from \/lib\/ld-linux.so.*$/d'                                                            \
75b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(0x........\) in ?? () from \/lib.*$/\1 in syscall .../'                                   \
76b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(0x........\) in ?? ()$/\1 in syscall .../'                                                \
77b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in \(.__\)\{0,1\}select () from \/.*$/in syscall .../'                                      \
78b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^   from \/lib\/libc.so.*$/d'                                                                \
79b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^   from \/lib64\/libc.so.*$/d'                                                              \
80b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^   from \/lib64\/.*\/libc.so.*$/d'                                                         \
81b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in select ()$/in syscall .../'                                                              \
82b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in \.__select ()$/in syscall .../'                                                          \
83b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/in select () at \.\.\/sysdeps\/unix\/syscall-template\.S.*$/in syscall .../'                \
84b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^[ 	]*at \.\.\/sysdeps\/unix\/syscall-template\.S/d'                                      \
85b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^[ 	]*in \.\.\/sysdeps\/unix\/syscall-template\.S/d'                                      \
86b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^[1-9][0-9]*[ 	]*\.\.\/sysdeps\/unix\/syscall-template\.S/d'                                 \
87b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^[1-9][0-9]*[ 	]in *\.\.\/sysdeps\/unix\/syscall-template\.S/d'                              \
88b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(Could not write register \)".*"/\1 "xxx"/'                                                \
89b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(ERROR changing register \).*$/\1 xxx regno y/'                                            \
90b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/0x........ in \(main (argc=1, argv=0x........) at watchpoints.c:[24][3689]\)/\1/'           \
91b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/0x........ in \(main () at clean_after_fork.c:34\)/\1/'                                     \
92b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/\(^.*signal SIGFPE.*$\)/\1\nafter trap SIGFPE/'                                             \
93b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/Id   Target Id         Frame/d'                                                              \
94b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/^\([ \*] [1234] \) *Thread /\1Thread /'                                                     \
95b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e 's/VgTs_WaitSys) 0x/VgTs_WaitSys)  0x/'                                                        \
96b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/Cannot access memory at address 0x......../d'                                                \
97b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    -e '/^$/d'                                                                                        |
98b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
99b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# remove all the lines telling where the SIGFPE was trapped.
100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovsed -e '/after trap SIGFPE/,/after continue SIGFPE/d'                                                 |
101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# join together two lines that gdb 7.1 splits in two (???)
103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov# (in a separate sed, as the below influences the behaviour of the other expressions)
104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovsed    -e :a -e '$!N;s/\n    at sleepers.c:39/ at sleepers.c:39/;ta' -e 'P;D' 
105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
106