blob: 03606b2b0d0d74ffcd56083ed46bedba65e8e719 [file] [log] [blame]
Rob Landley7a4551f2012-02-21 21:27:10 -06001#!/bin/bash
2
3if [ $# -ne 2 ]
4then
5 echo "usage: bloatcheck old new"
6 exit 1
7fi
8
9addline()
10{
11 NEXT="$(printf "%s% $((50-${#LASTNAME}))d% 10d %10d" "$LASTNAME" "$OLD" "$NEW" "$DELTA")"
12 [ -z "$STUFF" ] &&
13 STUFF="$NEXT" ||
14 STUFF="$(printf "%s\n%s" "$STUFF" "$NEXT")"
15}
16
Rob Landley471c4d22014-06-08 13:24:02 -050017do_bloatcheck()
18{
19 LASTNAME=
20 DELTA=0
21 TOTAL=0
22 OLD=0
23 NEW=0
24 STUFF=
25
26 printf "name% 46s% 10s% 11s\n" old new delta
27 echo "-----------------------------------------------------------------------"
28 while read a b c d
29 do
30 THISNAME=$(echo " $d" | sed 's/[.][0-9]*$//')
31
32 if [ "$LASTNAME" != "$THISNAME" ]
33 then
34 TOTAL=$(($TOTAL+$DELTA))
35 [ $DELTA -ne 0 ] && addline
36 LASTNAME="$THISNAME"
37 DELTA=0
38 OLD=0
39 NEW=0
40 fi
41
42 SIZE=$(printf "%d" "0x$b")
43 if [ "$a" == "<" ]
44 then
45 OLD=$(($OLD+$SIZE))
46 SIZE=$((-1*$SIZE))
47 else
48 NEW=$(($NEW+$SIZE))
49 fi
50 DELTA=$(($DELTA+$SIZE))
51 done
52
53 TOTAL=$(($TOTAL+$DELTA))
54 [ $DELTA -ne 0 ] && addline
55
56 echo "$STUFF" | sort -k4,4nr
57 echo "-----------------------------------------------------------------------"
58 printf "% 71d total\n" "$TOTAL"
59}
60
Rob Landley7a4551f2012-02-21 21:27:10 -060061diff <(nm --size-sort "$1" | sort -k3,3) \
62 <(nm --size-sort "$2" | sort -k3,3) | grep '^[<>]' | sort -k4,4 | \
Rob Landley471c4d22014-06-08 13:24:02 -050063 do_bloatcheck