coredump: Exclude special areas

Fujitsu: POSTK_DEBUG_TEMP_FIX_38
Refs: #1005
Change-Id: I8934d2aecf06a09469afe131347e42b48b6f67f6
This commit is contained in:
Ken Sato
2018-08-09 16:02:46 +09:00
committed by Masamichi Takagi
parent 2910818f06
commit a269d96978
8 changed files with 327 additions and 9 deletions

112
test/issues/1005/C1005.sh Normal file
View File

@ -0,0 +1,112 @@
#!/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 ""