From 109e5ab10968ee4e483a8c68324624294dd11b14 Mon Sep 17 00:00:00 2001 From: Derek Parker Date: Thu, 23 Apr 2015 09:16:44 -0500 Subject: [PATCH] Copy instructions for FDE --- dwarf/frame/table.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dwarf/frame/table.go b/dwarf/frame/table.go index eabb365c..b4340b75 100644 --- a/dwarf/frame/table.go +++ b/dwarf/frame/table.go @@ -140,7 +140,9 @@ func executeDwarfProgramUntilPC(fde *FrameDescriptionEntry, pc uint64) *FrameCon frame := executeCIEInstructions(fde.CIE) frame.loc = fde.Begin() frame.address = pc - frame.ExecuteUntilPC(fde.Instructions) + fdeInstructions := make([]byte, len(fde.Instructions)) + copy(fdeInstructions, fde.Instructions) + frame.ExecuteUntilPC(fdeInstructions) return frame } @@ -153,7 +155,7 @@ func (frame *FrameContext) ExecuteDwarfProgram() { // Execute dwarf instructions. func (frame *FrameContext) ExecuteUntilPC(instructions []byte) { - frame.buf.Reset() + frame.buf.Truncate(0) frame.buf.Write(instructions) // We only need to execute the instructions until -- GitLab