1*7304104dSAndroid Build Coastguard Worker#! /usr/bin/env bash 2*7304104dSAndroid Build Coastguard Worker 3*7304104dSAndroid Build Coastguard Workerif [ "x$1" = "x-v" ]; then 4*7304104dSAndroid Build Coastguard Worker verbose=yes 5*7304104dSAndroid Build Coastguard Workerelse 6*7304104dSAndroid Build Coastguard Worker verbose=no 7*7304104dSAndroid Build Coastguard Workerfi 8*7304104dSAndroid Build Coastguard Worker 9*7304104dSAndroid Build Coastguard Workercd .. 10*7304104dSAndroid Build Coastguard Worker 11*7304104dSAndroid Build Coastguard Workerfor d in lib libasm libdw libdwfl libebl libelf backends src debuginfod; do 12*7304104dSAndroid Build Coastguard Worker tmp=$d-data 13*7304104dSAndroid Build Coastguard Worker cd $d 14*7304104dSAndroid Build Coastguard Worker unused=0 15*7304104dSAndroid Build Coastguard Worker unused_files= 16*7304104dSAndroid Build Coastguard Worker for f in *.gcno; do 17*7304104dSAndroid Build Coastguard Worker base="$(basename $f .gcno)" 18*7304104dSAndroid Build Coastguard Worker if [ -f "$base.c" ]; then fc="$base.c"; else fc="$base.cxx"; fi 19*7304104dSAndroid Build Coastguard Worker gcda="$base.gcda" 20*7304104dSAndroid Build Coastguard Worker if [ -f "$gcda" ]; then 21*7304104dSAndroid Build Coastguard Worker gcov -n -a "$fc" | 22*7304104dSAndroid Build Coastguard Worker gawk "/$d.$fc/ { getline; co=gensub(/.*:(.*)% .*/, \"\\\\1\", \"g\"); co=co+0.0; li=\$4+0; printf \"%-35s %6.2f %5d\n\", \"$d/$fc\", co, li } " >> $tmp 23*7304104dSAndroid Build Coastguard Worker else 24*7304104dSAndroid Build Coastguard Worker unused=$(($unused + 1)) 25*7304104dSAndroid Build Coastguard Worker unused_files="$unused_files $fc" 26*7304104dSAndroid Build Coastguard Worker fi 27*7304104dSAndroid Build Coastguard Worker done 28*7304104dSAndroid Build Coastguard Worker if [ -f $tmp ]; then 29*7304104dSAndroid Build Coastguard Worker gawk "{ copct=\$2; co=(\$3*copct)/100; toco+=(co+0); toli += (\$3+0); } END { printf \"%-12s %6.2f%% covered unused files: %3d\n\", \"$d\", (toco*100)/toli, \"$unused\" }" $tmp 30*7304104dSAndroid Build Coastguard Worker rm -f $tmp 31*7304104dSAndroid Build Coastguard Worker else 32*7304104dSAndroid Build Coastguard Worker printf "%-12s 0.00%% covered unused files: %3d\n" "$d" $unused 33*7304104dSAndroid Build Coastguard Worker fi 34*7304104dSAndroid Build Coastguard Worker if [ $verbose = yes ]; then 35*7304104dSAndroid Build Coastguard Worker for f in $unused_files; do 36*7304104dSAndroid Build Coastguard Worker printf '%-42s%s\n' '' $f 37*7304104dSAndroid Build Coastguard Worker done 38*7304104dSAndroid Build Coastguard Worker fi 39*7304104dSAndroid Build Coastguard Worker cd .. 40*7304104dSAndroid Build Coastguard Workerdone 41