| 1234567891011121314151617181920212223242526272829303132 |
- #
- # Generated file, do not edit.
- #
- import lldb
- def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict):
- """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages."""
- base = frame.register["x0"].GetValueAsAddress()
- page_len = frame.register["x1"].GetValueAsUnsigned()
- # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the
- # first page to see if handled it correctly. This makes diagnosing
- # misconfiguration (e.g. missing breakpoint) easier.
- data = bytearray(page_len)
- data[0:8] = b'IHELPED!'
- error = lldb.SBError()
- frame.GetThread().GetProcess().WriteMemory(base, data, error)
- if not error.Success():
- print(f'Failed to write into {base}[+{page_len}]', error)
- return
- def __lldb_init_module(debugger: lldb.SBDebugger, _):
- target = debugger.GetDummyTarget()
- # Caveat: must use BreakpointCreateByRegEx here and not
- # BreakpointCreateByName. For some reasons callback function does not
- # get carried over from dummy target for the later.
- bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$")
- bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__))
- bp.SetAutoContinue(True)
- print("-- LLDB integration loaded --")
|