diff options
Diffstat (limited to 'lldb/examples/python/symbolication.py')
-rwxr-xr-x | lldb/examples/python/symbolication.py | 82 |
1 files changed, 39 insertions, 43 deletions
diff --git a/lldb/examples/python/symbolication.py b/lldb/examples/python/symbolication.py index 5763acac841..b655ad0d179 100755 --- a/lldb/examples/python/symbolication.py +++ b/lldb/examples/python/symbolication.py @@ -26,12 +26,8 @@ # PYTHONPATH=/path/to/LLDB.framework/Resources/Python ./crashlog.py ~/Library/Logs/DiagnosticReports/a.crash #---------------------------------------------------------------------- -from __future__ import print_function -from builtins import str -from builtins import range -from builtins import object import lldb -import subprocess +import commands import optparse import os import plistlib @@ -42,7 +38,7 @@ import time import uuid -class Address(object): +class Address: """Class that represents an address that will be symbolicated""" def __init__(self, target, load_addr): @@ -160,7 +156,7 @@ class Address(object): return False -class Section(object): +class Section: """Class that represents an load address range""" sect_info_regex = re.compile('(?P<name>[^=]+)=(?P<range>.*)') addr_regex = re.compile('^\s*(?P<start>0x[0-9A-Fa-f]+)\s*$') @@ -207,13 +203,13 @@ class Section(object): if op == '+': self.end_addr += self.start_addr return True - print('error: invalid section info string "%s"' % s) - print('Valid section info formats are:') - print('Format Example Description') - print('--------------------- -----------------------------------------------') - print('<name>=<base> __TEXT=0x123000 Section from base address only') - print('<name>=<base>-<end> __TEXT=0x123000-0x124000 Section from base address and end address') - print('<name>=<base>+<size> __TEXT=0x123000+0x1000 Section from base address and size') + print 'error: invalid section info string "%s"' % s + print 'Valid section info formats are:' + print 'Format Example Description' + print '--------------------- -----------------------------------------------' + print '<name>=<base> __TEXT=0x123000 Section from base address only' + print '<name>=<base>-<end> __TEXT=0x123000-0x124000 Section from base address and end address' + print '<name>=<base>+<size> __TEXT=0x123000+0x1000 Section from base address and size' return False def __str__(self): @@ -229,7 +225,7 @@ class Section(object): return "<invalid>" -class Image(object): +class Image: """A class that represents an executable image and any associated data""" def __init__(self, path, uuid=None): @@ -265,21 +261,21 @@ class Image(object): return obj def dump(self, prefix): - print("%s%s" % (prefix, self)) + print "%s%s" % (prefix, self) def debug_dump(self): - print('path = "%s"' % (self.path)) - print('resolved_path = "%s"' % (self.resolved_path)) - print('resolved = %i' % (self.resolved)) - print('unavailable = %i' % (self.unavailable)) - print('uuid = %s' % (self.uuid)) - print('section_infos = %s' % (self.section_infos)) - print('identifier = "%s"' % (self.identifier)) - print('version = %s' % (self.version)) - print('arch = %s' % (self.arch)) - print('module = %s' % (self.module)) - print('symfile = "%s"' % (self.symfile)) - print('slide = %i (0x%x)' % (self.slide, self.slide)) + print 'path = "%s"' % (self.path) + print 'resolved_path = "%s"' % (self.resolved_path) + print 'resolved = %i' % (self.resolved) + print 'unavailable = %i' % (self.unavailable) + print 'uuid = %s' % (self.uuid) + print 'section_infos = %s' % (self.section_infos) + print 'identifier = "%s"' % (self.identifier) + print 'version = %s' % (self.version) + print 'arch = %s' % (self.arch) + print 'module = %s' % (self.module) + print 'symfile = "%s"' % (self.symfile) + print 'slide = %i (0x%x)' % (self.slide, self.slide) def __str__(self): s = '' @@ -432,16 +428,16 @@ class Image(object): if self.has_section_load_info(): err = self.load_module(target) if err: - print('ERROR: ', err) + print 'ERROR: ', err return target else: - print('error: unable to create a valid target for (%s) "%s"' % (self.arch, self.path)) + print 'error: unable to create a valid target for (%s) "%s"' % (self.arch, self.path) else: - print('error: unable to locate main executable (%s) "%s"' % (self.arch, self.path)) + print 'error: unable to locate main executable (%s) "%s"' % (self.arch, self.path) return None -class Symbolicator(object): +class Symbolicator: def __init__(self): """A class the represents the information needed to symbolicate addresses in a program""" @@ -558,7 +554,7 @@ class Symbolicator(object): if symbolicated_addresses: return symbolicated_addresses else: - print('error: no target in Symbolicator') + print 'error: no target in Symbolicator' return None @@ -606,22 +602,22 @@ def disassemble_instructions( end_idx = inst_idx for i in range(start_idx, end_idx + 1): if i == pc_index: - print(' -> ', lines[i]) + print ' -> ', lines[i] else: - print(' ', lines[i]) + print ' ', lines[i] def print_module_section_data(section): - print(section) + print section section_data = section.GetSectionData() if section_data: ostream = lldb.SBStream() section_data.GetDescription(ostream, section.GetFileAddress()) - print(ostream.GetData()) + print ostream.GetData() def print_module_section(section, depth): - print(section) + print section if depth > 0: num_sub_sections = section.GetNumSubSections() for sect_idx in range(num_sub_sections): @@ -636,7 +632,7 @@ def print_module_sections(module, depth): def print_module_symbols(module): for sym in module: - print(sym) + print sym def Symbolicate(command_args): @@ -713,17 +709,17 @@ def Symbolicate(command_args): target = symbolicator.create_target() if options.verbose: - print(symbolicator) + print symbolicator if target: for addr_str in args: addr = int(addr_str, 0) symbolicated_addrs = symbolicator.symbolicate( addr, options.verbose) for symbolicated_addr in symbolicated_addrs: - print(symbolicated_addr) - print() + print symbolicated_addr + print else: - print('error: no target for %s' % (symbolicator)) + print 'error: no target for %s' % (symbolicator) if __name__ == '__main__': # Create a new debugger instance |