diff --git a/dwarf/frame/entries.go b/dwarf/frame/entries.go index 1bf3aba4274787ee7ee91b986bbc1014733f5b68..e63c41a160377f3917c22042a131e80c0d346e14 100644 --- a/dwarf/frame/entries.go +++ b/dwarf/frame/entries.go @@ -23,16 +23,8 @@ type addrange struct { begin, end uint64 } -func (r *addrange) Begin() uint64 { - return r.begin -} - -func (r *addrange) End() uint64 { - return r.end -} - -func (r *addrange) Cover(addr uint64) bool { - if (addr - r.begin) < r.end { +func (fde *FrameDescriptionEntry) Cover(addr uint64) bool { + if (addr - fde.AddressRange.begin) < fde.AddressRange.end { return true } diff --git a/proctl/proctl_linux_amd64.go b/proctl/proctl_linux_amd64.go index 9ccc300a78ccc78bb2dbc09643c97eacf7b33aa8..9f6f419959d5f3a98892da06d6455e2597c5013a 100644 --- a/proctl/proctl_linux_amd64.go +++ b/proctl/proctl_linux_amd64.go @@ -249,7 +249,7 @@ func (dbp *DebuggedProcess) Next() error { } loc := dbp.DebugLine.NextLocation(pc, f, l) - if !fde.AddressRange.Cover(loc.Address) { + if !fde.Cover(loc.Address) { // Step once to ensure we're not going to step // into another function before returning. pc, err = step() @@ -257,12 +257,12 @@ func (dbp *DebuggedProcess) Next() error { return err } - if fde.AddressRange.Cover(pc) { + if fde.Cover(pc) { // Unconditionally step out of current function // Don't bother looking up ret addr, next line is // outside of current fn, should only be a few // instructions left to RET - for fde.AddressRange.Cover(pc) { + for fde.Cover(pc) { pc, err = step() if err != nil { return err @@ -279,7 +279,7 @@ func (dbp *DebuggedProcess) Next() error { return err } - if !fde.AddressRange.Cover(pc) { + if !fde.Cover(pc) { // We've stepped into a function, keep going. // TODO: Use DWARF frame info to continue to return address. continue