aboutsummaryrefslogtreecommitdiff
path: root/src/debug/dwarf/open.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/dwarf/open.go')
-rw-r--r--src/debug/dwarf/open.go85
1 files changed, 4 insertions, 81 deletions
diff --git a/src/debug/dwarf/open.go b/src/debug/dwarf/open.go
index 617b8c56dd..e94103a1d7 100644
--- a/src/debug/dwarf/open.go
+++ b/src/debug/dwarf/open.go
@@ -26,10 +26,10 @@ type Data struct {
str []byte
// New sections added in DWARF 5.
- addr *debugAddr
+ addr []byte
lineStr []byte
strOffsets []byte
- rngLists *rngLists
+ rngLists []byte
// parsed data
abbrevCache map[uint64]abbrevTable
@@ -40,21 +40,6 @@ type Data struct {
unit []unit
}
-// rngLists represents the contents of a debug_rnglists section (DWARFv5).
-type rngLists struct {
- is64 bool
- asize uint8
- data []byte
- ver uint16
-}
-
-// debugAddr represents the contents of a debug_addr section (DWARFv5).
-type debugAddr struct {
- is64 bool
- asize uint8
- data []byte
-}
-
var errSegmentSelector = errors.New("non-zero segment_selector size not supported")
// New returns a new Data object initialized from the given parameters.
@@ -132,76 +117,14 @@ func (d *Data) AddSection(name string, contents []byte) error {
var err error
switch name {
case ".debug_addr":
- d.addr, err = d.parseAddrHeader(contents)
+ d.addr = contents
case ".debug_line_str":
d.lineStr = contents
case ".debug_str_offsets":
d.strOffsets = contents
case ".debug_rnglists":
- d.rngLists, err = d.parseRngListsHeader(contents)
+ d.rngLists = contents
}
// Just ignore names that we don't yet support.
return err
}
-
-// parseRngListsHeader reads the header of a debug_rnglists section, see
-// DWARFv5 section 7.28 (page 242).
-func (d *Data) parseRngListsHeader(bytes []byte) (*rngLists, error) {
- rngLists := &rngLists{data: bytes}
-
- buf := makeBuf(d, unknownFormat{}, "rnglists", 0, bytes)
- _, rngLists.is64 = buf.unitLength()
-
- rngLists.ver = buf.uint16() // version
-
- rngLists.asize = buf.uint8()
- segsize := buf.uint8()
- if segsize != 0 {
- return nil, errSegmentSelector
- }
-
- // Header fields not read: offset_entry_count, offset table
-
- return rngLists, nil
-}
-
-func (rngLists *rngLists) version() int {
- return int(rngLists.ver)
-}
-
-func (rngLists *rngLists) dwarf64() (bool, bool) {
- return rngLists.is64, true
-}
-
-func (rngLists *rngLists) addrsize() int {
- return int(rngLists.asize)
-}
-
-// parseAddrHeader reads the header of a debug_addr section, see DWARFv5
-// section 7.27 (page 241).
-func (d *Data) parseAddrHeader(bytes []byte) (*debugAddr, error) {
- addr := &debugAddr{data: bytes}
-
- buf := makeBuf(d, unknownFormat{}, "addr", 0, bytes)
- _, addr.is64 = buf.unitLength()
-
- addr.asize = buf.uint8()
- segsize := buf.uint8()
- if segsize != 0 {
- return nil, errSegmentSelector
- }
-
- return addr, nil
-}
-
-func (addr *debugAddr) version() int {
- return 5
-}
-
-func (addr *debugAddr) dwarf64() (bool, bool) {
- return addr.is64, true
-}
-
-func (addr *debugAddr) addrsize() int {
- return int(addr.asize)
-}