From: Cuong Manh Le Date: Wed, 4 Sep 2024 11:45:17 +0000 (+0700) Subject: cmd: use 16 bytes hash when possible X-Git-Tag: go1.24rc1~1019 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5ca785d48d4648bdd771d95c5a99e0ce799dcfd3;p=gostls13.git cmd: use 16 bytes hash when possible CL 402595 changes all usages of 16 bytes hash to 32 bytes hash by using notsha256. However, since CL 454836, notsha256 is not necessary anymore, so this CL reverts those changes to 16 bytes hash using cmd/internal/hash package. Updates #51940 Updates #64751 Change-Id: Ic015468ca4a49d0c3b1fb9fdbed93fddef3c838f Reviewed-on: https://go-review.googlesource.com/c/go/+/610598 Auto-Submit: Cuong Manh Le Reviewed-by: Keith Randall Reviewed-by: Keith Randall Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI --- diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go index 946245bbe7..7a78cd270d 100644 --- a/src/cmd/cgo/main.go +++ b/src/cmd/cgo/main.go @@ -388,8 +388,8 @@ func main() { // we use to coordinate between gcc and ourselves. // We already put _cgo_ at the beginning, so the main // concern is other cgo wrappers for the same functions. - // Use the beginning of the 32 bytes hash of the input to disambiguate. - h := hash.New32() + // Use the beginning of the 16 bytes hash of the input to disambiguate. + h := hash.New16() io.WriteString(h, *importPath) var once sync.Once var wg sync.WaitGroup diff --git a/src/cmd/compile/internal/types/fmt.go b/src/cmd/compile/internal/types/fmt.go index f316a23b90..96c63528ec 100644 --- a/src/cmd/compile/internal/types/fmt.go +++ b/src/cmd/compile/internal/types/fmt.go @@ -644,7 +644,7 @@ func SplitVargenSuffix(name string) (base, suffix string) { func TypeHash(t *Type) uint32 { p := t.LinkString() - // Using 32 bytes hash is overkill, but reduces accidental collisions. - h := hash.Sum32([]byte(p)) + // Using 16 bytes hash is overkill, but reduces accidental collisions. + h := hash.Sum16([]byte(p)) return binary.LittleEndian.Uint32(h[:4]) } diff --git a/src/cmd/internal/obj/sym.go b/src/cmd/internal/obj/sym.go index 0fd0eb7f0f..ac43a812b9 100644 --- a/src/cmd/internal/obj/sym.go +++ b/src/cmd/internal/obj/sym.go @@ -207,7 +207,7 @@ func (ctxt *Link) Int128Sym(hi, lo int64) *LSym { // GCLocalsSym generates a content-addressable sym containing data. func (ctxt *Link) GCLocalsSym(data []byte) *LSym { - sum := hash.Sum32(data) + sum := hash.Sum16(data) str := base64.StdEncoding.EncodeToString(sum[:16]) return ctxt.LookupInit(fmt.Sprintf("gclocals·%s", str), func(lsym *LSym) { lsym.P = data diff --git a/src/cmd/objdump/objdump_test.go b/src/cmd/objdump/objdump_test.go index 103517641e..e78f2d3f96 100644 --- a/src/cmd/objdump/objdump_test.go +++ b/src/cmd/objdump/objdump_test.go @@ -126,7 +126,7 @@ func testDisasm(t *testing.T, srcfname string, printCode bool, printGnuAsm bool, goarch = f[1] } - hash := hash.Sum32([]byte(fmt.Sprintf("%v-%v-%v-%v", srcfname, flags, printCode, printGnuAsm))) + hash := hash.Sum16([]byte(fmt.Sprintf("%v-%v-%v-%v", srcfname, flags, printCode, printGnuAsm))) tmp := t.TempDir() hello := filepath.Join(tmp, fmt.Sprintf("hello-%x.exe", hash)) args := []string{"build", "-o", hello}