Commit e97c4a27 authored by Ilya Leoshkevich's avatar Ilya Leoshkevich Committed by Andrew Morton
Browse files

scripts/gdb/symbols: factor out pagination_off()

Move the code that turns off pagination into a separate function.  It will
be useful later in order to prevent hangs when loading symbols for kernel
image in physical memory during s390 early boot.

Link: https://lkml.kernel.org/r/20250515155811.114392-3-iii@linux.ibm.com


Signed-off-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Kieran Bingham <kbingham@kernel.org>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 3545414f
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -38,10 +38,7 @@ if hasattr(gdb, 'Breakpoint'):
            # Disable pagination while reporting symbol (re-)loading.
            # The console input is blocked in this context so that we would
            # get stuck waiting for the user to acknowledge paged output.
            show_pagination = gdb.execute("show pagination", to_string=True)
            pagination = show_pagination.endswith("on.\n")
            gdb.execute("set pagination off")

            with utils.pagination_off():
                if module_name in cmd.loaded_modules:
                    gdb.write("refreshing all symbols to reload module "
                              "'{0}'\n".format(module_name))
@@ -49,9 +46,6 @@ if hasattr(gdb, 'Breakpoint'):
                else:
                    cmd.load_module_symbols(module)

            # restore pagination state
            gdb.execute("set pagination %s" % ("on" if pagination else "off"))

            return False


+11 −0
Original line number Diff line number Diff line
@@ -260,3 +260,14 @@ def get_vmlinux():
            obj.filename.endswith('vmlinux.debug')):
            vmlinux = obj.filename
    return vmlinux


@contextlib.contextmanager
def pagination_off():
    show_pagination = gdb.execute("show pagination", to_string=True)
    pagination = show_pagination.endswith("on.\n")
    gdb.execute("set pagination off")
    try:
        yield
    finally:
        gdb.execute("set pagination %s" % ("on" if pagination else "off"))