aboutsummaryrefslogtreecommitdiff
path: root/src/debug
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug')
-rw-r--r--src/debug/dwarf/entry.go6
-rw-r--r--src/debug/dwarf/entry_test.go20
2 files changed, 23 insertions, 3 deletions
diff --git a/src/debug/dwarf/entry.go b/src/debug/dwarf/entry.go
index 43043f60dd..01f2190db7 100644
--- a/src/debug/dwarf/entry.go
+++ b/src/debug/dwarf/entry.go
@@ -11,6 +11,7 @@
package dwarf
import (
+ "encoding/binary"
"errors"
"strconv"
)
@@ -735,6 +736,11 @@ func (r *Reader) AddressSize() int {
return r.d.unit[r.unit].asize
}
+// ByteOrder returns the byte order in the current compilation unit.
+func (r *Reader) ByteOrder() binary.ByteOrder {
+ return r.b.order
+}
+
// Seek positions the Reader at offset off in the encoded entry stream.
// Offset 0 can be used to denote the first entry.
func (r *Reader) Seek(off Offset) {
diff --git a/src/debug/dwarf/entry_test.go b/src/debug/dwarf/entry_test.go
index 58f3023d29..4c9aad21f3 100644
--- a/src/debug/dwarf/entry_test.go
+++ b/src/debug/dwarf/entry_test.go
@@ -6,6 +6,7 @@ package dwarf_test
import (
. "debug/dwarf"
+ "encoding/binary"
"reflect"
"testing"
)
@@ -141,8 +142,10 @@ func Test64Bit(t *testing.T) {
// compilation unit except by using XCOFF, so this is
// hand-written.
tests := []struct {
- name string
- info []byte
+ name string
+ info []byte
+ addrSize int
+ byteOrder binary.ByteOrder
}{
{
"32-bit little",
@@ -157,6 +160,7 @@ func Test64Bit(t *testing.T) {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
},
+ 8, binary.LittleEndian,
},
{
"64-bit little",
@@ -171,6 +175,7 @@ func Test64Bit(t *testing.T) {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
},
+ 8, binary.LittleEndian,
},
{
"64-bit big",
@@ -185,13 +190,22 @@ func Test64Bit(t *testing.T) {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
},
+ 8, binary.BigEndian,
},
}
for _, test := range tests {
- _, err := New(nil, nil, nil, test.info, nil, nil, nil, nil)
+ data, err := New(nil, nil, nil, test.info, nil, nil, nil, nil)
if err != nil {
t.Errorf("%s: %v", test.name, err)
}
+
+ r := data.Reader()
+ if r.AddressSize() != test.addrSize {
+ t.Errorf("%s: got address size %d, want %d", test.name, r.AddressSize(), test.addrSize)
+ }
+ if r.ByteOrder() != test.byteOrder {
+ t.Errorf("%s: got byte order %s, want %s", test.name, r.ByteOrder(), test.byteOrder)
+ }
}
}