| // Copyright 2009 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package dwarf_test | |
| import ( | |
| . "debug/dwarf" | |
| "testing" | |
| ) | |
| func TestSplit(t *testing.T) { | |
| // debug/dwarf doesn't (currently) support split DWARF, but | |
| // the attributes that pointed to the split DWARF used to | |
| // cause loading the DWARF data to fail entirely (issue | |
| // #12592). Test that we can at least read the DWARF data. | |
| d := elfData(t, "testdata/split.elf") | |
| r := d.Reader() | |
| e, err := r.Next() | |
| if err != nil { | |
| t.Fatal(err) | |
| } | |
| if e.Tag != TagCompileUnit { | |
| t.Fatalf("bad tag: have %s, want %s", e.Tag, TagCompileUnit) | |
| } | |
| // Check that we were able to parse the unknown section offset | |
| // field, even if we can't figure out its DWARF class. | |
| const AttrGNUAddrBase Attr = 0x2133 | |
| f := e.AttrField(AttrGNUAddrBase) | |
| if _, ok := f.Val.(int64); !ok { | |
| t.Fatalf("bad attribute value type: have %T, want int64", f.Val) | |
| } | |
| if f.Class != ClassUnknown { | |
| t.Fatalf("bad class: have %s, want %s", f.Class, ClassUnknown) | |
| } | |
| } |