Refactor setBreakpoint code

This commit is contained in:
Derek Parker 2015-08-01 21:16:58 -05:00
parent 392abbda09
commit 1f473241c7

@ -81,13 +81,20 @@ func (dbp *Process) setBreakpoint(tid int, addr uint64, temp bool) (*Breakpoint,
return nil, InvalidAddressError{address: addr} return nil, InvalidAddressError{address: addr}
} }
var id int newBreakpoint := &Breakpoint{
FunctionName: fn.Name,
File: f,
Line: l,
Addr: addr,
Temp: temp,
}
if temp { if temp {
dbp.tempBreakpointIDCounter++ dbp.tempBreakpointIDCounter++
id = dbp.tempBreakpointIDCounter newBreakpoint.ID = dbp.tempBreakpointIDCounter
} else { } else {
dbp.breakpointIDCounter++ dbp.breakpointIDCounter++
id = dbp.breakpointIDCounter newBreakpoint.ID = dbp.breakpointIDCounter
} }
// Try and set a hardware breakpoint. // Try and set a hardware breakpoint.
@ -111,17 +118,9 @@ func (dbp *Process) setBreakpoint(tid int, addr uint64, temp bool) (*Breakpoint,
} }
} }
dbp.arch.SetHardwareBreakpointUsage(i, true) dbp.arch.SetHardwareBreakpointUsage(i, true)
dbp.Breakpoints[addr] = &Breakpoint{ newBreakpoint.reg = i
FunctionName: fn.Name, newBreakpoint.hardware = true
File: f, dbp.Breakpoints[addr] = newBreakpoint
Line: l,
Addr: addr,
ID: id,
Temp: temp,
hardware: true,
reg: i,
}
return dbp.Breakpoints[addr], nil return dbp.Breakpoints[addr], nil
} }
@ -134,17 +133,10 @@ func (dbp *Process) setBreakpoint(tid int, addr uint64, temp bool) (*Breakpoint,
if err := dbp.writeSoftwareBreakpoint(thread, addr); err != nil { if err := dbp.writeSoftwareBreakpoint(thread, addr); err != nil {
return nil, err return nil, err
} }
dbp.Breakpoints[addr] = &Breakpoint{ newBreakpoint.OriginalData = originalData
FunctionName: fn.Name, dbp.Breakpoints[addr] = newBreakpoint
File: f,
Line: l,
Addr: addr,
OriginalData: originalData,
ID: id,
Temp: temp,
}
return dbp.Breakpoints[addr], nil return newBreakpoint, nil
} }
func (dbp *Process) writeSoftwareBreakpoint(thread *Thread, addr uint64) error { func (dbp *Process) writeSoftwareBreakpoint(thread *Thread, addr uint64) error {