lkml.org 
[lkml]   [2013]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 08/21] scripts/gdb: Add internal helper and convenience function to look up a module
    Date
    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>
    ---
    scripts/gdb/linux/modules.py | 28 ++++++++++++++++++++++++++++
    scripts/gdb/vmlinux-gdb.py | 1 +
    2 files changed, 29 insertions(+)

    diff --git a/scripts/gdb/linux/modules.py b/scripts/gdb/linux/modules.py
    index 8a65c3d..531f763 100644
    --- a/scripts/gdb/linux/modules.py
    +++ b/scripts/gdb/linux/modules.py
    @@ -37,3 +37,31 @@ class ModuleList:
    return utils.container_of(entry, self.module_ptr_type, "list")
    else:
    raise StopIteration
    +
    +
    +def find_module_by_name(name):
    + for module in ModuleList():
    + if module['name'].string() == name:
    + return module
    + return None
    +
    +
    +class LxModule(gdb.Function):
    + """Find module by name and return the module variable.
    +
    +$lx_module("MODULE"): Given the name MODULE, iterate over all loaded modules
    +of the target and return that module variable which MODULE matches."""
    +
    + def __init__(self):
    + super(LxModule, self).__init__("lx_module")
    +
    + def invoke(self, mod_name):
    + mod_name = mod_name.string()
    + module = find_module_by_name(mod_name)
    + if module:
    + return module.dereference()
    + else:
    + raise gdb.GdbError("Unable to find MODULE " + mod_name)
    +
    +
    +LxModule()
    diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
    index 0b0faa4..cf2e716 100644
    --- a/scripts/gdb/vmlinux-gdb.py
    +++ b/scripts/gdb/vmlinux-gdb.py
    @@ -24,3 +24,4 @@ except:
    else:
    import linux.utils
    import linux.symbols
    + import linux.modules
    --
    1.8.1.1.298.ge7eed54


    \
     
     \ /
      Last update: 2013-11-12 09:01    [W:4.209 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site