[go] runtime, cmd/link: remote itablinks

5 views
Skip to first unread message

Ian Lance Taylor (Gerrit)

unread,
Dec 11, 2025, 12:43:12 AM12/11/25
to goph...@pubsubhelper.golang.org, Ian Lance Taylor, golang-co...@googlegroups.com

Ian Lance Taylor has uploaded the change for review

Commit message

runtime, cmd/link: remote itablinks

Instead of keeping a separate list of pointers to itabs,
just walk through the itabs themselves.

For #6853
Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568

Change diff

diff --git a/src/cmd/link/internal/ld/data.go b/src/cmd/link/internal/ld/data.go
index 1dbfb00..10e3c59 100644
--- a/src/cmd/link/internal/ld/data.go
+++ b/src/cmd/link/internal/ld/data.go
@@ -2236,16 +2236,6 @@
state.allocateSingleSymSections(segRelro, sym.SELFRELROSECT, sym.SRODATA, relroPerm)
state.allocateSingleSymSections(segRelro, sym.SMACHORELROSECT, sym.SRODATA, relroPerm)

- /* itablink */
- sect = state.allocateNamedDataSection(segRelro, genrelrosecname(".itablink"), []sym.SymKind{sym.SITABLINK}, relroPerm)
-
- itablink := ldr.CreateSymForUpdate("runtime.itablink", 0)
- ldr.SetSymSect(itablink.Sym(), sect)
- itablink.SetType(sym.SRODATA)
- state.datsize += itablink.Size()
- state.checkdatsize(sym.SITABLINK)
- sect.Length = uint64(state.datsize) - sect.Vaddr
-
// 6g uses 4-byte relocation offsets, so the entire segment must fit in 32 bits.
if state.datsize != int64(uint32(state.datsize)) {
Errorf("read-only data segment too large: %d", state.datsize)
diff --git a/src/cmd/link/internal/ld/elf_test.go b/src/cmd/link/internal/ld/elf_test.go
index 0b3229e..9be00c6 100644
--- a/src/cmd/link/internal/ld/elf_test.go
+++ b/src/cmd/link/internal/ld/elf_test.go
@@ -408,7 +408,7 @@
}

// This program is intended to be just big/complicated enough that
-// we wind up with a decent-sized .data.rel.ro.itablink section.
+// we wind up with a decent-sized .data.rel.ro.go.type section.
const ifacecallsProg = `
package main

diff --git a/src/cmd/link/internal/ld/macho_test.go b/src/cmd/link/internal/ld/macho_test.go
index 71261fd..000b5f2 100644
--- a/src/cmd/link/internal/ld/macho_test.go
+++ b/src/cmd/link/internal/ld/macho_test.go
@@ -37,14 +37,14 @@
args: []string{"-ldflags", "-linkmode=internal"},
prog: prog,
mustInternalLink: true,
- wantSecsRO: []string{"__got", "__rodata", "__itablink"},
+ wantSecsRO: []string{"__got", "__rodata"},
},
{
name: "linkmode-external",
args: []string{"-ldflags", "-linkmode=external"},
prog: prog,
mustHaveCGO: true,
- wantSecsRO: []string{"__got", "__rodata", "__itablink"},
+ wantSecsRO: []string{"__got", "__rodata"},
},
{
name: "cgo-linkmode-internal",
@@ -52,14 +52,14 @@
prog: progC,
mustHaveCGO: true,
mustInternalLink: true,
- wantSecsRO: []string{"__got", "__rodata", "__itablink"},
+ wantSecsRO: []string{"__got", "__rodata"},
},
{
name: "cgo-linkmode-external",
args: []string{"-ldflags", "-linkmode=external"},
prog: progC,
mustHaveCGO: true,
- wantSecsRO: []string{"__got", "__rodata", "__itablink"},
+ wantSecsRO: []string{"__got", "__rodata"},
},
}

diff --git a/src/cmd/link/internal/ld/main.go b/src/cmd/link/internal/ld/main.go
index a4b3a04..54afc02 100644
--- a/src/cmd/link/internal/ld/main.go
+++ b/src/cmd/link/internal/ld/main.go
@@ -422,8 +422,6 @@

bench.Start("textaddress")
ctxt.textaddress()
- bench.Start("typelink")
- ctxt.typelink()
bench.Start("buildinfo")
ctxt.buildinfo()
bench.Start("pclntab")
diff --git a/src/cmd/link/internal/ld/symtab.go b/src/cmd/link/internal/ld/symtab.go
index 90e190f..0b2984e 100644
--- a/src/cmd/link/internal/ld/symtab.go
+++ b/src/cmd/link/internal/ld/symtab.go
@@ -624,6 +624,8 @@
moduledata.AddAddr(ctxt.Arch, ldr.Lookup("runtime.types", 0))
moduledata.AddAddr(ctxt.Arch, ldr.Lookup("runtime.etypedesc", 0))
moduledata.AddAddr(ctxt.Arch, ldr.Lookup("runtime.etypes", 0))
+ moduledata.AddAddr(ctxt.Arch, ldr.Lookup("runtime.itabs", 0))
+ moduledata.AddAddr(ctxt.Arch, ldr.Lookup("runtime.eitabs", 0))
moduledata.AddAddr(ctxt.Arch, ldr.Lookup("runtime.rodata", 0))
moduledata.AddAddr(ctxt.Arch, ldr.Lookup("go:func.*", 0))

@@ -665,11 +667,6 @@
// text section information
slice(textsectionmapSym, uint64(nsections))

- // The itablinks slice
- itablinkSym := ldr.Lookup("runtime.itablink", 0)
- nitablinks := uint64(ldr.SymSize(itablinkSym)) / uint64(ctxt.Arch.PtrSize)
- slice(itablinkSym, nitablinks)
-
// The ptab slice
if ptab := ldr.Lookup("go:plugin.tabs", 0); ptab != 0 && ldr.AttrReachable(ptab) {
ldr.SetAttrLocal(ptab, true)
diff --git a/src/cmd/link/internal/ld/typelink.go b/src/cmd/link/internal/ld/typelink.go
deleted file mode 100644
index d921718..0000000
--- a/src/cmd/link/internal/ld/typelink.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package ld
-
-import (
- "cmd/internal/objabi"
- "cmd/link/internal/loader"
- "cmd/link/internal/sym"
-)
-
-// typelink generates the itablink table which is used by runtime.itabInit.
-func (ctxt *Link) typelink() {
- ldr := ctxt.loader
- var itabs []loader.Sym
- for s := loader.Sym(1); s < loader.Sym(ldr.NSym()); s++ {
- if !ldr.AttrReachable(s) {
- continue
- }
- if ldr.IsItab(s) {
- itabs = append(itabs, s)
- }
- }
-
- ptrsize := ctxt.Arch.PtrSize
- il := ldr.CreateSymForUpdate("runtime.itablink", 0)
- il.SetType(sym.SITABLINK)
- ldr.SetAttrLocal(il.Sym(), true)
- il.SetSize(int64(ptrsize * len(itabs)))
- il.Grow(il.Size())
- relocs := il.AddRelocs(len(itabs))
- for i, s := range itabs {
- r := relocs.At(i)
- r.SetSym(s)
- r.SetOff(int32(i * ptrsize))
- r.SetSiz(uint8(ptrsize))
- r.SetType(objabi.R_ADDR)
- }
-}
diff --git a/src/cmd/link/internal/sym/symkind.go b/src/cmd/link/internal/sym/symkind.go
index ec31ff6..c187d09 100644
--- a/src/cmd/link/internal/sym/symkind.go
+++ b/src/cmd/link/internal/sym/symkind.go
@@ -62,7 +62,6 @@
SRODATAFIPSEND // End of FIPS read-only data.
SRODATAEND // End of read-only data.
SPCLNTAB // Pclntab data.
- STYPELINK // Type links.
SELFROSECT // ELF read-only data: relocs, dynamic linking info.

// Read-only, non-executable, dynamically relocatable segment.
diff --git a/src/cmd/link/internal/sym/symkind_string.go b/src/cmd/link/internal/sym/symkind_string.go
index 9e7899a..31a4046 100644
--- a/src/cmd/link/internal/sym/symkind_string.go
+++ b/src/cmd/link/internal/sym/symkind_string.go
@@ -25,68 +25,67 @@
_ = x[SRODATAFIPSEND-14]
_ = x[SRODATAEND-15]
_ = x[SPCLNTAB-16]
- _ = x[STYPELINK-17]
- _ = x[SELFROSECT-18]
- _ = x[SRODATARELRO-19]
- _ = x[STYPE-20]
- _ = x[SGOFUNC-21]
- _ = x[SELFRELROSECT-22]
- _ = x[SMACHORELROSECT-23]
- _ = x[SITABLINK-24]
- _ = x[SFirstWritable-25]
- _ = x[SBUILDINFO-26]
- _ = x[SFIPSINFO-27]
- _ = x[SELFSECT-28]
- _ = x[SMACHO-29]
- _ = x[SWINDOWS-30]
- _ = x[SMODULEDATA-31]
- _ = x[SELFGOT-32]
- _ = x[SMACHOGOT-33]
- _ = x[SNOPTRDATA-34]
- _ = x[SNOPTRDATAFIPSSTART-35]
- _ = x[SNOPTRDATAFIPS-36]
- _ = x[SNOPTRDATAFIPSEND-37]
- _ = x[SNOPTRDATAEND-38]
- _ = x[SINITARR-39]
- _ = x[SDATA-40]
- _ = x[SDATAFIPSSTART-41]
- _ = x[SDATAFIPS-42]
- _ = x[SDATAFIPSEND-43]
- _ = x[SDATAEND-44]
- _ = x[SXCOFFTOC-45]
- _ = x[SBSS-46]
- _ = x[SNOPTRBSS-47]
- _ = x[SLIBFUZZER_8BIT_COUNTER-48]
- _ = x[SCOVERAGE_COUNTER-49]
- _ = x[SCOVERAGE_AUXVAR-50]
- _ = x[STLSBSS-51]
- _ = x[SFirstUnallocated-52]
- _ = x[SXREF-53]
- _ = x[SMACHOSYMSTR-54]
- _ = x[SMACHOSYMTAB-55]
- _ = x[SMACHOINDIRECTPLT-56]
- _ = x[SMACHOINDIRECTGOT-57]
- _ = x[SDYNIMPORT-58]
- _ = x[SHOSTOBJ-59]
- _ = x[SUNDEFEXT-60]
- _ = x[SDWARFSECT-61]
- _ = x[SDWARFCUINFO-62]
- _ = x[SDWARFCONST-63]
- _ = x[SDWARFFCN-64]
- _ = x[SDWARFABSFCN-65]
- _ = x[SDWARFTYPE-66]
- _ = x[SDWARFVAR-67]
- _ = x[SDWARFRANGE-68]
- _ = x[SDWARFLOC-69]
- _ = x[SDWARFLINES-70]
- _ = x[SDWARFADDR-71]
- _ = x[SSEHUNWINDINFO-72]
- _ = x[SSEHSECT-73]
+ _ = x[SELFROSECT-17]
+ _ = x[SRODATARELRO-18]
+ _ = x[STYPE-19]
+ _ = x[SGOFUNC-20]
+ _ = x[SELFRELROSECT-21]
+ _ = x[SMACHORELROSECT-22]
+ _ = x[SITABLINK-23]
+ _ = x[SFirstWritable-24]
+ _ = x[SBUILDINFO-25]
+ _ = x[SFIPSINFO-26]
+ _ = x[SELFSECT-27]
+ _ = x[SMACHO-28]
+ _ = x[SWINDOWS-29]
+ _ = x[SMODULEDATA-30]
+ _ = x[SELFGOT-31]
+ _ = x[SMACHOGOT-32]
+ _ = x[SNOPTRDATA-33]
+ _ = x[SNOPTRDATAFIPSSTART-34]
+ _ = x[SNOPTRDATAFIPS-35]
+ _ = x[SNOPTRDATAFIPSEND-36]
+ _ = x[SNOPTRDATAEND-37]
+ _ = x[SINITARR-38]
+ _ = x[SDATA-39]
+ _ = x[SDATAFIPSSTART-40]
+ _ = x[SDATAFIPS-41]
+ _ = x[SDATAFIPSEND-42]
+ _ = x[SDATAEND-43]
+ _ = x[SXCOFFTOC-44]
+ _ = x[SBSS-45]
+ _ = x[SNOPTRBSS-46]
+ _ = x[SLIBFUZZER_8BIT_COUNTER-47]
+ _ = x[SCOVERAGE_COUNTER-48]
+ _ = x[SCOVERAGE_AUXVAR-49]
+ _ = x[STLSBSS-50]
+ _ = x[SFirstUnallocated-51]
+ _ = x[SXREF-52]
+ _ = x[SMACHOSYMSTR-53]
+ _ = x[SMACHOSYMTAB-54]
+ _ = x[SMACHOINDIRECTPLT-55]
+ _ = x[SMACHOINDIRECTGOT-56]
+ _ = x[SDYNIMPORT-57]
+ _ = x[SHOSTOBJ-58]
+ _ = x[SUNDEFEXT-59]
+ _ = x[SDWARFSECT-60]
+ _ = x[SDWARFCUINFO-61]
+ _ = x[SDWARFCONST-62]
+ _ = x[SDWARFFCN-63]
+ _ = x[SDWARFABSFCN-64]
+ _ = x[SDWARFTYPE-65]
+ _ = x[SDWARFVAR-66]
+ _ = x[SDWARFRANGE-67]
+ _ = x[SDWARFLOC-68]
+ _ = x[SDWARFLINES-69]
+ _ = x[SDWARFADDR-70]
+ _ = x[SSEHUNWINDINFO-71]
+ _ = x[SSEHSECT-72]
}

-const _SymKind_name = "SxxxSTEXTSTEXTFIPSSTARTSTEXTFIPSSTEXTFIPSENDSTEXTENDSELFRXSECTSMACHOPLTSSTRINGSGOSTRINGSGCBITSSRODATASRODATAFIPSSTARTSRODATAFIPSSRODATAFIPSENDSRODATAENDSPCLNTABSTYPELINKSELFROSECTSRODATARELROSTYPESGOFUNCSELFRELROSECTSMACHORELROSECTSITABLINKSFirstWritableSBUILDINFOSFIPSINFOSELFSECTSMACHOSWINDOWSSMODULEDATASELFGOTSMACHOGOTSNOPTRDATASNOPTRDATAFIPSSTARTSNOPTRDATAFIPSSNOPTRDATAFIPSENDSNOPTRDATAENDSINITARRSDATASDATAFIPSSTARTSDATAFIPSSDATAFIPSENDSDATAENDSXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSTLSBSSSFirstUnallocatedSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSDWARFADDRSSEHUNWINDINFOSSEHSECT"
+const _SymKind_name = "SxxxSTEXTSTEXTFIPSSTARTSTEXTFIPSSTEXTFIPSENDSTEXTENDSELFRXSECTSMACHOPLTSSTRINGSGOSTRINGSGCBITSSRODATASRODATAFIPSSTARTSRODATAFIPSSRODATAFIPSENDSRODATAENDSPCLNTABSELFROSECTSRODATARELROSTYPESGOFUNCSELFRELROSECTSMACHORELROSECTSITABLINKSFirstWritableSBUILDINFOSFIPSINFOSELFSECTSMACHOSWINDOWSSMODULEDATASELFGOTSMACHOGOTSNOPTRDATASNOPTRDATAFIPSSTARTSNOPTRDATAFIPSSNOPTRDATAFIPSENDSNOPTRDATAENDSINITARRSDATASDATAFIPSSTARTSDATAFIPSSDATAFIPSENDSDATAENDSXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSTLSBSSSFirstUnallocatedSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSDWARFADDRSSEHUNWINDINFOSSEHSECT"

-var _SymKind_index = [...]uint16{0, 4, 9, 23, 32, 44, 52, 62, 71, 78, 87, 94, 101, 117, 128, 142, 152, 160, 169, 179, 191, 196, 203, 216, 231, 240, 254, 264, 273, 281, 287, 295, 306, 313, 322, 332, 351, 365, 382, 395, 403, 408, 422, 431, 443, 451, 460, 464, 473, 496, 513, 529, 536, 553, 558, 570, 582, 599, 616, 626, 634, 643, 653, 665, 676, 685, 697, 707, 716, 727, 736, 747, 757, 771, 779}
+var _SymKind_index = [...]uint16{0, 4, 9, 23, 32, 44, 52, 62, 71, 78, 87, 94, 101, 117, 128, 142, 152, 160, 170, 182, 187, 194, 207, 222, 231, 245, 255, 264, 272, 278, 286, 297, 304, 313, 323, 342, 356, 373, 386, 394, 399, 413, 422, 434, 442, 451, 455, 464, 487, 504, 520, 527, 544, 549, 561, 573, 590, 607, 617, 625, 634, 644, 656, 667, 676, 688, 698, 707, 718, 727, 738, 748, 762, 770}

func (i SymKind) String() string {
if i >= SymKind(len(_SymKind_index)-1) {
diff --git a/src/internal/abi/iface.go b/src/internal/abi/iface.go
index f53d7e1..92e13b5 100644
--- a/src/internal/abi/iface.go
+++ b/src/internal/abi/iface.go
@@ -4,7 +4,10 @@

package abi

-import "unsafe"
+import (
+ "internal/goarch"
+ "unsafe"
+)

// The first word of every non-empty interface type contains an *ITab.
// It records the underlying concrete type (Type), the interface type it
@@ -18,6 +21,15 @@
Fun [1]uintptr // variable sized. fun[0]==0 means Type does not implement Inter.
}

+// Size returns the size of the itab in memory.
+func (it *ITab) Size() int {
+ size := int(unsafe.Sizeof(ITab{}))
+ if it.Fun[0] == 0 {
+ return size
+ }
+ return size + (len(it.Inter.Methods)-1)*goarch.PtrSize
+}
+
// EmptyInterface describes the layout of a "interface{}" or a "any."
// These are represented differently than non-empty interface, as the first
// word always points to an abi.Type.
diff --git a/src/runtime/iface.go b/src/runtime/iface.go
index c1f5f5b..bf3c371 100644
--- a/src/runtime/iface.go
+++ b/src/runtime/iface.go
@@ -260,13 +260,22 @@
lockInit(&itabLock, lockRankItab)
lock(&itabLock)
for _, md := range activeModules() {
- for _, i := range md.itablinks {
- itabAdd(i)
- }
+ addModuleItabs(md)
}
unlock(&itabLock)
}

+// addModuleItabs adds the pre-compiled itabs from md to the itab hash table.
+// This is an optimization to let us skip creating itabs we already have.
+func addModuleItabs(md *moduledata) {
+ p := md.itabs
+ for p < md.eitabs {
+ itab := (*itab)(unsafe.Pointer(p))
+ itabAdd(itab)
+ p += uintptr(itab.Size())
+ }
+}
+
// panicdottypeE is called when doing an e.(T) conversion and the conversion fails.
// have = the dynamic type we have.
// want = the static type we're trying to convert to.
diff --git a/src/runtime/plugin.go b/src/runtime/plugin.go
index 49cf13c..1a49dd6 100644
--- a/src/runtime/plugin.go
+++ b/src/runtime/plugin.go
@@ -66,9 +66,7 @@
moduledataverify1(md)

lock(&itabLock)
- for _, i := range md.itablinks {
- itabAdd(i)
- }
+ addModuleItabs(md)
unlock(&itabLock)

// Build a map of symbol names to symbols. Here in the runtime
diff --git a/src/runtime/symtab.go b/src/runtime/symtab.go
index c4588e8..75a9db1 100644
--- a/src/runtime/symtab.go
+++ b/src/runtime/symtab.go
@@ -420,11 +420,11 @@
covctrs, ecovctrs uintptr
end, gcdata, gcbss uintptr
types, etypedesc, etypes uintptr
+ itabs, eitabs uintptr
rodata uintptr
gofunc uintptr // go.func.*

textsectmap []textsect
- itablinks []*itab

ptab []ptabEntry

Change information

Files:
  • M src/cmd/link/internal/ld/data.go
  • M src/cmd/link/internal/ld/elf_test.go
  • M src/cmd/link/internal/ld/macho_test.go
  • M src/cmd/link/internal/ld/main.go
  • M src/cmd/link/internal/ld/symtab.go
  • D src/cmd/link/internal/ld/typelink.go
  • M src/cmd/link/internal/sym/symkind.go
  • M src/cmd/link/internal/sym/symkind_string.go
  • M src/internal/abi/iface.go
  • M src/runtime/iface.go
  • M src/runtime/plugin.go
  • M src/runtime/symtab.go
Change size: M
Delta: 12 files changed, 92 insertions(+), 130 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568
Gerrit-Change-Number: 729201
Gerrit-PatchSet: 1
Gerrit-Owner: Ian Lance Taylor <ia...@golang.org>
unsatisfied_requirement
satisfied_requirement
open
diffy

Ian Lance Taylor (Gerrit)

unread,
Dec 11, 2025, 12:43:46 AM12/11/25
to Ian Lance Taylor, goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Ian Lance Taylor uploaded new patchset

Ian Lance Taylor uploaded patch set #2 to this change.
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newpatchset
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568
Gerrit-Change-Number: 729201
Gerrit-PatchSet: 2
unsatisfied_requirement
satisfied_requirement
open
diffy

Ian Lance Taylor (Gerrit)

unread,
Dec 11, 2025, 12:43:54 AM12/11/25
to Ian Lance Taylor, goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Ian Lance Taylor voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568
Gerrit-Change-Number: 729201
Gerrit-PatchSet: 2
Gerrit-Owner: Ian Lance Taylor <ia...@golang.org>
Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
Gerrit-Comment-Date: Thu, 11 Dec 2025 05:43:51 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

Ian Lance Taylor (Gerrit)

unread,
Dec 11, 2025, 11:53:48 PM12/11/25
to Ian Lance Taylor, goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
Attention needed from Cherry Mui, Ian Lance Taylor and Than McIntosh

Ian Lance Taylor uploaded new patchset

Ian Lance Taylor uploaded patch set #4 to this change.
Open in Gerrit

Related details

Attention is currently required from:
  • Cherry Mui
  • Ian Lance Taylor
  • Than McIntosh
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newpatchset
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568
Gerrit-Change-Number: 729201
Gerrit-PatchSet: 4
Gerrit-Owner: Ian Lance Taylor <ia...@golang.org>
Gerrit-Reviewer: Cherry Mui <cher...@google.com>
Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
Gerrit-Reviewer: Than McIntosh <th...@golang.org>
Gerrit-CC: Gopher Robot <go...@golang.org>
Gerrit-Attention: Cherry Mui <cher...@google.com>
Gerrit-Attention: Ian Lance Taylor <ia...@golang.org>
Gerrit-Attention: Than McIntosh <th...@golang.org>
unsatisfied_requirement
satisfied_requirement
open
diffy

Ian Lance Taylor (Gerrit)

unread,
Dec 11, 2025, 11:54:00 PM12/11/25
to Ian Lance Taylor, goph...@pubsubhelper.golang.org, Cherry Mui, Than McIntosh, Gopher Robot, Go LUCI, golang-co...@googlegroups.com
Attention needed from Cherry Mui and Than McIntosh

Ian Lance Taylor voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Cherry Mui
  • Than McIntosh
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568
Gerrit-Change-Number: 729201
Gerrit-PatchSet: 4
Gerrit-Owner: Ian Lance Taylor <ia...@golang.org>
Gerrit-Reviewer: Cherry Mui <cher...@google.com>
Gerrit-Reviewer: Ian Lance Taylor <ia...@golang.org>
Gerrit-Reviewer: Than McIntosh <th...@golang.org>
Gerrit-CC: Gopher Robot <go...@golang.org>
Gerrit-Attention: Cherry Mui <cher...@google.com>
Gerrit-Attention: Than McIntosh <th...@golang.org>
Gerrit-Comment-Date: Fri, 12 Dec 2025 04:53:56 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
unsatisfied_requirement
satisfied_requirement
open
diffy

Ian Lance Taylor (Gerrit)

unread,
Feb 6, 2026, 8:01:40 PM (6 hours ago) Feb 6
to Ian Lance Taylor, goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com
Attention needed from Cherry Mui and Than McIntosh

Ian Lance Taylor uploaded new patchset

Ian Lance Taylor uploaded patch set #9 to this change.
Following approvals got outdated and were removed:
  • TryBots-Pass: LUCI-TryBot-Result+1 by Go LUCI
Open in Gerrit

Related details

Attention is currently required from:
  • Cherry Mui
  • Than McIntosh
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newpatchset
Gerrit-Project: go
Gerrit-Branch: master
Gerrit-Change-Id: If030bd64fbd01d73b0bf8495f6c9826ed2e61568
Gerrit-Change-Number: 729201
Gerrit-PatchSet: 9
unsatisfied_requirement
satisfied_requirement
open
diffy
Reply all
Reply to author
Forward
0 new messages