Files
mckernel/test/issues/1005/C1005.sh
Ken Sato a269d96978 coredump: Exclude special areas
Fujitsu: POSTK_DEBUG_TEMP_FIX_38
Refs: #1005
Change-Id: I8934d2aecf06a09469afe131347e42b48b6f67f6
2018-09-20 01:48:17 +00:00

113 lines
2.8 KiB
Bash

#!/bin/sh
USELTP=0
USEOSTEST=0
. ../../common.sh
sudo /bin/sh ${OSTESTDIR}/util/insmod_test_drv.sh
ulimit_c_bk=`ulimit -Sc`
# set ulimit -c unlimited to dump core
ulimit -Sc unlimited
$BINDIR/mcexec ./devmap_and_segv | tee ./maps.txt
# restore ulimit -c
ulimit -c ${ulimit_c_bk}
sudo /bin/sh ${OSTESTDIR}/util/rmmod_test_drv.sh
tid=001
echo "*** CT_$tid start *******************************"
echo "** check file type by readelf"
readelf -h ./core | grep -e "Type:.*CORE"
if [ $? == 0 ]; then
echo "*** CT_$tid PASSED ******************************"
else
echo "*** CT_$tid FAILED ******************************"
fi
echo ""
# check by gdb
VDSO_ADDR=`grep "\[vdso\]" ./maps.txt | cut -f 1 -d "-"`
DEVMAP_ADDR=`grep "mmap_dev2$" ./maps.txt | cut -f 1 -d "-"`
GDB_OUT="./gdb_out.txt"
expect -c "
set timeout 3
log_file -noappend ${GDB_OUT}
spawn gdb --quiet -c ./core ./devmap_and_segv
# check vdso addr
expect \"(gdb)\"
send \"x 0x${VDSO_ADDR}\n\"
#check devmap addr
expect \"(gdb)\"
send \"x 0x${DEVMAP_ADDR}\n\"
#check backtrace
expect \"(gdb)\"
send \"bt\n\"
#check info registers
expect \"(gdb)\"
send \"info registers\n\"
# quit gdb_test
expect \"(gdb)\"
send \"quit\n\"
log_file
interact
" > /dev/null
tid=002
echo "*** CT_$tid start *******************************"
echo "** check that core contains vdso data"
grep -A 1 "(gdb) x 0x${VDSO_ADDR}" ${GDB_OUT}
grep -A 1 "(gdb) x 0x${VDSO_ADDR}" ${GDB_OUT} | tail -1 | grep -q "0x${VDSO_ADDR}:\s*0x[0-9a-f]\+"
if [ $? == 0 ]; then
echo "*** CT_$tid PASSED ******************************"
else
echo "*** CT_$tid FAILED ******************************"
fi
echo ""
tid=003
echo "*** CT_$tid start *******************************"
echo "** check that core dose NOT contain devmap data"
grep -A 1 "(gdb) x 0x${DEVMAP_ADDR}" ${GDB_OUT}
grep -A 1 "(gdb) x 0x${DEVMAP_ADDR}" ${GDB_OUT} | tail -1 | grep -q "0x${VDSO_ADDR}:\s*0x[0-9a-f]\+"
if [ $? == 1 ]; then
echo "*** CT_$tid PASSED ******************************"
else
echo "*** CT_$tid FAILED ******************************"
fi
echo ""
tid=004
echo "*** CT_$tid start *******************************"
echo "** check that core can be backtraced"
grep -A 1 "(gdb) bt" ${GDB_OUT}
grep -A 1 "(gdb) bt" ${GDB_OUT} | tail -1 | grep -q "^#0.*in main"
if [ $? == 0 ]; then
echo "*** CT_$tid PASSED ******************************"
else
echo "*** CT_$tid FAILED ******************************"
fi
echo ""
tid=005
echo "*** CT_$tid start *******************************"
echo "** check that core can be got info registers"
grep -A 30 "(gdb) info registers" ${GDB_OUT}
grep -A 30 "(gdb) info registers" ${GDB_OUT} | grep -q "^rip\s*0x.*main"
if [ $? == 0 ]; then
echo "*** CT_$tid PASSED ******************************"
else
echo "*** CT_$tid FAILED ******************************"
fi
echo ""