diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2019-07-20 07:07:56 +0300 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2019-07-20 07:07:56 +0300 | 
| commit | c39f2d9db0fd81ea20bb5cce9b3f082ca63753e2 (patch) | |
| tree | 8e80ed5601b4fb8880a2ca8e08802bc8b1f850bd /scripts/gdb/linux/config.py | |
| parent | 597473720f4dc69749542bfcfed4a927a43d935e (diff) | |
| parent | 771a081e44a9baa1991ef011cc453ef425591740 (diff) | |
| download | linux-c39f2d9db0fd81ea20bb5cce9b3f082ca63753e2.tar.xz | |
Merge branch 'next' into for-linus
Prepare second round of input updates for 5.3 merge window.
Diffstat (limited to 'scripts/gdb/linux/config.py')
| -rw-r--r-- | scripts/gdb/linux/config.py | 44 | 
1 files changed, 44 insertions, 0 deletions
| diff --git a/scripts/gdb/linux/config.py b/scripts/gdb/linux/config.py new file mode 100644 index 000000000000..90e1565b1967 --- /dev/null +++ b/scripts/gdb/linux/config.py @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright 2019 Google LLC. + +import gdb +import zlib + +from linux import utils + + +class LxConfigDump(gdb.Command): +    """Output kernel config to the filename specified as the command +       argument. Equivalent to 'zcat /proc/config.gz > config.txt' on +       a running target""" + +    def __init__(self): +        super(LxConfigDump, self).__init__("lx-configdump", gdb.COMMAND_DATA, +                                           gdb.COMPLETE_FILENAME) + +    def invoke(self, arg, from_tty): +        if len(arg) == 0: +            filename = "config.txt" +        else: +            filename = arg + +        try: +            py_config_ptr = gdb.parse_and_eval("kernel_config_data + 8") +            py_config_size = gdb.parse_and_eval( +                    "sizeof(kernel_config_data) - 1 - 8 * 2") +        except gdb.error as e: +            raise gdb.GdbError("Can't find config, enable CONFIG_IKCONFIG?") + +        inf = gdb.inferiors()[0] +        zconfig_buf = utils.read_memoryview(inf, py_config_ptr, +                                            py_config_size).tobytes() + +        config_buf = zlib.decompress(zconfig_buf, 16) +        with open(filename, 'wb') as f: +            f.write(config_buf) + +        gdb.write("Dumped config to " + filename + "\n") + + +LxConfigDump() | 
