2014-06-29 16:52:21 +00:00
|
|
|
package frame_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2014-07-14 18:30:04 +00:00
|
|
|
"github.com/davecheney/profile"
|
2014-06-29 16:52:21 +00:00
|
|
|
"github.com/derekparker/dbg/dwarf/frame"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestParse(t *testing.T) {
|
|
|
|
var (
|
|
|
|
data = grabDebugFrameSection("../../_fixtures/testprog", t)
|
|
|
|
fe = frame.Parse(data)[0]
|
|
|
|
ce = fe.CIE
|
|
|
|
)
|
|
|
|
|
|
|
|
if ce.Length != 16 {
|
|
|
|
t.Error("Length was not parsed correctly, got ", ce.Length)
|
|
|
|
}
|
|
|
|
|
|
|
|
if ce.Version != 0x3 {
|
|
|
|
t.Fatalf("Version was not parsed correctly expected %#v got %#v", 0x3, ce.Version)
|
|
|
|
}
|
|
|
|
|
|
|
|
if ce.Augmentation != "" {
|
|
|
|
t.Fatal("Augmentation was not parsed correctly")
|
|
|
|
}
|
|
|
|
|
|
|
|
if ce.CodeAlignmentFactor != 0x1 {
|
|
|
|
t.Fatal("Code Alignment Factor was not parsed correctly")
|
|
|
|
}
|
|
|
|
|
|
|
|
if ce.DataAlignmentFactor != -4 {
|
|
|
|
t.Fatalf("Data Alignment Factor was not parsed correctly got %#v", ce.DataAlignmentFactor)
|
|
|
|
}
|
|
|
|
|
|
|
|
if fe.Length != 32 {
|
|
|
|
t.Fatal("Length was not parsed correctly, got ", fe.Length)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2014-07-14 18:30:04 +00:00
|
|
|
|
|
|
|
func BenchmarkParse(b *testing.B) {
|
|
|
|
defer profile.Start(profile.CPUProfile).Stop()
|
|
|
|
data := grabDebugFrameSection("../../_fixtures/testprog", nil)
|
|
|
|
|
|
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
frame.Parse(data)
|
|
|
|
}
|
|
|
|
}
|