Julian Seward d1e0bf1d9e GDB server: fix tests following recent commits.
Fixes #276987.  (Philippe Waroquiers, philippe.waroquiers@skynet.be)

* make_local_links
  - disable gdb tests if gdb version < 7
  - disable pic tests if gdb version < 7.1
* nlfork_chain test
  - reduce chain from 20 to 15 to avoid ENOMEM
    on small ARM systems
* main_pic.c
  - put break at line 11 rather than main entry, as ARM gdb
     does not properly show main args till it has started executing.
* passsigalrm.c
  - do not setsa.sa_restorer (obsolete on linux, unknown on darwin)
* mcvabits.vgtest
  - make prereq consistent with other tests
* filter_gdb
  - upgraded filter to new linenr in clean_after_fork.c



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11853
2011-07-04 22:00:41 +00:00

81 lines
2.8 KiB
Bash
Executable File

#! /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