diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index aa69be8212e2173c7f2dfb60e383576b64d1888f..bbe2a37bd89a1053800910fd49e606e34feeaa4a 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -67,14 +67,15 @@ class RamDump(): def __init__(self, ramdump): start = ramdump.addr_lookup('__start_unwind_idx') end = ramdump.addr_lookup('__stop_unwind_idx') + self.ramdump = ramdump 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 # addresses + self.unwind_frame = self.unwind_frame_tables self.start_idx = start self.stop_idx = end self.unwind_table = [] - self.ramdump = ramdump i = 0 for addr in range(start, end, 8): r = ramdump.read_string(addr, '<II') @@ -325,7 +326,7 @@ class RamDump(): temp = addr + offset return (temp & 0xffffffff) + ((temp >> 32) & 0xffffffff) - def unwind_frame(self, frame, trace=False): + def unwind_frame_tables(self, frame, trace=False): low = frame.sp high = ((low + (THREAD_SIZE - 1)) & ~(THREAD_SIZE - 1)) + \ THREAD_SIZE