diff --git a/linux-ramdump-parser-v2/debug_image_v2.py b/linux-ramdump-parser-v2/debug_image_v2.py index f63d37b67ee35fe097c2c4e7bccac9883ed37862..6a04104305c6d7fac2ab6e3faecd550c9f50cfc0 100644 --- a/linux-ramdump-parser-v2/debug_image_v2.py +++ b/linux-ramdump-parser-v2/debug_image_v2.py @@ -218,7 +218,7 @@ class DebugImage_v2(): type_offset = ram_dump.field_offset('struct trace_event', 'type') fields_offset = ram_dump.field_offset('struct ftrace_event_class', 'fields') - common_field_list = ram_dump.addr_lookup('ftrace_common_fields') + common_field_list = ram_dump.address_of('ftrace_common_fields') field_next_offset = ram_dump.field_offset('struct ftrace_event_field', 'link') name_str = ram_dump.read_cstring(name, 512) @@ -246,7 +246,7 @@ class DebugImage_v2(): formats_out = ram_dump.open_file(formats) self.formats_out = formats_out - ftrace_events_list = ram_dump.addr_lookup('ftrace_events') + ftrace_events_list = ram_dump.address_of('ftrace_events') next_offset = ram_dump.field_offset('struct ftrace_event_call', 'list') list_walker = llist.ListWalker(ram_dump, ftrace_events_list, next_offset) list_walker.walk_prev(ftrace_events_list, self.ftrace_events_func, ram_dump) @@ -426,7 +426,7 @@ class DebugImage_v2(): dump_entry_size = ram_dump.sizeof('struct msm_dump_entry') dump_data_size = ram_dump.sizeof('struct msm_dump_data') - mem_dump_data = ram_dump.addr_lookup('memdump') + mem_dump_data = ram_dump.address_of('memdump') mem_dump_table = ram_dump.read_word( mem_dump_data + dump_table_ptr_offset) diff --git a/linux-ramdump-parser-v2/dmesglib.py b/linux-ramdump-parser-v2/dmesglib.py index 8275b31a6952e5e61b24bf997d2652ceb048afca..e5f7721e5f7a15f7fe0fefa1c8836653e50eff20 100644 --- a/linux-ramdump-parser-v2/dmesglib.py +++ b/linux-ramdump-parser-v2/dmesglib.py @@ -50,7 +50,7 @@ class DmesgLib(object): def verify_log_helper(self, msg, verbose): # return early if CONFIG_LOG_BUF_MAGIC is not defined - log_align_addr = self.ramdump.addr_lookup('__log_align') + log_align_addr = self.ramdump.address_of('__log_align') if (log_align_addr is None): return True @@ -101,15 +101,16 @@ class DmesgLib(object): return logbuf_addr + last_idx def extract_dmesg_flat(self): - addr = self.ramdump.read_word(self.ramdump.addr_lookup('log_buf')) - size = self.ramdump.read_word(self.ramdump.addr_lookup('log_buf_len')) + addr = self.ramdump.read_word(self.ramdump.address_of('log_buf')) + size = self.ramdump.read_word(self.ramdump.address_of('log_buf_len')) dmesg = self.ramdump.read_physical(self.ramdump.virt_to_phys(addr), size) self.outfile.write(cleanupString(dmesg.decode('ascii', 'ignore')) + '\n') def extract_dmesg_binary(self): - first_idx_addr = self.ramdump.addr_lookup('log_first_idx') - last_idx_addr = self.ramdump.addr_lookup('log_next_idx') - logbuf_addr = self.ramdump.read_word(self.ramdump.addr_lookup('log_buf')) + first_idx_addr = self.ramdump.address_of('log_first_idx') + last_idx_addr = self.ramdump.address_of('log_next_idx') + logbuf_addr = self.ramdump.read_word( + self.ramdump.address_of('log_buf')) time_offset = self.ramdump.field_offset(self.struct_name, 'ts_nsec') len_offset = self.ramdump.field_offset(self.struct_name, 'len') text_len_offset = self.ramdump.field_offset(self.struct_name, 'text_len') diff --git a/linux-ramdump-parser-v2/gdbmi.py b/linux-ramdump-parser-v2/gdbmi.py index 282f48fdc8b89c6440d7f789037c9810e4e89275..4ba3b9f385557331bd941b44208f3e02ee0b6000 100644 --- a/linux-ramdump-parser-v2/gdbmi.py +++ b/linux-ramdump-parser-v2/gdbmi.py @@ -1,4 +1,4 @@ -# Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -176,7 +176,7 @@ class GdbMI(object): int quanitity = 42; struct pizza mypizza = {.price = 10, .qty = &quanitity}; - qtyp = dump.addr_lookup('quantity') + qtyp = dump.address_of('quantity') price = dump.read_int(gdbmi.sibling_field_addr(qtyp, 'struct pizza', 'qty', 'price')) """ diff --git a/linux-ramdump-parser-v2/mm.py b/linux-ramdump-parser-v2/mm.py index 09e648461dfbd000de1cab41e114d07df44f0b28..c6790766e533d60db16cf499522e9ab815fc26fb 100755 --- a/linux-ramdump-parser-v2/mm.py +++ b/linux-ramdump-parser-v2/mm.py @@ -34,7 +34,7 @@ def page_to_nid(page_flags): def page_zone(ramdump, page): - contig_page_data = ramdump.addr_lookup('contig_page_data') + contig_page_data = ramdump.address_of('contig_page_data') node_zones_offset = ramdump.field_offset( 'struct pglist_data', 'node_zones') page_flags_offset = ramdump.field_offset('struct page', 'flags') @@ -75,7 +75,7 @@ def hash32(val, bits): def page_slot(ramdump, page): hashed = hash32(page, 7) - htable = ramdump.addr_lookup('page_address_htable') + htable = ramdump.address_of('page_address_htable') htable_size = ramdump.sizeof('page_address_htable[0]') return htable + htable_size * hashed @@ -90,7 +90,7 @@ def nr_to_section(ramdump, sec_num): sections_per_root = 4096 / memsection_struct_size sect_nr_to_root = sec_num / sections_per_root masked = sec_num & (sections_per_root - 1) - mem_section_addr = ramdump.addr_lookup('mem_section') + mem_section_addr = ramdump.address_of('mem_section') mem_section = ramdump.read_word(mem_section_addr) if mem_section is None: return None @@ -163,7 +163,7 @@ def pfn_to_page_vmemmap(ramdump, pfn): def page_to_pfn_flat(ramdump, page): - mem_map_addr = ramdump.addr_lookup('mem_map') + mem_map_addr = ramdump.address_of('mem_map') mem_map = ramdump.read_word(mem_map_addr) page_size = ramdump.sizeof('struct page') # XXX Needs to change for LPAE @@ -172,7 +172,7 @@ def page_to_pfn_flat(ramdump, page): def pfn_to_page_flat(ramdump, pfn): - mem_map_addr = ramdump.addr_lookup('mem_map') + mem_map_addr = ramdump.address_of('mem_map') mem_map = ramdump.read_word(mem_map_addr) page_size = ramdump.sizeof('struct page') # XXX Needs to change for LPAE @@ -199,8 +199,8 @@ def pfn_to_page(ramdump, pfn): def sparsemem_lowmem_page_address(ramdump, page): - membank1_start = ramdump.read_word(ramdump.addr_lookup('membank1_start')) - membank0_size = ramdump.read_word(ramdump.addr_lookup('membank0_size')) + membank1_start = ramdump.read_word(ramdump.address_of('membank1_start')) + membank0_size = ramdump.read_word(ramdump.address_of('membank0_size')) # XXX currently magic membank0_phys_offset = ramdump.phys_offset membank0_page_offset = ramdump.page_offset @@ -215,12 +215,12 @@ def sparsemem_lowmem_page_address(ramdump, page): def dont_map_hole_lowmem_page_address(ramdump, page): phys = page_to_pfn(ramdump, page) << 12 - hole_end_addr = ramdump.addr_lookup('memory_hole_end') + hole_end_addr = ramdump.address_of('memory_hole_end') if hole_end_addr is None: - hole_end_addr = ramdump.addr_lookup('membank1_start') - hole_offset_addr = ramdump.addr_lookup('memory_hole_offset') + hole_end_addr = ramdump.address_of('membank1_start') + hole_offset_addr = ramdump.address_of('memory_hole_offset') if hole_offset_addr is None: - hole_offset_addr = ramdump.addr_lookup('membank0_size') + hole_offset_addr = ramdump.address_of('membank0_size') hole_end = ramdump.read_word(hole_end_addr) hole_offset = ramdump.read_word(hole_offset_addr) if hole_end != 0 and phys >= hole_end: diff --git a/linux-ramdump-parser-v2/parsers/cachedump.py b/linux-ramdump-parser-v2/parsers/cachedump.py index 76570005cc558edfe03dae95e6e73eeefa52a761..4231aff2ec49fa00176dbb75634f2b15c7b71731 100644 --- a/linux-ramdump-parser-v2/parsers/cachedump.py +++ b/linux-ramdump-parser-v2/parsers/cachedump.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012-2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -118,7 +118,7 @@ class CacheDump(RamParser): '!!! Cache dumping was not enabled. No cache will be dumped') return - cache_base_addr = self.ramdump.addr_lookup('l2_dump') + cache_base_addr = self.ramdump.address_of('l2_dump') cache_base = self.ramdump.read_word(cache_base_addr) parse_cache_dump(self.ramdump, cache_base) diff --git a/linux-ramdump-parser-v2/parsers/clockdump.py b/linux-ramdump-parser-v2/parsers/clockdump.py index 0c6b21067b5c429cae80b86487444a61687840c2..09b4657d3c1efe6ecd92acf4be0d2afb75688b49 100755 --- a/linux-ramdump-parser-v2/parsers/clockdump.py +++ b/linux-ramdump-parser-v2/parsers/clockdump.py @@ -54,7 +54,7 @@ class ClockDumps(RamParser) : self.output_file.write('P ' + clocks) def get_clocks(self): - clocks = self.ramdump.addr_lookup('clocks') + clocks = self.ramdump.address_of('clocks') if clocks is None: self.output_file.write("NOTE: 'clocks' list not found to extract the clocks information") return @@ -103,7 +103,7 @@ class ClockDumps(RamParser) : self.disabled_clocks.append(output) def get_clk_providers(self): - clocks = self.ramdump.addr_lookup('of_clk_providers') + clocks = self.ramdump.address_of('of_clk_providers') if clocks is None: self.output_file.write("NOTE: 'of_clk_providers' list not found to extract the clocks information") return diff --git a/linux-ramdump-parser-v2/parsers/cpr3_info.py b/linux-ramdump-parser-v2/parsers/cpr3_info.py index fbcb5df5f18c4d38f4dc8682879ab6c1f36cbbb3..5700af7c9c35056a71d8945922ff0a22a927ef87 100644 --- a/linux-ramdump-parser-v2/parsers/cpr3_info.py +++ b/linux-ramdump-parser-v2/parsers/cpr3_info.py @@ -34,7 +34,7 @@ class CPR3Info(RamParser): def get_cpr(self): # Return if the cpr3_regulator_list is not available - cpr = self.ramdump.addr_lookup('cpr3_controller_list') + cpr = self.ramdump.address_of('cpr3_controller_list') if cpr is None: self.output_file.write( "NOTE: 'cpr3_regulator_list' list " + @@ -49,7 +49,7 @@ class CPR3Info(RamParser): c_w.walk(head, self.cpr_walker) def get_kryo(self): - kryo_addr = self.ramdump.addr_lookup('kryo_regulator_list') + kryo_addr = self.ramdump.address_of('kryo_regulator_list') if kryo_addr is None: print( "NOTE: 'kryo_regulator_list' list " + diff --git a/linux-ramdump-parser-v2/parsers/cpr_info.py b/linux-ramdump-parser-v2/parsers/cpr_info.py index d72b7f1c246c85c1dcdf93e576a00dd2bc03c5fd..66b5c53ce1a0150f7a80d38e09beac95abccccf7 100755 --- a/linux-ramdump-parser-v2/parsers/cpr_info.py +++ b/linux-ramdump-parser-v2/parsers/cpr_info.py @@ -1,4 +1,4 @@ -# Copyright (c) 2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -63,7 +63,7 @@ class CPRInfo(RamParser): def get_cpr(self): # Return if the cpr_regulator_list is not available - cpr = self.ramdump.addr_lookup('cpr_regulator_list') + cpr = self.ramdump.address_of('cpr_regulator_list') if cpr is None: self.output_file.write("NOTE: 'cpr_regulator_list' list not found to extract cpr information") return diff --git a/linux-ramdump-parser-v2/parsers/cpu_state.py b/linux-ramdump-parser-v2/parsers/cpu_state.py index 97be12ff0f339f02603f9e5db8fa33ad63895f01..a5906d719f4c17100a409afdc819dfb9a4360c6d 100644 --- a/linux-ramdump-parser-v2/parsers/cpu_state.py +++ b/linux-ramdump-parser-v2/parsers/cpu_state.py @@ -1,4 +1,4 @@ -# Copyright (c) 2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -19,7 +19,7 @@ from print_out import print_out_str class CpuState(RamParser): def parse(self): - regs_before_stop_addr = self.ramdump.addr_lookup('regs_before_stop') + regs_before_stop_addr = self.ramdump.address_of('regs_before_stop') if regs_before_stop_addr is None: print_out_str('regs_before_stop not found. Nothing to do.') return diff --git a/linux-ramdump-parser-v2/parsers/ddrcompare.py b/linux-ramdump-parser-v2/parsers/ddrcompare.py index 52a7afdadfa78ba5c319ebfed4b49f4c211e63b4..5a4866ffbdd41deb2f398b27a4d12d3cba8aaaf3 100644 --- a/linux-ramdump-parser-v2/parsers/ddrcompare.py +++ b/linux-ramdump-parser-v2/parsers/ddrcompare.py @@ -1,4 +1,4 @@ -# Copyright (c) 2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -66,10 +66,10 @@ class DDRCompare(RamParser) : self.output_file.write("No Corruption found in the lock values\n\n") def validate_sched_class(self, address): - sc_stop = self.ramdump.addr_lookup('stop_sched_class') - sc_rt = self.ramdump.addr_lookup('rt_sched_class') - sc_idle = self.ramdump.addr_lookup('idle_sched_class') - sc_fair = self.ramdump.addr_lookup('fair_sched_class') + sc_stop = self.ramdump.address_of('stop_sched_class') + sc_rt = self.ramdump.address_of('rt_sched_class') + sc_idle = self.ramdump.address_of('idle_sched_class') + sc_fair = self.ramdump.address_of('fair_sched_class') sched_class_offset = address + self.ramdump.field_offset('struct task_struct', 'sched_class'); sched_class_pointer = self.ramdump.read_word(sched_class_offset, True) @@ -136,7 +136,7 @@ class DDRCompare(RamParser) : self.output_file.write("Checking for task list corruption.\n") self.output_file.write("----------------------------------------------------------------------------------------\n") - init_task = self.ramdump.addr_lookup('init_task') + init_task = self.ramdump.address_of('init_task') self.output_file.write("Init Task Address = {0}\n".format(hex(init_task))) tasks_offset = self.ramdump.field_offset('struct task_struct', 'tasks') self.output_file.write("Task Offset {0}\n".format(hex(tasks_offset).rstrip("L"))) diff --git a/linux-ramdump-parser-v2/parsers/debug_image.py b/linux-ramdump-parser-v2/parsers/debug_image.py index d5f750a71421e2e19d89ed3fcce256c63b28b327..1d0d1efcc38c1ce56766705789ef0d49552ea2e8 100644 --- a/linux-ramdump-parser-v2/parsers/debug_image.py +++ b/linux-ramdump-parser-v2/parsers/debug_image.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -146,7 +146,7 @@ class DebugImage(RamParser): 'struct msm_client_dump', 'end_addr') client_dump_entry_size = self.ramdump.sizeof('struct msm_client_dump') - mem_dump_data = self.ramdump.addr_lookup('mem_dump_data') + mem_dump_data = self.ramdump.address_of('mem_dump_data') dump_table = self.ramdump.read_word( mem_dump_data + dump_table_ptr_offset) @@ -196,9 +196,9 @@ class DebugImage(RamParser): # use the mem_dump_data variable to detect if debug image feature was compiled in, # and memdump data variable for debug image v2 feature, rather than relying on # configuration option. - if self.ramdump.addr_lookup('mem_dump_data'): + if self.ramdump.address_of('mem_dump_data'): self.parse_dump() - elif self.ramdump.addr_lookup('memdump'): + elif self.ramdump.address_of('memdump'): regs = DebugImage_v2() regs.parse_dump_v2(self.ramdump) else: diff --git a/linux-ramdump-parser-v2/parsers/gpuinfo.py b/linux-ramdump-parser-v2/parsers/gpuinfo.py index 78a159f63731b6c0fb0d3d2ac4e72771ccfca3ef..4149f5ff2085e4744e17a34661be8e59ad30963e 100644 --- a/linux-ramdump-parser-v2/parsers/gpuinfo.py +++ b/linux-ramdump-parser-v2/parsers/gpuinfo.py @@ -1,4 +1,4 @@ -# Copyright (c) 2013, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -21,7 +21,7 @@ class GPUinfo(RamParser): print_out_str( 'No GPU support detected... Skipping GPUinfo parser.') return - adreno_dev_addr = self.ramdump.addr_lookup('device_3d0') + adreno_dev_addr = self.ramdump.address_of('device_3d0') kgsl_dev_addr = adreno_dev_addr + self.ramdump.field_offset( 'struct adreno_device', 'dev') snapshot = self.ramdump.read_word(kgsl_dev_addr + self.ramdump.field_offset( diff --git a/linux-ramdump-parser-v2/parsers/irqstate.py b/linux-ramdump-parser-v2/parsers/irqstate.py index ec428646a0797c9a0229a6a926a1e5762d245063..b9f8d3e754e8a5683c688bde66651a3c531f3a14 100755 --- a/linux-ramdump-parser-v2/parsers/irqstate.py +++ b/linux-ramdump-parser-v2/parsers/irqstate.py @@ -19,11 +19,11 @@ class IrqParse(RamParser): def print_irq_state_3_0(self, ram_dump): print_out_str( '=========================== IRQ STATE ===============================') - per_cpu_offset_addr = ram_dump.addr_lookup('__per_cpu_offset') - cpu_present_bits_addr = ram_dump.addr_lookup('cpu_present_bits') + per_cpu_offset_addr = ram_dump.address_of('__per_cpu_offset') + cpu_present_bits_addr = ram_dump.address_of('cpu_present_bits') cpu_present_bits = ram_dump.read_word(cpu_present_bits_addr) cpus = bin(cpu_present_bits).count('1') - irq_desc = ram_dump.addr_lookup('irq_desc') + irq_desc = ram_dump.address_of('irq_desc') foo, irq_desc_size = ram_dump.unwind_lookup(irq_desc, 1) h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq') irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq') @@ -130,8 +130,8 @@ class IrqParse(RamParser): chip_name_offset = ram_dump.field_offset('struct irq_chip', 'name') cpu_str = '' - irq_desc_tree = ram_dump.addr_lookup('irq_desc_tree') - nr_irqs = ram_dump.read_int(ram_dump.addr_lookup('nr_irqs')) + irq_desc_tree = ram_dump.address_of('irq_desc_tree') + nr_irqs = ram_dump.read_int(ram_dump.address_of('nr_irqs')) for i in ram_dump.iter_cpus(): cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.format(i)) @@ -173,7 +173,7 @@ class IrqParse(RamParser): '{0:4} {1} {2:30} {3:15} v.v (struct irq_desc *)0x{4:<20x}'.format(irqnum, irq_stats_str, name, chip_name, irq_desc)) def parse(self): - irq_desc = self.ramdump.addr_lookup('irq_desc') + irq_desc = self.ramdump.address_of('irq_desc') if self.ramdump.is_config_defined('CONFIG_SPARSE_IRQ'): self.print_irq_state_sparse_irq(self.ramdump) diff --git a/linux-ramdump-parser-v2/parsers/lpm.py b/linux-ramdump-parser-v2/parsers/lpm.py index 150ccc03ab8035f05033203a25d4327ece3c751e..5eb94cf28ae7612b8d249a5d83c618fa9988dcbf 100644 --- a/linux-ramdump-parser-v2/parsers/lpm.py +++ b/linux-ramdump-parser-v2/parsers/lpm.py @@ -25,7 +25,7 @@ class lpm(RamParser): self.lpm_debug = [] def get_bits(self): - bits_addr = self.ramdump.addr_lookup('cpu_possible_bits') + bits_addr = self.ramdump.address_of('cpu_possible_bits') if bits_addr is None: self.output.append("NOTE: 'cpu_possible_bits' not found") return @@ -37,7 +37,7 @@ class lpm(RamParser): self.output.append("{:10}{}:{}\n".format("", "CPU", i)) self.output.append("\n") - bits_addr = self.ramdump.addr_lookup('cpu_online_bits') + bits_addr = self.ramdump.address_of('cpu_online_bits') if bits_addr is None: self.output.append("NOTE: 'cpu_online_bits' not found") return @@ -129,7 +129,8 @@ class lpm(RamParser): self.clusters.append(lpm_cluster) def get_clusters(self): - lpm_root_node = self.ramdump.read_word(self.ramdump.addr_lookup('lpm_root_node'), True) + lpm_root_node = self.ramdump.read_word( + self.ramdump.address_of('lpm_root_node'), True) if lpm_root_node is None: self.output_file.write("NOTE: 'lpm_root_node' not found\n") return @@ -160,7 +161,7 @@ class lpm(RamParser): self.output.append("\n") - cpu_level_available = self.ramdump.addr_lookup('cpu_level_available') + cpu_level_available = self.ramdump.address_of('cpu_level_available') if cpu_level_available is None: self.output.append("NOTE: 'cpu_level_available' not found\n") return @@ -199,7 +200,7 @@ class lpm(RamParser): self.get_cluster_level_info(i) self.output.append("{}{}".format("-" * 81, "\n")) - cpu_cluster_base = self.ramdump.addr_lookup('cpu_cluster') + cpu_cluster_base = self.ramdump.address_of('cpu_cluster') if cpu_cluster_base is None: self.output.append("NOTE: 'cpu_cluster' not found\n") return @@ -259,7 +260,7 @@ class lpm(RamParser): for i in self.clusters: self.get_cluster_stats(i) - cpu_stats_base = self.ramdump.addr_lookup('cpu_stats') + cpu_stats_base = self.ramdump.address_of('cpu_stats') if cpu_stats_base is None: self.output.append("NOTE: 'cpu_stats' not found\n") return @@ -269,7 +270,7 @@ class lpm(RamParser): self.get_cpu_stats(cpu_stats_base, i) def get_debug_phys(self): - lpm_debug_phys = self.ramdump.addr_lookup('lpm_debug_phys') + lpm_debug_phys = self.ramdump.address_of('lpm_debug_phys') if lpm_debug_phys is None: self.output.append("NOTE: 'lpm_debug data' not found\n") return diff --git a/linux-ramdump-parser-v2/parsers/pagealloccorruption.py b/linux-ramdump-parser-v2/parsers/pagealloccorruption.py index 3ed78c0f76c17a9c6911b89ff951222d730a1c21..302d46da03c12fabe67c143c609d42781c1a4220 100755 --- a/linux-ramdump-parser-v2/parsers/pagealloccorruption.py +++ b/linux-ramdump-parser-v2/parsers/pagealloccorruption.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012,2014 The Linux Foundation. All rights reserved. +# Copyright (c) 2012,2014-2015 The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -21,7 +21,7 @@ class PageallocCorruption(RamParser): return out_corruption_summary = self.ramdump.open_file('page_corruption_summary.txt') out_pfn_ranges = self.ramdump.open_file('page_ranges.txt') - memblock_addr = self.ramdump.addr_lookup('memblock') + memblock_addr = self.ramdump.address_of('memblock') memblock_memory_offset = self.ramdump.field_offset('struct memblock', 'memory') memblock_memory_cnt_offset = self.ramdump.field_offset('struct memblock_type', 'cnt') cnt = self.ramdump.read_word(memblock_addr + memblock_memory_offset + memblock_memory_cnt_offset) diff --git a/linux-ramdump-parser-v2/parsers/pagetracking.py b/linux-ramdump-parser-v2/parsers/pagetracking.py index 54712f7c7a5d5bc108140875bb9d442c739cc989..c7d4d87d8ecc87ae3d1f4be6055d3387aa16e9d2 100644 --- a/linux-ramdump-parser-v2/parsers/pagetracking.py +++ b/linux-ramdump-parser-v2/parsers/pagetracking.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012,2014 The Linux Foundation. All rights reserved. +# Copyright (c) 2012,2014-2015 The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -20,8 +20,8 @@ class PageTracking(RamParser): if not self.ramdump.is_config_defined('CONFIG_PAGE_OWNER'): return - min_pfn_addr = self.ramdump.addr_lookup('min_low_pfn') - max_pfn_addr = self.ramdump.addr_lookup('max_pfn') + min_pfn_addr = self.ramdump.address_of('min_low_pfn') + max_pfn_addr = self.ramdump.address_of('max_pfn') min_pfn = self.ramdump.read_word( min_pfn_addr) + (self.ramdump.phys_offset >> 12) max_pfn = self.ramdump.read_word( diff --git a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py index ea6c245f1eecc30a669b0731b58899487661dbc6..ec5113ff29fa25141c6767c28655f4138441b496 100644 --- a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py +++ b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -22,7 +22,7 @@ class Pagetypeinfo(RamParser): free_area_size = ramdump.sizeof('struct free_area') free_list_offset = ramdump.field_offset( 'struct free_area', 'free_list') - migratetype_names = ramdump.addr_lookup('migratetype_names') + migratetype_names = ramdump.address_of('migratetype_names') zone_name_offset = ramdump.field_offset('struct zone', 'name') zname_addr = ramdump.read_word(zone + zone_name_offset) zname = ramdump.read_cstring(zname_addr, 12) @@ -82,7 +82,7 @@ class Pagetypeinfo(RamParser): migrate_types = self.ramdump.gdbmi.get_value_of('MIGRATE_TYPES') max_nr_zones = self.ramdump.gdbmi.get_value_of('__MAX_NR_ZONES') - contig_page_data = self.ramdump.addr_lookup('contig_page_data') + contig_page_data = self.ramdump.address_of('contig_page_data') node_zones_offset = self.ramdump.field_offset( 'struct pglist_data', 'node_zones') present_pages_offset = self.ramdump.field_offset( diff --git a/linux-ramdump-parser-v2/parsers/roareadiff.py b/linux-ramdump-parser-v2/parsers/roareadiff.py index 49df71ed8f633c57fb994d15b96d0ae3a59a09c0..3e3b96e14ec6cfa748bdd65c92d08f3e0f2cffa7 100644 --- a/linux-ramdump-parser-v2/parsers/roareadiff.py +++ b/linux-ramdump-parser-v2/parsers/roareadiff.py @@ -32,8 +32,6 @@ LUMP_SIZE=4096 class ROData(RamParser): def parse(self): - stext = self.ramdump.addr_lookup('stext') - etext = self.ramdump.addr_lookup('_etext') with self.ramdump.open_file('roareadiff.txt') as roarea_out: diff --git a/linux-ramdump-parser-v2/parsers/rtb.py b/linux-ramdump-parser-v2/parsers/rtb.py index 143d77ccdab600a374a3989ae6984483721a49bd..602012d80005ce9b72f56515dd176d4df25553de 100755 --- a/linux-ramdump-parser-v2/parsers/rtb.py +++ b/linux-ramdump-parser-v2/parsers/rtb.py @@ -144,7 +144,7 @@ class RTB(RamParser): return (index + step_size) & mask def parse(self): - rtb = self.ramdump.addr_lookup('msm_rtb') + rtb = self.ramdump.address_of('msm_rtb') if rtb is None: print_out_str( '[!] RTB was not enabled in this build. No RTB files will be generated') @@ -173,9 +173,9 @@ class RTB(RamParser): mask = self.ramdump.read_int(rtb + nentries_offset) - 1 if step_size == 1: last = self.ramdump.read_int( - self.ramdump.addr_lookup('msm_rtb_idx')) + self.ramdump.address_of('msm_rtb_idx')) else: - last = self.ramdump.read_int(self.ramdump.addr_lookup( + last = self.ramdump.read_int(self.ramdump.address_of( 'msm_rtb_idx_cpu'), cpu=i ) last = last & mask last_ptr = 0 diff --git a/linux-ramdump-parser-v2/parsers/runqueue.py b/linux-ramdump-parser-v2/parsers/runqueue.py index 41180b5435cef1309dd5687108539a1c39ae0f60..cf6031799edeea739b089d575a543b000561f56b 100644 --- a/linux-ramdump-parser-v2/parsers/runqueue.py +++ b/linux-ramdump-parser-v2/parsers/runqueue.py @@ -160,8 +160,8 @@ class RunQueues(RamParser): break def print_latest_callstack_maybe(self, task_addr): - text_start_addr = self.ramdump.addr_lookup('_text') - text_end_addr = self.ramdump.addr_lookup('_etext') + text_start_addr = self.ramdump.address_of('_text') + text_end_addr = self.ramdump.address_of('_etext') stack_offset = self.ramdump.field_offset('struct task_struct', 'stack') stack_addr = self.ramdump.read_word(task_addr + stack_offset) @@ -184,7 +184,7 @@ class RunQueues(RamParser): def parse(self): print_out_str( '======================= RUNQUEUE STATE ============================') - runqueues_addr = self.ramdump.addr_lookup('runqueues') + runqueues_addr = self.ramdump.address_of('runqueues') nr_running_offset = self.ramdump.field_offset( 'struct rq', 'nr_running') curr_offset = self.ramdump.field_offset('struct rq', 'curr') diff --git a/linux-ramdump-parser-v2/parsers/slabinfo.py b/linux-ramdump-parser-v2/parsers/slabinfo.py index 79dcae9a7b1ce5bf9058540e1d57c58ac7776b86..0f9a95a47ef65284798cb3c6568a742bbf580738 100755 --- a/linux-ramdump-parser-v2/parsers/slabinfo.py +++ b/linux-ramdump-parser-v2/parsers/slabinfo.py @@ -276,7 +276,7 @@ class Slabinfo(RamParser): return slab_lru_offset = self.ramdump.field_offset('struct page', 'lru') page_flags_offset = self.ramdump.field_offset('struct page', 'flags') - max_pfn_addr = self.ramdump.addr_lookup('max_pfn') + max_pfn_addr = self.ramdump.address_of('max_pfn') max_pfn = self.ramdump.read_word(max_pfn_addr) max_page = pfn_to_page(ramdump, max_pfn) while page != start: @@ -325,9 +325,8 @@ class Slabinfo(RamParser): # in the system because the code to do that correctly is a big pain. This will # need to be changed if we ever do NUMA properly. def validate_slab_cache(self, slab_out, map_fn): - original_slab = self.ramdump.addr_lookup('slab_caches') - per_cpu_offset = self.ramdump.addr_lookup('__per_cpu_offset') - cpu_present_bits_addr = self.ramdump.addr_lookup('cpu_present_bits') + original_slab = self.ramdump.address_of('slab_caches') + cpu_present_bits_addr = self.ramdump.address_of('cpu_present_bits') cpu_present_bits = self.ramdump.read_word(cpu_present_bits_addr) cpus = bin(cpu_present_bits).count('1') slab_list_offset = self.ramdump.field_offset( diff --git a/linux-ramdump-parser-v2/parsers/spm.py b/linux-ramdump-parser-v2/parsers/spm.py index ccbe3404c5b0a1684b4f2237a6da9125a74b035a..3816aea5ddc914978d5bb692aa8ec0a358e864ad 100644 --- a/linux-ramdump-parser-v2/parsers/spm.py +++ b/linux-ramdump-parser-v2/parsers/spm.py @@ -85,7 +85,8 @@ class spm(RamParser): self.output.append("{}{}".format("-" * 81, "\n\n")) def get_spm(self): - lpm_root_node = self.ramdump.read_word(self.ramdump.addr_lookup('lpm_root_node'), True) + lpm_root_node = self.ramdump.read_word( + self.ramdump.address_of('lpm_root_node'), True) if lpm_root_node is None: self.output_file.write("NOTE: 'lpm_root_node' not found\n") return diff --git a/linux-ramdump-parser-v2/parsers/taskdump.py b/linux-ramdump-parser-v2/parsers/taskdump.py index 96c3201a18c057e47d3ab42b9a7c362dcb125923..ae3918e00dc54345030b14d29ef50065adbc11b7 100755 --- a/linux-ramdump-parser-v2/parsers/taskdump.py +++ b/linux-ramdump-parser-v2/parsers/taskdump.py @@ -134,7 +134,7 @@ def do_dump_stacks(ramdump, check_for_panic=0): offset_state = ramdump.field_offset('struct task_struct', 'state') offset_exit_state = ramdump.field_offset( 'struct task_struct', 'exit_state') - init_addr = ramdump.addr_lookup('init_task') + init_addr = ramdump.address_of('init_task') init_next_task = init_addr + offset_tasks orig_init_next_task = init_next_task init_thread_group = init_addr + offset_thread_group @@ -175,7 +175,7 @@ def do_dump_task_timestamps(ramdump): offset_thread_group = ramdump.field_offset( 'struct task_struct', 'thread_group') offset_pid = ramdump.field_offset('struct task_struct', 'pid') - init_addr = ramdump.addr_lookup('init_task') + init_addr = ramdump.address_of('init_task') init_next_task = init_addr + offset_tasks orig_init_next_task = init_next_task init_thread_group = init_addr + offset_thread_group @@ -288,7 +288,7 @@ class DumpTasksTimeStamps(RamParser): class CheckForPanic(RamParser): def parse(self): - addr = self.ramdump.addr_lookup('in_panic') + addr = self.ramdump.address_of('in_panic') result = self.ramdump.read_word(addr) diff --git a/linux-ramdump-parser-v2/parsers/thermal_data.py b/linux-ramdump-parser-v2/parsers/thermal_data.py index b789fbffe639a9e82364ad5e5dfe78190e44208d..6f66209a8e7481343ab7b6096b23b668df47d96a 100755 --- a/linux-ramdump-parser-v2/parsers/thermal_data.py +++ b/linux-ramdump-parser-v2/parsers/thermal_data.py @@ -42,7 +42,7 @@ class Thermal_info(RamParser): sensor_mapping = [] self.output_file.write("Thermal sensor data \n") - tmdev = self.ramdump.addr_lookup('tmdev') + tmdev = self.ramdump.address_of('tmdev') tmdev_address = self.ramdump.read_word(tmdev, True) sensor_dbg_info_size = ram_dump.sizeof('struct tsens_sensor_dbg_info') sensor_dbg_info = self.ramdump.field_offset( @@ -51,7 +51,7 @@ class Thermal_info(RamParser): time_stamp = self.ramdump.field_offset( 'struct tsens_sensor_dbg_info', 'time_stmp') - cpus_sensor = self.ramdump.addr_lookup('cpus') + cpus_sensor = self.ramdump.address_of('cpus') cpus_sensor_size = ram_dump.sizeof('struct cpu_info') sensor_id_offset = self.ramdump.field_offset( 'struct cpu_info', diff --git a/linux-ramdump-parser-v2/parsers/timerlist.py b/linux-ramdump-parser-v2/parsers/timerlist.py index fd99a59d425c7adad61bfc044dca1b36c1b3c38c..042911282c0219e27b65bcbf65138452f93fe734 100755 --- a/linux-ramdump-parser-v2/parsers/timerlist.py +++ b/linux-ramdump-parser-v2/parsers/timerlist.py @@ -77,7 +77,7 @@ class TimerList(RamParser) : def get_timer_list(self): self.output_file.write("Timer List Dump\n\n") - tvec_bases_addr = self.ramdump.addr_lookup('tvec_bases') + tvec_bases_addr = self.ramdump.address_of('tvec_bases') for cpu in range(0, self.ramdump.get_num_cpus()): title = "CPU {0}".format(cpu) diff --git a/linux-ramdump-parser-v2/parsers/vmstat.py b/linux-ramdump-parser-v2/parsers/vmstat.py index 568bd488452769784f39d8fc9ab091fb0979d35b..e8498368aafe8f33bf215525817eb7f4a6307040 100644 --- a/linux-ramdump-parser-v2/parsers/vmstat.py +++ b/linux-ramdump-parser-v2/parsers/vmstat.py @@ -1,4 +1,4 @@ -# Copyright (c) 2013-2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -46,7 +46,7 @@ class ZoneInfo(RamParser): 'zone_stat_item', max_zone_stats) max_nr_zones = self.ramdump.gdbmi.get_value_of('__MAX_NR_ZONES') - contig_page_data = self.ramdump.addr_lookup('contig_page_data') + contig_page_data = self.ramdump.address_of('contig_page_data') node_zones_offset = self.ramdump.field_offset( 'struct pglist_data', 'node_zones') present_pages_offset = self.ramdump.field_offset( @@ -62,8 +62,9 @@ class ZoneInfo(RamParser): zone = zone + sizeofzone print_out_str('\nGlobal Stats') - vmstats_addr = self.ramdump.addr_lookup('vm_stat') + vmstats_addr = self.ramdump.address_of('vm_stat') for i in xrange(0, max_zone_stats): print_out_str('{0:30}: {1:8}'.format(vmstat_names[i], self.ramdump.read_word( self.ramdump.array_index(vmstats_addr, 'atomic_long_t', i)))) - print_out_str('Total system pages: {0}'.format(self.ramdump.read_word(self.ramdump.addr_lookup('totalram_pages')))) + print_out_str('Total system pages: {0}'.format(self.ramdump.read_word( + self.ramdump.address_of('totalram_pages')))) diff --git a/linux-ramdump-parser-v2/parsers/watchdog.py b/linux-ramdump-parser-v2/parsers/watchdog.py index 8aabef89bc5a4f7e6eca1e8e1fbb824e35eeae93..2aea1a0d5d1b5056fd13a5563ca70fcdd403991f 100755 --- a/linux-ramdump-parser-v2/parsers/watchdog.py +++ b/linux-ramdump-parser-v2/parsers/watchdog.py @@ -1,4 +1,4 @@ -# Copyright (c) 2012-2014, The Linux Foundation. All rights reserved. +# Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -306,7 +306,7 @@ class TZRegDump(RamParser): return True def parse(self): - if self.ramdump.addr_lookup('memdump'): + if self.ramdump.address_of('memdump'): return None ebi_addr = self.ramdump.read_tz_offset() @@ -328,11 +328,11 @@ class TZRegDump(RamParser): def get_wdog_timing(ramdump): - jiffies_addr = ramdump.addr_lookup('jiffies') - last_ns_addr = ramdump.addr_lookup('last_ns') - last_pet_addr = ramdump.addr_lookup('last_pet') - pet_delay_time_addr = ramdump.addr_lookup('delay_time') - dogstruct_addr = ramdump.addr_lookup('dogwork_struct') + jiffies_addr = ramdump.address_of('jiffies') + last_ns_addr = ramdump.address_of('last_ns') + last_pet_addr = ramdump.address_of('last_pet') + pet_delay_time_addr = ramdump.address_of('delay_time') + dogstruct_addr = ramdump.address_of('dogwork_struct') timer_offset = ramdump.field_offset('struct delayed_work', 'timer') timer_expires_offset = ramdump.field_offset( diff --git a/linux-ramdump-parser-v2/parsers/workqueue.py b/linux-ramdump-parser-v2/parsers/workqueue.py index 5df616d28c099852c8b807d7dfa9dec76d25b911..21c7b920fb72f79a9c3aa65598684d2783e42331 100644 --- a/linux-ramdump-parser-v2/parsers/workqueue.py +++ b/linux-ramdump-parser-v2/parsers/workqueue.py @@ -19,9 +19,8 @@ from parser_util import register_parser, RamParser class Workqueues(RamParser): def print_workqueue_state_3_0(self, ram_dump): - per_cpu_offset_addr = ram_dump.addr_lookup('__per_cpu_offset') - global_cwq_sym_addr = ram_dump.addr_lookup('global_cwq') - system_wq_addr = ram_dump.addr_lookup('system_long_wq') + per_cpu_offset_addr = ram_dump.address_of('__per_cpu_offset') + global_cwq_sym_addr = ram_dump.address_of('global_cwq') idle_list_offset = ram_dump.field_offset( 'struct global_cwq', 'idle_list') @@ -41,7 +40,7 @@ class Workqueues(RamParser): 'struct worker', 'current_work') cpu_wq_offset = ram_dump.field_offset( 'struct workqueue_struct', 'cpu_wq') - unbound_gcwq_addr = ram_dump.addr_lookup('unbound_global_cwq') + unbound_gcwq_addr = ram_dump.address_of('unbound_global_cwq') if per_cpu_offset_addr is None: per_cpu_offset0 = 0 @@ -188,8 +187,8 @@ class Workqueues(RamParser): break def print_workqueue_state_3_7(self, ram_dump): - per_cpu_offset_addr = ram_dump.addr_lookup('__per_cpu_offset') - global_cwq_sym_addr = ram_dump.addr_lookup('global_cwq') + per_cpu_offset_addr = ram_dump.address_of('__per_cpu_offset') + global_cwq_sym_addr = ram_dump.address_of('global_cwq') pools_offset = ram_dump.field_offset('struct global_cwq', 'pools') worklist_offset = ram_dump.field_offset( @@ -213,8 +212,7 @@ class Workqueues(RamParser): worker_pool_size = ram_dump.sizeof('struct worker_pool') pending_work_offset = ram_dump.field_offset( 'struct worker_pool', 'worklist') - unbound_gcwq_addr = ram_dump.addr_lookup('unbound_global_cwq') - cpu_present_bits_addr = ram_dump.addr_lookup('cpu_present_bits') + cpu_present_bits_addr = ram_dump.address_of('cpu_present_bits') cpu_present_bits = ram_dump.read_word(cpu_present_bits_addr) cpus = bin(cpu_present_bits).count('1') @@ -385,7 +383,7 @@ class Workqueues(RamParser): pass def print_workqueue_state_3_10(self, ram_dump): - cpu_worker_pools_addr = ram_dump.addr_lookup('cpu_worker_pools') + cpu_worker_pools_addr = ram_dump.address_of('cpu_worker_pools') busy_hash_offset = ram_dump.field_offset( 'struct worker_pool', 'busy_hash') diff --git a/linux-ramdump-parser-v2/qdss.py b/linux-ramdump-parser-v2/qdss.py index f073ac7e972e1d603ba1b62b3891a1f2a0eab19e..08e2cf163e001adc2adc2c69919611c22ce3bf8f 100755 --- a/linux-ramdump-parser-v2/qdss.py +++ b/linux-ramdump-parser-v2/qdss.py @@ -441,7 +441,7 @@ class QDSSDump(): dbgui_out.write('{0} ({1}): {2:x}\n'.format( a, name, ram_dump.read_u32(self.dbgui_start + offset, False))) - addr = ram_dump.read_word(ram_dump.addr_lookup('dbgui_drvdata')) + addr = ram_dump.read_word(ram_dump.address_of('dbgui_drvdata')) addr_offset_offset = ram_dump.field_offset('struct dbgui_drvdata', 'addr_offset') data_offset_offset = ram_dump.field_offset('struct dbgui_drvdata', 'data_offset') size_offset = ram_dump.field_offset('struct dbgui_drvdata', 'size') diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index eba0b6b17b23d31ae33e346a64034194af713ca6..5abe6a6e2d35cbf73d9dae15e5498f8c050f6a10 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -67,8 +67,8 @@ class RamDump(): self.index = 0 def __init__(self, ramdump): - start = ramdump.addr_lookup('__start_unwind_idx') - end = ramdump.addr_lookup('__stop_unwind_idx') + start = ramdump.address_of('__start_unwind_idx') + end = ramdump.address_of('__stop_unwind_idx') self.ramdump = ramdump if (start is None) or (end is None): if ramdump.arm64: @@ -484,7 +484,7 @@ class RamDump(): # extra 4k is needed for LPAE. If it's 0x5000 below # PAGE_OFFSET + TEXT_OFFSET then we know we're using LPAE. For # non-LPAE it should be 0x4000 below PAGE_OFFSET + TEXT_OFFSET - swapper_pg_dir = self.addr_lookup('swapper_pg_dir') + swapper_pg_dir = self.address_of('swapper_pg_dir') if swapper_pg_dir is None: print_out_str('!!! Could not get the swapper page directory!') print_out_str( @@ -492,7 +492,7 @@ class RamDump(): print_out_str('!!! Exiting now') sys.exit(1) self.swapper_pg_dir_addr = swapper_pg_dir - self.page_offset - self.kernel_text_offset = self.addr_lookup('stext') - self.page_offset + self.kernel_text_offset = self.address_of('stext') - self.page_offset pg_dir_size = self.kernel_text_offset - self.swapper_pg_dir_addr if self.arm64: print_out_str('Using 64bit MMU') @@ -566,7 +566,7 @@ class RamDump(): return f def get_config(self): - kconfig_addr = self.addr_lookup('kernel_config_data') + kconfig_addr = self.address_of('kernel_config_data') if kconfig_addr is None: return kconfig_size = self.sizeof('kernel_config_data') @@ -605,7 +605,7 @@ class RamDump(): return s in self.config def get_version(self): - banner_addr = self.addr_lookup('linux_banner') + banner_addr = self.address_of('linux_banner') if banner_addr is not None: # Don't try virt to phys yet, compute manually banner_addr = banner_addr - self.page_offset + self.phys_offset @@ -632,7 +632,7 @@ class RamDump(): return False def print_command_line(self): - command_addr = self.addr_lookup('saved_command_line') + command_addr = self.address_of('saved_command_line') if command_addr is not None: command_addr = self.read_word(command_addr) b = self.read_cstring(command_addr, 2048) @@ -965,7 +965,7 @@ class RamDump(): """ if not isinstance(virt_or_name, basestring): return virt_or_name - return self.addr_lookup(virt_or_name) + return self.address_of(virt_or_name) def virt_to_phys(self, virt_or_name): """Does a virtual-to-physical address lookup of the virtual address or @@ -981,7 +981,7 @@ class RamDump(): self.lookup_table.append((int(s[0], 16), s[2].rstrip())) stream.close() - def addr_lookup(self, symbol): + def address_of(self, symbol): try: return self.gdbmi.address_of(symbol) except gdbmi.GdbMIException: @@ -1012,7 +1012,7 @@ class RamDump(): The following: - my_arr_addr = dump.addr_lookup("my_arr") + my_arr_addr = dump.address_of("my_arr") dump.read_word(dump.array_index(my_arr_addr, "int", 2)) will return 42. @@ -1209,7 +1209,8 @@ class RamDump(): Example (intentionally not in doctest format since it would require a specific dump to be loaded to pass as a doctest): - PY>> print(dump.hexdump(dump.addr_lookup('linux_banner') - 0x100, 0x200)) + PY>> addr = dump.address_of('linux_banner') - 0x100 + print(dump.hexdump(addr, 0x200)) c0afff6b: 0000 0000 0000 0000 0000 0000 0000 0000 ................ c0afff7b: 0000 0000 0000 0000 0000 0000 0000 0000 ................ c0afff8b: 0000 0000 0000 0000 0000 0000 0000 0000 ................ @@ -1256,7 +1257,7 @@ class RamDump(): return ret def per_cpu_offset(self, cpu): - per_cpu_offset_addr = self.addr_lookup('__per_cpu_offset') + per_cpu_offset_addr = self.address_of('__per_cpu_offset') if per_cpu_offset_addr is None: return 0 per_cpu_offset_addr_indexed = self.array_index( @@ -1264,7 +1265,7 @@ class RamDump(): return self.read_word(per_cpu_offset_addr_indexed) def get_num_cpus(self): - cpu_present_bits_addr = self.addr_lookup('cpu_present_bits') + cpu_present_bits_addr = self.address_of('cpu_present_bits') cpu_present_bits = self.read_word(cpu_present_bits_addr) return bin(cpu_present_bits).count('1')