diff options
Diffstat (limited to 'lldb')
-rwxr-xr-x | lldb/examples/python/crashlog.py | 4 | ||||
-rwxr-xr-x | lldb/examples/python/symbolication.py | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index e3fac78dc5e..c676b646a57 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -680,10 +680,10 @@ def SymbolicateCrashLog(crash_log, options): for frame_idx, frame in enumerate(thread.frames): disassemble = (this_thread_crashed or options.disassemble_all_threads) and frame_idx < options.disassemble_depth; if frame_idx == 0: - symbolicated_frame_addresses = crash_log.symbolicate (frame.pc, options.verbose) + symbolicated_frame_addresses = crash_log.symbolicate (frame.pc & crash_log.addr_mask, options.verbose) else: # Any frame above frame zero and we have to subtract one to get the previous line entry - symbolicated_frame_addresses = crash_log.symbolicate (frame.pc - 1, options.verbose) + symbolicated_frame_addresses = crash_log.symbolicate ((frame.pc & crash_log.addr_mask) - 1, options.verbose) if symbolicated_frame_addresses: symbolicated_frame_address_idx = 0 diff --git a/lldb/examples/python/symbolication.py b/lldb/examples/python/symbolication.py index f36396112c9..e4c79b6c432 100755 --- a/lldb/examples/python/symbolication.py +++ b/lldb/examples/python/symbolication.py @@ -211,6 +211,7 @@ class Image: self.module = None self.symfile = None self.slide = None + def dump(self, prefix): print "%s%s" % (prefix, self) @@ -377,7 +378,7 @@ class Symbolicator: """A class the represents the information needed to symbolicate addresses in a program""" self.target = None self.images = list() # a list of images to be used when symbolicating - + self.addr_mask = 0xffffffffffffffff def __str__(self): s = "Symbolicator:\n" @@ -412,6 +413,12 @@ class Symbolicator: for image in self.images: self.target = image.create_target () if self.target: + if self.target.GetAddressByteSize() == 4: + triple = self.target.triple + if triple: + arch = triple.split('-')[0] + if "arm" in arch: + self.addr_mask = 0xfffffffffffffffe return self.target return None |