URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [debug/] [dwarf/] [unit.go] - Rev 747
Compare with Previous | Blame | View Log
// 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 dwarfimport "strconv"// DWARF debug info is split into a sequence of compilation units.// Each unit has its own abbreviation table and address size.type unit struct {base Offset // byte offset of header within the aggregate infooff Offset // byte offset of data within the aggregate infodata []byteatable abbrevTableaddrsize int}func (d *Data) parseUnits() ([]unit, error) {// Count units.nunit := 0b := makeBuf(d, "info", 0, d.info, 0)for len(b.data) > 0 {b.skip(int(b.uint32()))nunit++}if b.err != nil {return nil, b.err}// Again, this time writing them down.b = makeBuf(d, "info", 0, d.info, 0)units := make([]unit, nunit)for i := range units {u := &units[i]u.base = b.offn := b.uint32()if vers := b.uint16(); vers != 2 {b.error("unsupported DWARF version " + strconv.Itoa(int(vers)))break}atable, err := d.parseAbbrev(b.uint32())if err != nil {if b.err == nil {b.err = err}break}u.atable = atableu.addrsize = int(b.uint8())u.off = b.offu.data = b.bytes(int(n - (2 + 4 + 1)))}if b.err != nil {return nil, b.err}return units, nil}
