From 8416b9e5bd14a4f8cf6f95c373219604f205f031 Mon Sep 17 00:00:00 2001 From: Mitchel Humpherys <mitchelh@codeaurora.org> Date: Fri, 4 Sep 2015 14:40:43 -0700 Subject: [PATCH] lrdp-v2: Introduce function to read C strings from structures In lieu of a more generic way of reading fields from structures, introduce another specialized structure field reader for reading C strings. Change-Id: I6aba392f59179fa70a065a08f19a694e87f683dd --- linux-ramdump-parser-v2/ramdump.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index 5abe6a6..021503b 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -1164,6 +1164,16 @@ class RamDump(): field)) return None + def read_structure_cstring(self, addr_or_name, struct_name, field, + max_length=100): + """reads a C string from a structure field. The C string field will be + dereferenced before reading, so it should be a `char *', not a + `char []'. + """ + virt = self.resolve_virt(addr_or_name) + cstring_addr = virt + self.field_offset(struct_name, field) + return self.read_cstring(self.read_pointer(cstring_addr), max_length) + def read_cstring(self, addr_or_name, max_length, virtual=True, cpu=None): addr = addr_or_name if virtual: -- GitLab