diff options
-rwxr-xr-x | scripts/bloatcheck | 87 |
1 files changed, 45 insertions, 42 deletions
diff --git a/scripts/bloatcheck b/scripts/bloatcheck index a5a28f1c..03606b2b 100755 --- a/scripts/bloatcheck +++ b/scripts/bloatcheck @@ -14,47 +14,50 @@ addline() STUFF="$(printf "%s\n%s" "$STUFF" "$NEXT")" } +do_bloatcheck() +{ + LASTNAME= + DELTA=0 + TOTAL=0 + OLD=0 + NEW=0 + STUFF= + + printf "name% 46s% 10s% 11s\n" old new delta + echo "-----------------------------------------------------------------------" + while read a b c d + do + THISNAME=$(echo " $d" | sed 's/[.][0-9]*$//') + + if [ "$LASTNAME" != "$THISNAME" ] + then + TOTAL=$(($TOTAL+$DELTA)) + [ $DELTA -ne 0 ] && addline + LASTNAME="$THISNAME" + DELTA=0 + OLD=0 + NEW=0 + fi + + SIZE=$(printf "%d" "0x$b") + if [ "$a" == "<" ] + then + OLD=$(($OLD+$SIZE)) + SIZE=$((-1*$SIZE)) + else + NEW=$(($NEW+$SIZE)) + fi + DELTA=$(($DELTA+$SIZE)) + done + + TOTAL=$(($TOTAL+$DELTA)) + [ $DELTA -ne 0 ] && addline + + echo "$STUFF" | sort -k4,4nr + echo "-----------------------------------------------------------------------" + printf "% 71d total\n" "$TOTAL" +} + diff <(nm --size-sort "$1" | sort -k3,3) \ <(nm --size-sort "$2" | sort -k3,3) | grep '^[<>]' | sort -k4,4 | \ -( -LASTNAME= -DELTA=0 -TOTAL=0 -OLD=0 -NEW=0 -STUFF= - -printf "name% 46s% 10s% 11s\n" old new delta -echo "-----------------------------------------------------------------------" -while read a b c d -do - THISNAME=$(echo " $d" | sed 's/[.][0-9]*$//') - - if [ "$LASTNAME" != "$THISNAME" ] - then - TOTAL=$(($TOTAL+$DELTA)) - [ $DELTA -ne 0 ] && addline - LASTNAME="$THISNAME" - DELTA=0 - OLD=0 - NEW=0 - fi - - SIZE=$(printf "%d" "0x$b") - if [ "$a" == "<" ] - then - OLD=$(($OLD+$SIZE)) - SIZE=$((-1*$SIZE)) - else - NEW=$(($NEW+$SIZE)) - fi - DELTA=$(($DELTA+$SIZE)) -done - -TOTAL=$(($TOTAL+$DELTA)) -[ $DELTA -ne 0 ] && addline - -echo "$STUFF" | sort -k4,4nr -echo "-----------------------------------------------------------------------" -printf "% 71d total\n" "$TOTAL" -) + do_bloatcheck |