diff options
author | John Brawn <john.brawn@arm.com> | 2016-07-01 17:05:58 +0000 |
---|---|---|
committer | John Brawn <john.brawn@arm.com> | 2016-07-01 17:05:58 +0000 |
commit | 4e3656d2cb91ce5ad2e52d20e4c664de5a602a29 (patch) | |
tree | 7038e495575173bf9f91b73a2ba18c6d72ee9e8f /llvm/utils/extract_symbols.py | |
parent | 7f9fbec3e8bbd68de9acba714cc080d4e7af87aa (diff) | |
download | bcm5719-llvm-4e3656d2cb91ce5ad2e52d20e4c664de5a602a29.tar.gz bcm5719-llvm-4e3656d2cb91ce5ad2e52d20e4c664de5a602a29.zip |
Make extract_symbols.py be compatible with Python 3
This involved running 2to3 on it and adjusting all uses of subprocess to use
universal_newlines=True so the output is text instead of binary. It remains
compatible with Python 2.7.
llvm-svn: 274365
Diffstat (limited to 'llvm/utils/extract_symbols.py')
-rwxr-xr-x | llvm/utils/extract_symbols.py | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/llvm/utils/extract_symbols.py b/llvm/utils/extract_symbols.py index 2441e45598f..9f467a7d055 100755 --- a/llvm/utils/extract_symbols.py +++ b/llvm/utils/extract_symbols.py @@ -15,6 +15,7 @@ files (i.e. template instantiations) and we would get defined in the thing importing these symbols anyway. """ +from __future__ import print_function import sys import re import os @@ -30,7 +31,8 @@ import argparse def dumpbin_get_symbols(lib): process = subprocess.Popen(['dumpbin','/symbols',lib], bufsize=1, - stdout=subprocess.PIPE, stdin=subprocess.PIPE) + stdout=subprocess.PIPE, stdin=subprocess.PIPE, + universal_newlines=True) process.stdin.close() for line in process.stdout: # Look for external symbols that are defined in some section @@ -41,7 +43,8 @@ def dumpbin_get_symbols(lib): def nm_get_symbols(lib): process = subprocess.Popen(['nm',lib], bufsize=1, - stdout=subprocess.PIPE, stdin=subprocess.PIPE) + stdout=subprocess.PIPE, stdin=subprocess.PIPE, + universal_newlines=True) process.stdin.close() for line in process.stdout: # Look for external symbols that are defined in some section @@ -52,7 +55,8 @@ def nm_get_symbols(lib): def readobj_get_symbols(lib): process = subprocess.Popen(['llvm-readobj','-symbols',lib], bufsize=1, - stdout=subprocess.PIPE, stdin=subprocess.PIPE) + stdout=subprocess.PIPE, stdin=subprocess.PIPE, + universal_newlines=True) process.stdin.close() for line in process.stdout: # When looking through the output of llvm-readobj we expect to see Name, @@ -81,7 +85,8 @@ def dumpbin_is_32bit_windows(lib): # dumpbin /headers can output a huge amount of data (>100MB in a debug # build) so we read only up to the 'machine' line then close the output. process = subprocess.Popen(['dumpbin','/headers',lib], bufsize=1, - stdout=subprocess.PIPE, stdin=subprocess.PIPE) + stdout=subprocess.PIPE, stdin=subprocess.PIPE, + universal_newlines=True) process.stdin.close() retval = False for line in process.stdout: @@ -94,7 +99,8 @@ def dumpbin_is_32bit_windows(lib): return retval def objdump_is_32bit_windows(lib): - output = subprocess.check_output(['objdump','-f',lib]) + output = subprocess.check_output(['objdump','-f',lib], + universal_newlines=True) for line in output: match = re.match('.+file format (\S+)', line) if match: @@ -102,7 +108,8 @@ def objdump_is_32bit_windows(lib): return False def readobj_is_32bit_windows(lib): - output = subprocess.check_output(['llvm-readobj','-file-headers',lib]) + output = subprocess.check_output(['llvm-readobj','-file-headers',lib], + universal_newlines=True) for line in output: match = re.match('Format: (\S+)', line) if match: @@ -345,7 +352,8 @@ if __name__ == '__main__': # want the process to wait for something on stdin. p = subprocess.Popen([exe], stdout=subprocess.PIPE, stderr=subprocess.PIPE, - stdin=subprocess.PIPE) + stdin=subprocess.PIPE, + universal_newlines=True) p.stdout.close() p.stderr.close() p.stdin.close() @@ -361,10 +369,10 @@ if __name__ == '__main__': except OSError: continue if not get_symbols: - print >>sys.stderr, "Couldn't find a program to read symbols with" + print("Couldn't find a program to read symbols with", file=sys.stderr) exit(1) if not is_32bit_windows: - print >>sys.stderr, "Couldn't find a program to determing the target" + print("Couldn't find a program to determing the target", file=sys.stderr) exit(1) # How we determine which symbols to keep and which to discard depends on @@ -390,7 +398,7 @@ if __name__ == '__main__': lib = 'lib'+lib+s break if not any([lib.endswith(s) for s in suffixes]): - print >>sys.stderr, "Don't know what to do with argument "+lib + print("Don't know what to do with argument "+lib, file=sys.stderr) exit(1) libs.append(lib) @@ -423,7 +431,7 @@ if __name__ == '__main__': # Merge everything into a single dict symbols = dict() for this_lib_symbols in libs_symbols: - for k,v in this_lib_symbols.items(): + for k,v in list(this_lib_symbols.items()): symbols[k] = v + symbols.setdefault(k,0) # Count instances of member functions of template classes, and map the @@ -482,7 +490,7 @@ if __name__ == '__main__': outfile = open(args.o,'w') else: outfile = sys.stdout - for k,v in symbols.items(): + for k,v in list(symbols.items()): template_count = template_function_count[template_function_mapping[k]] if v == 1 and template_count < 100: - print >>outfile, k + print(k, file=outfile) |