xref: /aosp_15_r20/external/toybox/scripts/probes/bloatcheck (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
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