Fujitsu: POSTK_DEBUG_TEMP_FIX_38 Refs: #1005 Change-Id: I8934d2aecf06a09469afe131347e42b48b6f67f6
113 lines
2.8 KiB
Bash
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 ""
|