// sorted by type string. The reflect package will use
// this to ensure that type descriptor pointers are unique.
+ // We define type:* for some links.
+ typeStar := ldr.Lookup("type:*", 0)
+
// Compute all the type strings we need once.
typelinkStrings := make(map[loader.Sym]string)
for _, s := range syms {
if ret, matched := sortHeadTail(si, sj); matched {
return ret
}
+ if typeStar != 0 {
+ // type:* comes first, after runtime.types
+ if si == typeStar {
+ return true
+ } else if sj == typeStar {
+ return false
+ }
+ }
iTypestr, iIsTypelink := typelinkStrings[si]
jTypestr, jIsTypelink := typelinkStrings[sj]
typeLinkSize := int64(1)
for i := range sl {
si := sl[i].sym
- if si == head {
+ if si == head || si == typeStar {
continue
}
if _, isTypelink := typelinkStrings[si]; !isTypelink {