linux-yocto/scripts/bloat-o-meter
Josh Triplett 5a7b2d2796 scripts/bloat-o-meter: ignore changes in the size of linux_banner
linux_banner can change size due to changes in the compiler, build number,
or the user@host the system was compiled on; ignore size changes in
linux_banner entirely.

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Michal Marek <mmarek@suse.cz>
2013-11-07 10:46:54 +01:00

1.8 KiB
Executable File

#!/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 "tTdDbBrR": # strip generated symbols if name[:6] == "_mod": continue if name == "linux_banner": continue # statics and some other optimizations adds random .NUMBER name = re.sub(r'.[0-9]+', '', name) sym[name] = sym.get(name, 0) + int(size, 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 "add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" %
(add, remove, grow, shrink, up, -down, up-down) print "%-40s %7s %7s %+7s" % ("function", "old", "new", "delta") for d, n in delta: if d: print "%-40s %7s %7s %+7d" % (n, old.get(n,"-"), new.get(n,"-"), d)