From 09e352bdf79c24b649df3b4ad336fa26ea9e290f Mon Sep 17 00:00:00 2001 From: Derek Parker Date: Sat, 11 Oct 2014 00:52:05 -0500 Subject: [PATCH] Refactor: Move Cover method to FDE --- dwarf/frame/entries.go | 12 ++---------- proctl/proctl_linux_amd64.go | 8 ++++---- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/dwarf/frame/entries.go b/dwarf/frame/entries.go index 1bf3aba4..e63c41a1 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 9ccc300a..9f6f4199 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 -- GitLab