internal/gocore: handle moving direct interface flag from kind to tflag

Change-Id: I2b8cf8030c7041bfef22a57adf49da2e5e1ebf8a
Reviewed-on: https://go-review.googlesource.com/c/debug/+/682075
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/internal/gocore/type.go b/internal/gocore/type.go
index 7bab5c5..c384800 100644
--- a/internal/gocore/type.go
+++ b/internal/gocore/type.go
@@ -662,6 +662,11 @@
 // ifaceIndir reports whether t is stored indirectly in an interface value.
 func ifaceIndir(t core.Address, p *Process) bool {
 	typr := p.findRuntimeType(t)
+	if tflagDirectIface, ok := p.rtConsts.find("internal/abi.TFlagDirectIface"); ok {
+		// 1.26 and later, direct bit stored in tflags
+		return typr.TFlag()&uint8(tflagDirectIface) != 0
+	}
+	// 1.25 and earlier, direct bit stored in kind field
 	return typr.Kind_()&uint8(p.rtConsts.get("internal/abi.KindDirectIface")) == 0
 }