xref: /aosp_15_r20/external/toybox/scripts/probes/bloatcheck (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1#!/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
17do_bloatcheck()
18{
19  LASTNAME= DELTA=0 TOTAL=0 OLD=0 NEW=0 STUFF=
20
21  printf "name% 46s% 10s% 11s\n" old new delta
22  echo "-----------------------------------------------------------------------"
23  while read a b c d
24  do
25    THISNAME=$(echo "$d" | sed 's/[.][0-9]*$//')
26
27    if [ "$LASTNAME" != "$THISNAME" ]
28    then
29      TOTAL=$(($TOTAL+$DELTA))
30      [ $DELTA -ne 0 ] && addline
31      LASTNAME="$THISNAME"
32      DELTA=0
33      OLD=0
34      NEW=0
35    fi
36
37    SIZE=$(printf "%d" "0x$b")
38    if [ "$a" == "-" ]
39    then
40      OLD=$(($OLD+$SIZE))
41      SIZE=$((-1*$SIZE))
42    else
43      NEW=$(($NEW+$SIZE))
44    fi
45    DELTA=$(($DELTA+$SIZE))
46  done
47
48  TOTAL=$(($TOTAL+$DELTA))
49  [ $DELTA -ne 0 ] && addline
50
51  echo "$STUFF" | sort -k4,4nr
52  echo "-----------------------------------------------------------------------"
53  printf "% 71d total\n" "$TOTAL"
54}
55
56diff -U 0 <(nm --size-sort "$1"|sort -k 3,3) <(nm --size-sort "$2"|sort -k 3,3)\
57  | tail -n +3 | sed -n 's/^\([-+]\)/\1 /p' | sort -k4,4 | do_bloatcheck
58