void remove_lmf_breakpoint()
{
if (lmf_breakpoint == null)
return;
/*
* We reused an already existing single-stepping breakpoint at the requested location.
*/
if (lmf_breakpoint.Breakpoint == lmf_breakpoint.StolenBreakpoint)
return;
inferior.RemoveBreakpoint (lmf_breakpoint.Breakpoint.ID);
/*
* We stole the single-stepping breakpoint -> restore it here.
*/
if (lmf_breakpoint.StolenBreakpoint != null) {
int dr_index;
TargetAddress address = lmf_breakpoint.StolenBreakpoint.Address;
int id = inferior.InsertHardwareBreakpoint (address, true, out dr_index);
temp_breakpoint = new TemporaryBreakpointData (id, address);
Report.Debug (DebugFlags.SSE, "{0} restored stolen breakpoint: {1}", this, temp_breakpoint);
}
lmf_breakpoint = null;
}