summaryrefslogtreecommitdiff
path: root/utils/analysis/objdiff.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/analysis/objdiff.py')
-rwxr-xr-xutils/analysis/objdiff.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/utils/analysis/objdiff.py b/utils/analysis/objdiff.py
index dc51441bfa..29f703e52a 100755
--- a/utils/analysis/objdiff.py
+++ b/utils/analysis/objdiff.py
@@ -3,10 +3,10 @@ import sys
3from subprocess import Popen, PIPE 3from subprocess import Popen, PIPE
4 4
5if len(sys.argv) != 3: 5if len(sys.argv) != 3:
6 print """%s usage: 6 print ("""%s usage:
7 %s obj1 obj2 7 %s obj1 obj2
8 Calculate per-symbol and total size differences between obj1 and obj2, 8 Calculate per-symbol and total size differences between obj1 and obj2,
9 which may be any files that nm can read""" % ((sys.argv[0],)*2) 9 which may be any files that nm can read""" % ((sys.argv[0],)*2))
10 sys.exit(2) 10 sys.exit(2)
11 11
12obj1 = sys.argv[1] 12obj1 = sys.argv[1]
@@ -16,8 +16,8 @@ def getsyms(obj):
16 proc = Popen(args=['nm', '-S', '-t', 'd', obj], stdout=PIPE, stderr=PIPE) 16 proc = Popen(args=['nm', '-S', '-t', 'd', obj], stdout=PIPE, stderr=PIPE)
17 out, err = proc.communicate() 17 out, err = proc.communicate()
18 if err: 18 if err:
19 print "nm reported an error:\n" 19 print ("nm reported an error:\n")
20 print err 20 print (err)
21 sys.exit(1) 21 sys.exit(1)
22 d = {} 22 d = {}
23 for l in out.splitlines(): 23 for l in out.splitlines():
@@ -32,23 +32,23 @@ d1 = getsyms(obj1)
32d2 = getsyms(obj2) 32d2 = getsyms(obj2)
33l = [(k,v) for k,v in sorted(d1.items()) if k not in d2] 33l = [(k,v) for k,v in sorted(d1.items()) if k not in d2]
34if l: 34if l:
35 print "only in %s" % obj1 35 print ("only in %s" % obj1)
36 print ''.join(" %6d %s\n" % (v,k) for k,v in l) 36 print (''.join(" %6d %s\n" % (v,k)) for k,v in l)
37 diff -= sum(v for k,v in l) 37 diff -= sum(v for k,v in l)
38 38
39l = [(k,v) for k,v in sorted(d2.items()) if k not in d1] 39l = [(k,v) for k,v in sorted(d2.items()) if k not in d1]
40if l: 40if l:
41 print "only in %s" % obj2 41 print ("only in %s" % obj2)
42 print ''.join("%6d %s\n" % (v,k) for k,v in l) 42 print (''.join("%6d %s\n" % (v,k)) for k,v in l)
43 diff += sum(v for k,v in l) 43 diff += sum(v for k,v in l)
44 44
45l = [(k,v,d2[k]) for k,v in sorted(d1.items()) if k in d2 and d2[k] != v] 45l = [(k,v,d2[k]) for k,v in sorted(d1.items()) if k in d2 and d2[k] != v]
46if l: 46if l:
47 print "different sizes in %s and %s:" %(obj1, obj2) 47 print ("different sizes in %s and %s:" %(obj1, obj2))
48 print ''.join(" %6d %6d %s\n" % (v1,v2,k) for k,v1,v2 in l) 48 print (''.join(" %6d %6d %s\n" % (v1,v2,k)) for k,v1,v2 in l)
49 diff += sum(v2-v1 for k,v1,v2 in l) 49 diff += sum(v2-v1 for k,v1,v2 in l)
50 50
51if diff: 51if diff:
52 print "total size difference: %+d" % diff 52 print ("total size difference: %+d" % diff)
53else: 53else:
54 print "total size difference: 0" 54 print ("total size difference: 0")