summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rwxr-xr-xlldb/examples/python/crashlog.py4
-rwxr-xr-xlldb/examples/python/symbolication.py9
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
OpenPOWER on IntegriCloud