ogle/program: return the PCs of the breakpoints set. LGTM=r R=r https://golang.org/cl/135610043
diff --git a/program/client/client.go b/program/client/client.go index 9a770c3..66187d6 100644 --- a/program/client/client.go +++ b/program/client/client.go
@@ -194,12 +194,13 @@ panic("unimplemented") } -func (p *Program) Breakpoint(address string) error { +func (p *Program) Breakpoint(address string) ([]uint64, error) { req := proxyrpc.BreakpointRequest{ Address: address, } var resp proxyrpc.BreakpointResponse - return p.client.Call("Server.Breakpoint", &req, &resp) + err := p.client.Call("Server.Breakpoint", &req, &resp) + return resp.PCs, err } func (p *Program) DeleteBreakpoint(address string) error {
diff --git a/program/program.go b/program/program.go index 5e51152..ac7325a 100644 --- a/program/program.go +++ b/program/program.go
@@ -60,7 +60,7 @@ // The address is the same mini-language accepted by Eval, // which permits setting multiple breakpoints using a regular // expression to match a set of symbols. - Breakpoint(address string) error + Breakpoint(address string) (PCs []uint64, err error) // DeleteBreakpoint removes the breakpoint at the specified // address. TODO: Probably the wrong interface.
diff --git a/program/proxyrpc/proxyrpc.go b/program/proxyrpc/proxyrpc.go index e201f1f..3784268 100644 --- a/program/proxyrpc/proxyrpc.go +++ b/program/proxyrpc/proxyrpc.go
@@ -70,6 +70,7 @@ } type BreakpointResponse struct { + PCs []uint64 } type EvalRequest struct {
diff --git a/program/server/server.go b/program/server/server.go index 72c8a5a..3536379 100644 --- a/program/server/server.go +++ b/program/server/server.go
@@ -429,6 +429,7 @@ } bp.pc = pc s.breakpoints[pc] = bp + resp.PCs = append(resp.PCs, pc) } return nil