1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash 2*cf5a6c84SAndroid Build Coastguard Worker 3*cf5a6c84SAndroid Build Coastguard Workerif [ $# -ne 2 ] 4*cf5a6c84SAndroid Build Coastguard Workerthen 5*cf5a6c84SAndroid Build Coastguard Worker echo "usage: bloatcheck old new" 6*cf5a6c84SAndroid Build Coastguard Worker exit 1 7*cf5a6c84SAndroid Build Coastguard Workerfi 8*cf5a6c84SAndroid Build Coastguard Worker 9*cf5a6c84SAndroid Build Coastguard Workeraddline() 10*cf5a6c84SAndroid Build Coastguard Worker{ 11*cf5a6c84SAndroid Build Coastguard Worker NEXT="$(printf "%s% $((50-${#LASTNAME}))d% 10d %10d" "$LASTNAME" "$OLD" "$NEW" "$DELTA")" 12*cf5a6c84SAndroid Build Coastguard Worker [ -z "$STUFF" ] && 13*cf5a6c84SAndroid Build Coastguard Worker STUFF="$NEXT" || 14*cf5a6c84SAndroid Build Coastguard Worker STUFF="$(printf "%s\n%s" "$STUFF" "$NEXT")" 15*cf5a6c84SAndroid Build Coastguard Worker} 16*cf5a6c84SAndroid Build Coastguard Worker 17*cf5a6c84SAndroid Build Coastguard Workerdo_bloatcheck() 18*cf5a6c84SAndroid Build Coastguard Worker{ 19*cf5a6c84SAndroid Build Coastguard Worker LASTNAME= DELTA=0 TOTAL=0 OLD=0 NEW=0 STUFF= 20*cf5a6c84SAndroid Build Coastguard Worker 21*cf5a6c84SAndroid Build Coastguard Worker printf "name% 46s% 10s% 11s\n" old new delta 22*cf5a6c84SAndroid Build Coastguard Worker echo "-----------------------------------------------------------------------" 23*cf5a6c84SAndroid Build Coastguard Worker while read a b c d 24*cf5a6c84SAndroid Build Coastguard Worker do 25*cf5a6c84SAndroid Build Coastguard Worker THISNAME=$(echo "$d" | sed 's/[.][0-9]*$//') 26*cf5a6c84SAndroid Build Coastguard Worker 27*cf5a6c84SAndroid Build Coastguard Worker if [ "$LASTNAME" != "$THISNAME" ] 28*cf5a6c84SAndroid Build Coastguard Worker then 29*cf5a6c84SAndroid Build Coastguard Worker TOTAL=$(($TOTAL+$DELTA)) 30*cf5a6c84SAndroid Build Coastguard Worker [ $DELTA -ne 0 ] && addline 31*cf5a6c84SAndroid Build Coastguard Worker LASTNAME="$THISNAME" 32*cf5a6c84SAndroid Build Coastguard Worker DELTA=0 33*cf5a6c84SAndroid Build Coastguard Worker OLD=0 34*cf5a6c84SAndroid Build Coastguard Worker NEW=0 35*cf5a6c84SAndroid Build Coastguard Worker fi 36*cf5a6c84SAndroid Build Coastguard Worker 37*cf5a6c84SAndroid Build Coastguard Worker SIZE=$(printf "%d" "0x$b") 38*cf5a6c84SAndroid Build Coastguard Worker if [ "$a" == "-" ] 39*cf5a6c84SAndroid Build Coastguard Worker then 40*cf5a6c84SAndroid Build Coastguard Worker OLD=$(($OLD+$SIZE)) 41*cf5a6c84SAndroid Build Coastguard Worker SIZE=$((-1*$SIZE)) 42*cf5a6c84SAndroid Build Coastguard Worker else 43*cf5a6c84SAndroid Build Coastguard Worker NEW=$(($NEW+$SIZE)) 44*cf5a6c84SAndroid Build Coastguard Worker fi 45*cf5a6c84SAndroid Build Coastguard Worker DELTA=$(($DELTA+$SIZE)) 46*cf5a6c84SAndroid Build Coastguard Worker done 47*cf5a6c84SAndroid Build Coastguard Worker 48*cf5a6c84SAndroid Build Coastguard Worker TOTAL=$(($TOTAL+$DELTA)) 49*cf5a6c84SAndroid Build Coastguard Worker [ $DELTA -ne 0 ] && addline 50*cf5a6c84SAndroid Build Coastguard Worker 51*cf5a6c84SAndroid Build Coastguard Worker echo "$STUFF" | sort -k4,4nr 52*cf5a6c84SAndroid Build Coastguard Worker echo "-----------------------------------------------------------------------" 53*cf5a6c84SAndroid Build Coastguard Worker printf "% 71d total\n" "$TOTAL" 54*cf5a6c84SAndroid Build Coastguard Worker} 55*cf5a6c84SAndroid Build Coastguard Worker 56*cf5a6c84SAndroid Build Coastguard Workerdiff -U 0 <(nm --size-sort "$1"|sort -k 3,3) <(nm --size-sort "$2"|sort -k 3,3)\ 57*cf5a6c84SAndroid Build Coastguard Worker | tail -n +3 | sed -n 's/^\([-+]\)/\1 /p' | sort -k4,4 | do_bloatcheck 58