diff --git a/_fixtures/testvariables2.go b/_fixtures/testvariables2.go index e4c314dd0c..b078e9d87d 100644 --- a/_fixtures/testvariables2.go +++ b/_fixtures/testvariables2.go @@ -145,6 +145,10 @@ type W5 struct { *W5 } +type ThreeInts struct { + a, b, c int +} + var _ I = (*W2)(nil) func main() { @@ -379,6 +383,11 @@ func main() { h.Data = 0 tim3 := time.Date(300000, 1, 1, 0, 0, 0, 0, time.Local) + int3chan := make(chan ThreeInts, 5) + int3chan <- ThreeInts{a: 1} + int3chan <- ThreeInts{a: 2} + int3chan <- ThreeInts{a: 3} + var amb1 = 1 runtime.Breakpoint() for amb1 := 0; amb1 < 10; amb1++ { @@ -389,5 +398,5 @@ func main() { longslice := make([]int, 100, 100) runtime.Breakpoint() - fmt.Println(i1, i2, i3, p1, pp1, amb1, s1, s3, a0, a1, p2, p3, s2, as1, str1, f1, fn1, fn2, nilslice, nilptr, ch1, chnil, m1, mnil, m2, m3, m4, m5, upnil, up1, i4, i5, i6, err1, err2, errnil, iface1, iface2, ifacenil, arr1, parr, cpx1, const1, iface3, iface4, recursive1, recursive1.x, iface5, iface2fn1, iface2fn2, bencharr, benchparr, mapinf, mainMenu, b, b2, sd, anonstruct1, anonstruct2, anoniface1, anonfunc, mapanonstruct1, ifacearr, efacearr, ni8, ni16, ni32, ni64, pinf, ninf, nan, zsvmap, zsslice, zsvar, tm, rettm, errtypednil, emptyslice, emptymap, byteslice, bytestypeslice, runeslice, bytearray, bytetypearray, runearray, longstr, nilstruct, as2, as2.NonPointerRecieverMethod, s4, iface2map, issue1578, ll, unread, w2, w3, w4, w5, longarr, longslice, val, m6, m7, cl, tim1, tim2, typedstringvar, namedA1, namedA2, astructName1(namedA2), badslice, tim3) + fmt.Println(i1, i2, i3, p1, pp1, amb1, s1, s3, a0, a1, p2, p3, s2, as1, str1, f1, fn1, fn2, nilslice, nilptr, ch1, chnil, m1, mnil, m2, m3, m4, m5, upnil, up1, i4, i5, i6, err1, err2, errnil, iface1, iface2, ifacenil, arr1, parr, cpx1, const1, iface3, iface4, recursive1, recursive1.x, iface5, iface2fn1, iface2fn2, bencharr, benchparr, mapinf, mainMenu, b, b2, sd, anonstruct1, anonstruct2, anoniface1, anonfunc, mapanonstruct1, ifacearr, efacearr, ni8, ni16, ni32, ni64, pinf, ninf, nan, zsvmap, zsslice, zsvar, tm, rettm, errtypednil, emptyslice, emptymap, byteslice, bytestypeslice, runeslice, bytearray, bytetypearray, runearray, longstr, nilstruct, as2, as2.NonPointerRecieverMethod, s4, iface2map, issue1578, ll, unread, w2, w3, w4, w5, longarr, longslice, val, m6, m7, cl, tim1, tim2, typedstringvar, namedA1, namedA2, astructName1(namedA2), badslice, tim3, int3chan) } diff --git a/pkg/dwarf/godwarf/type.go b/pkg/dwarf/godwarf/type.go index 5b6df937bc..19ac86e38d 100644 --- a/pkg/dwarf/godwarf/type.go +++ b/pkg/dwarf/godwarf/type.go @@ -180,7 +180,8 @@ func (t *QualType) stringIntl(recCheck recCheck) string { return t.Qual + " " + t.Type.stringIntl(recCheck) } -func (t *QualType) Size() int64 { return sizeAlignToSize(t.sizeAlignIntl(make(recCheck))) } +func (t *QualType) Size() int64 { return sizeAlignToSize(t.sizeAlignIntl(make(recCheck))) } +func (t *QualType) Align() int64 { return sizeAlignToAlign(t.sizeAlignIntl(make(recCheck))) } func (t *QualType) sizeAlignIntl(recCheck recCheck) (int64, int64) { release := recCheck.acquire(t.CommonType.Offset) @@ -457,7 +458,8 @@ func (t *TypedefType) String() string { return t.stringIntl(nil) } func (t *TypedefType) stringIntl(recCheck recCheck) string { return t.Name } -func (t *TypedefType) Size() int64 { sz, _ := t.sizeAlignIntl(make(recCheck)); return sz } +func (t *TypedefType) Size() int64 { return sizeAlignToSize(t.sizeAlignIntl(make(recCheck))) } +func (t *TypedefType) Align() int64 { return sizeAlignToAlign(t.sizeAlignIntl(make(recCheck))) } func (t *TypedefType) sizeAlignIntl(recCheck recCheck) (int64, int64) { release := recCheck.acquire(t.CommonType.Offset) diff --git a/pkg/proc/variables_test.go b/pkg/proc/variables_test.go index 77b8677a53..00f7f7b084 100644 --- a/pkg/proc/variables_test.go +++ b/pkg/proc/variables_test.go @@ -558,6 +558,7 @@ func getEvalExpressionTestCases() []varTest { {"ch1", true, "chan int 4/11", "chan int 4/11", "chan int", nil}, {"chnil", true, "chan int nil", "chan int nil", "chan int", nil}, {"ch1+1", false, "", "", "", fmt.Errorf("can not convert 1 constant to chan int")}, + {"int3chan.buf", false, "*[5]main.ThreeInts [{a: 1, b: 0, c: 0},{a: 2, b: 0, c: 0},{a: 3, b: 0, c: 0},{a: 0, b: 0, c: 0},{a: 0, b: 0, c: 0}]", "(*[5]main.ThreeInts)(…", "*[5]main.ThreeInts", nil}, // maps {"m1[\"Malone\"]", false, "main.astruct {A: 2, B: 3}", "main.astruct {A: 2, B: 3}", "main.astruct", nil},