nt9856x/build/gcov.sh
2023-03-28 15:07:53 +08:00

72 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
if [ -z ${LINUX_BUILD_TOP} ]; then
echo "source build/envsetup.sh is required."
exit 1
fi
MODEL=`echo $NVT_PRJCFG_MODEL_CFG | awk -F'/' '{print $(NF-1)}'`;
function make_gcov() {
cd ${LINUX_BUILD_TOP}
# modify kernel config to support gcov
make linux_config_gcov
if [ $? -ne 0 ]; then
exit -1;
fi;
# make all
make all
if [ $? -ne 0 ]; then
exit -1;
fi;
# etc symbolic created after make all
# remove old export
sed -i '/GCOV_PREFIX/d' ${ROOTFS_DIR}/rootfs/etc/profile
# always create new
echo "export GCOV_PREFIX=/mnt/sd/gcov"${HOME} >> ${ROOTFS_DIR}/rootfs/etc/profile
echo "export GCOV_PREFIX_STRIP=2" >> ${ROOTFS_DIR}/rootfs/etc/profile
echo -e "alias gcov_tar=\"cp -rf /sys/kernel/debug/gcov/home \${GCOV_PREFIX}/../../; cd /mnt/sd; tar -jcf gcov.tar.bz2 gcov; sync\"" >> ${ROOTFS_DIR}/rootfs/etc/profile
# make rootfs and pack again
make rootfs pack
./build/rename_gcno.sh
}
function untar() {
cd ${LINUX_BUILD_TOP}
tar -jxvf gcov.tar.bz2;chmod -R 755 gcov/
cp -avf gcov${LINUX_BUILD_TOP} ${LINUX_BUILD_TOP}/../
}
function gen_report_user() {
rm -rf report_u
lcov -c -d $1 -t ${MODEL} -o ${MODEL}.user.info --gcov-tool ${CROSS_COMPILE}gcov
genhtml -o report_u ${MODEL}.user.info
}
function gen_report_kernel() {
rm -rf report_k
lcov -c -d $1 -b ${KERNELDIR} -t ${MODEL} -o ${MODEL}.kernel.info --gcov-tool ${CROSS_COMPILE}gcov
genhtml -o report_k ${MODEL}.kernel.info
}
case $1 in
make)
make_gcov
;;
untar)
untar
;;
genu)
if [ -z $2 ]; then
echo "usage: gcov genu [dir_to_source]"
exit 1
fi
gen_report_user $2
;;
genk)
if [ -z $2 ]; then
echo "usage: gcov genk [dir_to_source]"
exit 1
fi
gen_report_kernel $2
;;
esac