Commit b62eb273 authored by Nikolay Borisov's avatar Nikolay Borisov Committed by akpm

scripts/bloat-o-meter: switch argument parsing to using argparse

This will facilitate further extension to the arguments the script takes. 
As an added benefit it also produces saner usage output, where mutual
exclusivity of the c|d|t parameters is clearly visible:

./scripts/bloat-o-meter  -h
usage: bloat-o-meter [-h] [-c | -d | -t] file1 file2

Simple script used to compare the symbol sizes of 2 object files

positional arguments:
  file1       First file to compare
  file2       Second file to compare

optional arguments:
  -h, --help  show this help message and exit
  -c          categorize output based on symbol type
  -d          Show delta of Data Section
  -t          Show delta of text Section

Link: https://lkml.kernel.org/r/20220701113513.1938008-1-nborisov@suse.comSigned-off-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent a16ceb13
...@@ -7,18 +7,20 @@ ...@@ -7,18 +7,20 @@
# This software may be used and distributed according to the terms # This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference. # of the GNU General Public License, incorporated herein by reference.
import sys, os, re import sys, os, re, argparse
from signal import signal, SIGPIPE, SIG_DFL from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE, SIG_DFL) signal(SIGPIPE, SIG_DFL)
if len(sys.argv) < 3: parser = argparse.ArgumentParser(description="Simple script used to compare the symbol sizes of 2 object files")
sys.stderr.write("usage: %s [option] file1 file2\n" % sys.argv[0]) group = parser.add_mutually_exclusive_group()
sys.stderr.write("The options are:\n") group.add_argument('-c', help='categorize output based on symbol type', action='store_true')
sys.stderr.write("-c categorize output based on symbol type\n") group.add_argument('-d', help='Show delta of Data Section', action='store_true')
sys.stderr.write("-d Show delta of Data Section\n") group.add_argument('-t', help='Show delta of text Section', action='store_true')
sys.stderr.write("-t Show delta of text Section\n") parser.add_argument('file1', help='First file to compare')
sys.exit(-1) parser.add_argument('file2', help='Second file to compare')
args = parser.parse_args()
re_NUMBER = re.compile(r'\.[0-9]+') re_NUMBER = re.compile(r'\.[0-9]+')
...@@ -77,9 +79,9 @@ def calc(oldfile, newfile, format): ...@@ -77,9 +79,9 @@ def calc(oldfile, newfile, format):
delta.reverse() delta.reverse()
return grow, shrink, add, remove, up, down, delta, old, new, otot, ntot return grow, shrink, add, remove, up, down, delta, old, new, otot, ntot
def print_result(symboltype, symbolformat, argc): def print_result(symboltype, symbolformat):
grow, shrink, add, remove, up, down, delta, old, new, otot, ntot = \ grow, shrink, add, remove, up, down, delta, old, new, otot, ntot = \
calc(sys.argv[argc - 1], sys.argv[argc], symbolformat) calc(args.file1, args.file2, symbolformat)
print("add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \ print("add/remove: %s/%s grow/shrink: %s/%s up/down: %s/%s (%s)" % \
(add, remove, grow, shrink, up, -down, up-down)) (add, remove, grow, shrink, up, -down, up-down))
...@@ -93,13 +95,13 @@ def print_result(symboltype, symbolformat, argc): ...@@ -93,13 +95,13 @@ def print_result(symboltype, symbolformat, argc):
percent = 0 percent = 0
print("Total: Before=%d, After=%d, chg %+.2f%%" % (otot, ntot, percent)) print("Total: Before=%d, After=%d, chg %+.2f%%" % (otot, ntot, percent))
if sys.argv[1] == "-c": if args.c:
print_result("Function", "tT", 3) print_result("Function", "tT")
print_result("Data", "dDbB", 3) print_result("Data", "dDbB")
print_result("RO Data", "rR", 3) print_result("RO Data", "rR")
elif sys.argv[1] == "-d": elif args.d:
print_result("Data", "dDbBrR", 3) print_result("Data", "dDbBrR")
elif sys.argv[1] == "-t": elif args.t:
print_result("Function", "tT", 3) print_result("Function", "tT")
else: else:
print_result("Function", "tTdDbBrR", 2) print_result("Function", "tTdDbBrR")
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment