lkml.org 
[lkml]   [2016]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/18] scripts/gdb: Support !CONFIG_MODULES gracefully
    Date
    From: Kieran Bingham <kieran.bingham@linaro.org>

    If CONFIG_MODULES is not enabled, lx-lsmod tries to find
    a non-existent symbol and generates an unfriendly traceback:

    (gdb) lx-lsmod
    Address Module Size Used by
    Traceback (most recent call last):
    File "scripts/gdb/linux/modules.py", line 75, in invoke
    for module in module_list():
    File "scripts/gdb/linux/modules.py", line 24, in module_list
    module_ptr_type = module_type.get_type().pointer()
    File "scripts/gdb/linux/utils.py", line 28, in get_type
    self._type = gdb.lookup_type(self._name)
    gdb.error: No struct type named module.
    Error occurred in Python command: No struct type named module.

    Catch the error and return an empty module_list() for a clean command
    output as follows:

    (gdb) lx-lsmod
    Address Module Size Used by
    (gdb)

    Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    ---
    scripts/gdb/linux/modules.py | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/scripts/gdb/linux/modules.py b/scripts/gdb/linux/modules.py
    index 62557dd..441b2323 100644
    --- a/scripts/gdb/linux/modules.py
    +++ b/scripts/gdb/linux/modules.py
    @@ -21,8 +21,11 @@ module_type = utils.CachedType("struct module")

    def module_list():
    global module_type
    + modules = utils.gdb_eval_or_none("modules")
    + if modules is None:
    + return
    +
    module_ptr_type = module_type.get_type().pointer()
    - modules = gdb.parse_and_eval("modules")

    for module in lists.list_for_each_entry(modules, module_ptr_type, "list"):
    yield module
    --
    2.1.4
    \
     
     \ /
      Last update: 2016-05-10 10:01    [W:2.405 / U:0.296 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site