From 748b92b8c7cebe1960d648b13bfe162b477506e7 Mon Sep 17 00:00:00 2001 From: pompolic <pompolic@special-circumstanc.es> Date: Fri, 15 Apr 2022 18:32:31 +0200 Subject: [PATCH] Add more status lines --- gdb-port/breakpoint-manager.py | 39 +++++++++++++++++++++ gdb-port/commands.py | 10 ++++++ gdb-port/parser-name-instrumentation-gdb.py | 2 +- gdb-port/utility-commands.py | 5 +++ 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/gdb-port/breakpoint-manager.py b/gdb-port/breakpoint-manager.py index bc4314f..9ec9db8 100644 --- a/gdb-port/breakpoint-manager.py +++ b/gdb-port/breakpoint-manager.py @@ -47,13 +47,16 @@ class BreakpointManager: def set_h_rule_breakpoints(self): for func in self.H_RULE_FUNCTIONS: func_retq = self.locate_retq(func) + print("::: Setting breakpoint in " + func) self.h_rule_breakpoints.append(HRuleBreakpoint("*" + hex(func_retq))) def set_hammer_retq_breakpoints(self): plp_retq = self.locate_retq("perform_lowlevel_parse") + print("::: Setting breakpoint in perform_lowlevel_parse") perform_lowlevel_parse_ret = PerformLowLevelParseRetBreakpoint("*" + hex(plp_retq)) self.hammer_retq_breakpoints.append(perform_lowlevel_parse_ret) hpp_retq = self.locate_retq("h_packrat_parse") + print("::: Setting breakpoint in h_packrat_parse") h_packrat_parse_ret = HPackratParseRetBreakpoint("*" + hex(hpp_retq)) self.hammer_retq_breakpoints.append(h_packrat_parse_ret) return self.hammer_retq_breakpoints @@ -78,37 +81,69 @@ class BreakpointManager: return results[0] def set_parser_virtual_breakpoints(self): + print("::: parse_action") self.parse_action = ParserVirtualBreakpoint("parse_action") + print("::: parse_choice") self.parse_choice = ParserVirtualBreakpoint("parse_choice") + print("::: parse_sequence") self.parse_sequence = ParserVirtualBreakpoint("parse_sequence") + print("::: parse_difference") self.parse_difference = ParserVirtualBreakpoint("parse_difference") + print("::: parse_many") self.parse_many = ParserVirtualBreakpoint("parse_many") + print("::: parse_and") self.parse_and = ParserVirtualBreakpoint("parse_and") + print("::: parse_attr_bool") self.parse_attr_bool = ParserVirtualBreakpoint("parse_attr_bool") + print("::: parse_bind") self.parse_bind = ParserVirtualBreakpoint("parse_bind") + print("::: parse_bits") self.parse_bits = ParserVirtualBreakpoint("parse_bits") + print("::: parse_butnot") self.parse_butnot = ParserVirtualBreakpoint("parse_butnot") + print("::: parse_charset") self.parse_charset = ParserVirtualBreakpoint("parse_charset") + print("::: parse_ch") self.parse_ch = ParserVirtualBreakpoint("parse_ch") + print("::: parse_end") self.parse_end = ParserVirtualBreakpoint("parse_end") + print("::: parse_endianness") self.parse_endianness = ParserVirtualBreakpoint("parse_endianness") + print("::: parse_epsilon") self.parse_epsilon = ParserVirtualBreakpoint("parse_epsilon") + print("::: parse_ignore") self.parse_ignore = ParserVirtualBreakpoint("parse_ignore") + print("::: parse_ignoreseq") self.parse_ignoreseq = ParserVirtualBreakpoint("parse_ignoreseq") + print("::: parse_indirect") self.parse_indirect = ParserVirtualBreakpoint("parse_indirect") + print("::: parse_int_range") self.parse_int_range = ParserVirtualBreakpoint("parse_int_range") + print("::: parse_not") self.parse_not = ParserVirtualBreakpoint("parse_not") + print("::: parse_nothing") self.parse_nothing = ParserVirtualBreakpoint("parse_nothing") + print("::: parse_optional") self.parse_optional = ParserVirtualBreakpoint("parse_optional") + print("::: parse_permutation") self.parse_permutation = ParserVirtualBreakpoint("parse_permutation") + print("::: parse_skip") self.parse_skip = ParserVirtualBreakpoint("parse_skip") + print("::: parse_seek") self.parse_seek = ParserVirtualBreakpoint("parse_seek") + print("::: parse_tell") self.parse_tell = ParserVirtualBreakpoint("parse_tell") + print("::: parse_token") self.parse_token = ParserVirtualBreakpoint("parse_token") + print("::: parse_unimplemented") self.parse_unimplemented = ParserVirtualBreakpoint("parse_unimplemented") + print("::: parse_put") self.parse_put = ParserVirtualBreakpoint("parse_put") + print("::: parse_get") self.parse_get = ParserVirtualBreakpoint("parse_get") + print("::: parse_whitespace") self.parse_whitespace = ParserVirtualBreakpoint("parse_whitespace") + print("::: parse_xor") self.parse_xor = ParserVirtualBreakpoint("parse_xor") def del_parser_virtual_breakpoints(self): @@ -153,9 +188,13 @@ class BreakpointManager: self.init_parser_retq.delete() def set_hammer_breakpoints(self): + print("::: h_do_parse") self.h_do_parse = HDoParseBreakpoint("h_do_parse") + print("::: h_packrat_parse") self.h_packrat_parse = HPackratParseBreakpoint("h_packrat_parse") + print("::: perform_lowlevel_parse") self.perform_lowlevel_parse = PerformLowLevelParseBreakpoint("perform_lowlevel_parse") + print("::: h_arena_malloc_raw") self.h_arena_malloc_raw = HArenaMallocRawBreakpoint("h_arena_malloc_raw") def del_hammer_breakpoints(self): diff --git a/gdb-port/commands.py b/gdb-port/commands.py index c78fd57..453ccbe 100644 --- a/gdb-port/commands.py +++ b/gdb-port/commands.py @@ -1,6 +1,9 @@ +print(": Registering basic commands") + class HammerParserBacktrace(gdb.Command): def __init__(self): super(HammerParserBacktrace, self).__init__ ("hammer-parser-backtrace", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-backtrace") def invoke(self, arg, from_tty): parserstack = top_level_parse.peek_parserstack().p_stack @@ -33,6 +36,7 @@ HammerParserBacktrace() class HammerParserMemUse(gdb.Command): def __init__(self): super(HammerParserMemUse, self).__init__("hammer-parser-mem-use", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-mem-use") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -54,6 +58,7 @@ HammerParserMemUse() class HammerParserMemUseName(gdb.Command): def __init__(self): super(HammerParserMemUseName, self).__init__("hammer-parser-mem-use-name", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-mem-use-name") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -72,6 +77,7 @@ HammerParserMemUseName() class HammerParserTopSingleArenaMem(gdb.Command): def __init__(self): super(HammerParserTopSingleArenaMem, self).__init__("hammer-parser-top-single-arena-mem", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-top-single-area-mem") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -84,6 +90,7 @@ HammerParserTopSingleArenaMem() class HammerParserTopTotalArenaMem(gdb.Command): def __init__(self): super(HammerParserTopTotalArenaMem, self).__init__("hammer-parser-top-total-arena-mem", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-top-total-arena-mem") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -100,6 +107,7 @@ HammerParserTopTotalArenaMem() class HammerParserPreviewInput(gdb.Command): def __init__(self): super(HammerParserPreviewInput, self).__init__("hammer-parser-preview-input", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-preview-input") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -111,6 +119,7 @@ HammerParserPreviewInput() class HammerParserAverageMem(gdb.Command): def __init__(self): super(HammerParserAverageMem, self).__init__("hammer-parser-average-mem", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-average-mem") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -124,6 +133,7 @@ HammerParserAverageMem() class HammerParserCurrentEnv(gdb.Command): def __init__(self): super(HammerParserCurrentEnv, self).__init__("hammer-parser-current-env", gdb.COMMAND_OBSCURE) + print(":: hammer-parser-current-env") def invoke(self, arg, from_tty): p = top_level_parse.h_do_parse_parser diff --git a/gdb-port/parser-name-instrumentation-gdb.py b/gdb-port/parser-name-instrumentation-gdb.py index ec1067a..a4b5d3f 100644 --- a/gdb-port/parser-name-instrumentation-gdb.py +++ b/gdb-port/parser-name-instrumentation-gdb.py @@ -400,7 +400,7 @@ class PDFMainBreakpoint(gdb.Breakpoint): # GDB parameters # TODO: hammer parameter prefix -print(": Registering commands") +print(": Registering parameters and commands") class ExtendedParseStepInfo(gdb.Parameter): """Controls whether to display parser stack and input preview on stepping the parse.""" diff --git a/gdb-port/utility-commands.py b/gdb-port/utility-commands.py index 397b2e7..ae02fba 100644 --- a/gdb-port/utility-commands.py +++ b/gdb-port/utility-commands.py @@ -1,8 +1,11 @@ +print(": Registering utility commands") + # Stops the inferior once the parse reaches (or goes past) a particular input position # HDoParseBreakpoint checks the position parameter to determine whether to stop execution class HammerParseStopAtInputPos(gdb.Command): def __init__(self): super(HammerParseStopAtInputPos, self).__init__ ("hammer-parse-stop-at-pos", gdb.COMMAND_OBSCURE) + print(":: hammer-parse-stop-at-pos") def invoke(self, arg, from_tty): gdb.set_convenience_variable("hammer_stop_pos", int(arg)) @@ -14,6 +17,7 @@ HammerParseStopAtInputPos() class HammerParseStep(gdb.Command): def __init__(self): super(HammerParseStep, self).__init__ ("hammer-parse-step", gdb.COMMAND_OBSCURE) + print(":: hammer-parse-stop") def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) @@ -63,6 +67,7 @@ HammerParseStep() class HammerParseContinue(gdb.Command): def __init__(self): super(HammerParseContinue, self).__init__ ("hammer-parse-continue", gdb.COMMAND_OBSCURE) + print(":: hammer-parse-continue") def invoke(self, arg, from_tty): gdb.execute("continue") -- GitLab