summaryrefslogtreecommitdiffstats
path: root/tools/linux
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-23 20:42:40 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-23 20:42:40 +0000
commite800385483beaf8b57eb81622edc269dc2b77426 (patch)
tree0613ba1f350afd307251af0fd72bb90fe7728694 /tools/linux
parentb37bf8b37e156684102f7978f734e657a83013de (diff)
downloadchromium_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-xtools/linux/dump-static-initializers.py19
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: