Replace GPL python debug script with BSD shell script.
This commit is contained in:
parent
94d673dfa9
commit
7a4551ff5e
2
Makefile
2
Makefile
@ -22,7 +22,7 @@ baseline: toybox_unstripped
|
||||
@cp toybox_unstripped toybox_old
|
||||
|
||||
bloatcheck: toybox_old toybox_unstripped
|
||||
@scripts/bloat-o-meter toybox_old toybox_unstripped
|
||||
@scripts/bloatcheck toybox_old toybox_unstripped
|
||||
|
||||
instlist: toybox
|
||||
$(HOSTCC) $(CCFLAGS) -I . scripts/install.c -o instlist
|
||||
|
@ -1,65 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Copyright 2004 Matt Mackall <mpm@selenic.com>
|
||||
#
|
||||
# inspired by perl Bloat-O-Meter (c) 1997 by Andi Kleen
|
||||
#
|
||||
# This software may be used and distributed according to the terms
|
||||
# of the GNU General Public License, incorporated herein by reference.
|
||||
|
||||
import sys, os, re
|
||||
|
||||
if len(sys.argv) != 3:
|
||||
sys.stderr.write("usage: %s file1 file2\n" % sys.argv[0])
|
||||
sys.exit(-1)
|
||||
|
||||
def getsizes(file):
|
||||
sym = {}
|
||||
for l in os.popen("nm --size-sort " + file).readlines():
|
||||
size, type, name = l[:-1].split()
|
||||
if type in "tTdDbB":
|
||||
if "." in name: name = "static." + name.split(".")[0]
|
||||
sym[name] = sym.get(name, 0) + int(size, 16)
|
||||
for l in os.popen("readelf -S " + file).readlines():
|
||||
x = l.split()
|
||||
if len(x)<6 or x[1] != ".rodata": continue
|
||||
sym[".rodata"] = int(x[5], 16)
|
||||
return sym
|
||||
|
||||
old = getsizes(sys.argv[1])
|
||||
new = getsizes(sys.argv[2])
|
||||
grow, shrink, add, remove, up, down = 0, 0, 0, 0, 0, 0
|
||||
delta, common = [], {}
|
||||
|
||||
for a in old:
|
||||
if a in new:
|
||||
common[a] = 1
|
||||
|
||||
for name in old:
|
||||
if name not in common:
|
||||
remove += 1
|
||||
down += old[name]
|
||||
delta.append((-old[name], name))
|
||||
|
||||
for name in new:
|
||||
if name not in common:
|
||||
add += 1
|
||||
up += new[name]
|
||||
delta.append((new[name], name))
|
||||
|
||||
for name in common:
|
||||
d = new.get(name, 0) - old.get(name, 0)
|
||||
if d>0: grow, up = grow+1, up+d
|
||||
if d<0: shrink, down = shrink+1, down-d
|
||||
delta.append((d, name))
|
||||
|
||||
delta.sort()
|
||||
delta.reverse()
|
||||
|
||||
print "%-48s %7s %7s %+7s" % ("function", "old", "new", "delta")
|
||||
for d, n in delta:
|
||||
if d: print "%-48s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d)
|
||||
print "-"*78
|
||||
total="(add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s)%%sTotal: %s bytes"\
|
||||
% (add, remove, grow, shrink, up, -down, up-down)
|
||||
print total % (" "*(80-len(total)))
|
60
scripts/bloatcheck
Executable file
60
scripts/bloatcheck
Executable file
@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -ne 2 ]
|
||||
then
|
||||
echo "usage: bloatcheck old new"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
addline()
|
||||
{
|
||||
NEXT="$(printf "%s% $((50-${#LASTNAME}))d% 10d %10d" "$LASTNAME" "$OLD" "$NEW" "$DELTA")"
|
||||
[ -z "$STUFF" ] &&
|
||||
STUFF="$NEXT" ||
|
||||
STUFF="$(printf "%s\n%s" "$STUFF" "$NEXT")"
|
||||
}
|
||||
|
||||
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"
|
||||
)
|
Loading…
Reference in New Issue
Block a user