Skip to content
Snippets Groups Projects
Commit 599f3123 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "linux-ramdump-parser-v2: Properly support unwinding without tables"

parents 4372c731 280ae8af
No related branches found
No related tags found
No related merge requests found
...@@ -67,14 +67,15 @@ class RamDump(): ...@@ -67,14 +67,15 @@ class RamDump():
def __init__(self, ramdump): def __init__(self, ramdump):
start = ramdump.addr_lookup('__start_unwind_idx') start = ramdump.addr_lookup('__start_unwind_idx')
end = ramdump.addr_lookup('__stop_unwind_idx') end = ramdump.addr_lookup('__stop_unwind_idx')
self.ramdump = ramdump
if (start is None) or (end is None): if (start is None) or (end is None):
print_out_str('!!! Could not lookup unwinding information') self.unwind_frame = self.unwind_frame_generic
return None return None
# addresses # addresses
self.unwind_frame = self.unwind_frame_tables
self.start_idx = start self.start_idx = start
self.stop_idx = end self.stop_idx = end
self.unwind_table = [] self.unwind_table = []
self.ramdump = ramdump
i = 0 i = 0
for addr in range(start, end, 8): for addr in range(start, end, 8):
r = ramdump.read_string(addr, '<II') r = ramdump.read_string(addr, '<II')
...@@ -325,7 +326,7 @@ class RamDump(): ...@@ -325,7 +326,7 @@ class RamDump():
temp = addr + offset temp = addr + offset
return (temp & 0xffffffff) + ((temp >> 32) & 0xffffffff) return (temp & 0xffffffff) + ((temp >> 32) & 0xffffffff)
def unwind_frame(self, frame, trace=False): def unwind_frame_tables(self, frame, trace=False):
low = frame.sp low = frame.sp
high = ((low + (THREAD_SIZE - 1)) & ~(THREAD_SIZE - 1)) + \ high = ((low + (THREAD_SIZE - 1)) & ~(THREAD_SIZE - 1)) + \
THREAD_SIZE THREAD_SIZE
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment