Commit a9c5bcfa authored by Jan Kiszka's avatar Jan Kiszka Committed by Linus Torvalds

scripts/gdb: disable pagination while printing from breakpoint handler

While reporting the (refreshed) list of modules on automatic updates we
may hit the page boundary of the output console and cause a stop if
pagination is enabled.  However, gdb does not accept user input while
running over the breakpoint handler.  So we get stuck, and the user is
forced to interrupt gdb.

Resolve this by disabling pagination during automatic symbol updates.  We
restore the user's configuration once done.
Signed-off-by: default avatarJan 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 158daf16
...@@ -34,12 +34,23 @@ if hasattr(gdb, 'Breakpoint'): ...@@ -34,12 +34,23 @@ if hasattr(gdb, 'Breakpoint'):
# enforce update if object file is not found # enforce update if object file is not found
cmd.module_files_updated = False cmd.module_files_updated = False
# 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")
if module_name in cmd.loaded_modules: if module_name in cmd.loaded_modules:
gdb.write("refreshing all symbols to reload module " gdb.write("refreshing all symbols to reload module "
"'{0}'\n".format(module_name)) "'{0}'\n".format(module_name))
cmd.load_all_symbols() cmd.load_all_symbols()
else: else:
cmd.load_module_symbols(module) cmd.load_module_symbols(module)
# restore pagination state
gdb.execute("set pagination %s" % ("on" if pagination else "off"))
return False return False
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment