diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2015-02-17 16:46:55 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-17 17:34:53 -0500 |
commit | 7b599ef535a7faef53034fb7fb150b61057efe28 (patch) | |
tree | 9aa4adc57d1fc4cbd42126c7b606f9588ae93eee /scripts/gdb | |
parent | 82b41e3d6113291258c65281144bce946553dfed (diff) |
scripts/gdb: add internal helper and convenience function to look up a module
Add the internal helper get_module_by_name to obtain the module structure
corresponding to the given name. Also export this service as a
convenience function.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Wessel <jason.wessel@windriver.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Borislav Petkov <bp@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts/gdb')
-rw-r--r-- | scripts/gdb/linux/modules.py | 28 | ||||
-rw-r--r-- | scripts/gdb/vmlinux-gdb.py | 1 |
2 files changed, 29 insertions, 0 deletions
diff --git a/scripts/gdb/linux/modules.py b/scripts/gdb/linux/modules.py index 8a65c3d5eecb..531f7632d03f 100644 --- a/scripts/gdb/linux/modules.py +++ b/scripts/gdb/linux/modules.py | |||
@@ -37,3 +37,31 @@ class ModuleList: | |||
37 | return utils.container_of(entry, self.module_ptr_type, "list") | 37 | return utils.container_of(entry, self.module_ptr_type, "list") |
38 | else: | 38 | else: |
39 | raise StopIteration | 39 | raise StopIteration |
40 | |||
41 | |||
42 | def find_module_by_name(name): | ||
43 | for module in ModuleList(): | ||
44 | if module['name'].string() == name: | ||
45 | return module | ||
46 | return None | ||
47 | |||
48 | |||
49 | class LxModule(gdb.Function): | ||
50 | """Find module by name and return the module variable. | ||
51 | |||
52 | $lx_module("MODULE"): Given the name MODULE, iterate over all loaded modules | ||
53 | of the target and return that module variable which MODULE matches.""" | ||
54 | |||
55 | def __init__(self): | ||
56 | super(LxModule, self).__init__("lx_module") | ||
57 | |||
58 | def invoke(self, mod_name): | ||
59 | mod_name = mod_name.string() | ||
60 | module = find_module_by_name(mod_name) | ||
61 | if module: | ||
62 | return module.dereference() | ||
63 | else: | ||
64 | raise gdb.GdbError("Unable to find MODULE " + mod_name) | ||
65 | |||
66 | |||
67 | LxModule() | ||
diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py index 0b0faa4cb5a0..cf2e7161b280 100644 --- a/scripts/gdb/vmlinux-gdb.py +++ b/scripts/gdb/vmlinux-gdb.py | |||
@@ -24,3 +24,4 @@ except: | |||
24 | else: | 24 | else: |
25 | import linux.utils | 25 | import linux.utils |
26 | import linux.symbols | 26 | import linux.symbols |
27 | import linux.modules | ||