diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-23 20:42:40 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-23 20:42:40 +0000 |
commit | e800385483beaf8b57eb81622edc269dc2b77426 (patch) | |
tree | 0613ba1f350afd307251af0fd72bb90fe7728694 /tools/linux | |
parent | b37bf8b37e156684102f7978f734e657a83013de (diff) | |
download | chromium_src-e800385483beaf8b57eb81622edc269dc2b77426.zip chromium_src-e800385483beaf8b57eb81622edc269dc2b77426.tar.gz chromium_src-e800385483beaf8b57eb81622edc269dc2b77426.tar.bz2 |
dump-static-initializers: make more user-friendly
- Use optparse so --help works.
- Make the code that catches running on a Debug build actually work.
Review URL: http://codereview.chromium.org/8015017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102567 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/linux')
-rwxr-xr-x | tools/linux/dump-static-initializers.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tools/linux/dump-static-initializers.py b/tools/linux/dump-static-initializers.py index 959c53d..3a30641 100755 --- a/tools/linux/dump-static-initializers.py +++ b/tools/linux/dump-static-initializers.py @@ -23,9 +23,9 @@ using objdump, we can disassemble those functions and dump all symbols that they reference. """ +import optparse import re import subprocess -import sys # A map of symbol => informative text about it. NOTES = { @@ -73,6 +73,10 @@ def ExtractSymbolReferences(binary, start, end): refs = set() for line in objdump.stdout: + if '__static_initialization_and_destruction' in line: + raise RuntimeError, ('code mentions ' + '__static_initialization_and_destruction; ' + 'did you accidentally run this on a Debug binary?') match = disassembly_re.search(line) if match: (ref,) = match.groups() @@ -84,16 +88,17 @@ def ExtractSymbolReferences(binary, start, end): continue refs.add(ref) continue - if '__static_initialization_and_destruction' in line: - raise RuntimeError, ('code mentions ' - '__static_initialization_and_destruction; ' - 'did you accidentally use a Debug binary?') for ref in sorted(refs): yield ref -(binary,) = sys.argv[1:] +parser = optparse.OptionParser(usage='%prog filename') +opts, args = parser.parse_args() +if len(args) != 1: + parser.error('missing filename argument') +binary = args[0] + demangler = Demangler() for addr, size, filename in ParseNm(binary): if size == 2: @@ -102,7 +107,7 @@ for addr, size, filename in ParseNm(binary): # Two bytes is too small to do anything, so just ignore it. continue - print '%s (0x%x 0x%x)' % (filename, addr, addr+size) + print '%s (initializer offset 0x%x size 0x%x)' % (filename, addr, size) for ref in ExtractSymbolReferences(binary, addr, addr+size): ref = demangler.Demangle(ref) if ref in NOTES: |