| #! /bin/sh |
| |
| # (must be called from the valgrind top source dir). |
| # |
| # Make local links in the gdbserver_tests directory |
| # so that tests needing gdb can be disabled if |
| # a tool old version of gdb is provided or if no gdb is |
| # provided. |
| # |
| # The vgdb link is needed either for gdb tests |
| # or for standalone vgdb tests. |
| |
| if [ -x "$1" ] |
| then |
| ln -f -s "$1" gdbserver_tests/gdb |
| # Try to extract the gdb version. |
| VERSIONLINE=`gdbserver_tests/gdb --version | head -n 1` |
| VERSION=`echo $VERSIONLINE | |
| sed -e 's/[^0-9\.]//g' -e 's/\./ /g'` |
| |
| # We need at least a 6.5 version to use the Valgrind gdbserver. |
| # However, the tests are only supported/maintained for gdb >= 7 |
| VERSIONOK=`echo $VERSION | |
| awk '{ if ($1 >= 7) print "version ok"}'` |
| if [ "$VERSIONOK" = "" ] |
| then |
| echo "gdbserver tests suppressed as $1 version is < 6.5: " $VERSIONLINE |
| rm -f gdbserver_tests/gdb |
| fi |
| |
| # We need at least a 7.1 version to run the 'pic' executable test |
| # (with 7.0, it fails on many platforms) |
| # On ARM, we need at least 7.1 to run the 'next/step/...' tests. |
| # (gdb 7.0 has bugs in the 'guess next pc' heuristic in thumb mode). |
| VERSIONOK=`echo $VERSION | |
| awk '{ if ( ($1 >= 8) || (($1 == 7) && ($2 >= 1)) ) print "version ok"}'` |
| # By default, consider step/next/... tests are ok. We will remove for ARM if needed. |
| touch gdbserver_tests/gdb.step |
| if [ "$VERSIONOK" = "" ] |
| then |
| echo "gdbserver 'pic' tests suppressed as $1 version is < 7.1: " $VERSIONLINE |
| rm -f gdbserver_tests/gdb.pic |
| if tests/arch_test arm |
| then |
| echo "gdbserver 'step/next' tests suppressed as arm $1 version is < 7.1: " $VERSIONLINE |
| rm -f gdbserver_tests/gdb.step |
| fi |
| else |
| touch gdbserver_tests/gdb.pic |
| fi |
| |
| # We need at least a 7.2 version for gdb tests using eval command |
| VERSIONOK=`echo $VERSION | |
| awk '{ if ( ($1 >= 8) || (($1 == 7) && ($2 >= 2)) ) print "version ok"}'` |
| if [ "$VERSIONOK" = "" ] |
| then |
| echo "gdbserver eval tests suppressed as $1 version is < 7.2: " $VERSIONLINE |
| rm -f gdbserver_tests/gdb.eval |
| else |
| touch gdbserver_tests/gdb.eval |
| fi |
| else |
| echo "gdbserver gdb tests suppressed as $1 is not executable" |
| fi |
| |
| ln -f -s ../coregrind/vgdb gdbserver_tests/vgdb |
| |
| # if ptrace not implemented in vgdb or OS restricts the initial attach, |
| # some tests would block for a loooonnnng time. |
| if gdbserver_tests/vgdb --help 2>&1 | |
| grep -e 'ptrace invoker not implemented' \ |
| -e 'kernel restricts ptrace invoker' > /dev/null |
| then |
| rm -f gdbserver_tests/vgdb.ptraceinvoker |
| else |
| touch gdbserver_tests/vgdb.ptraceinvoker |
| fi |
| |
| # cleanup the possibly big garbage previously collected output |
| rm -f gdbserver_tests/garbage.filtered.out |