2023-03-14 14:25:56 -04:00
|
|
|
// Copyright 2023 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 godebugs provides a table of known GODEBUG settings,
|
|
|
|
|
// for use by a variety of other packages, including internal/godebug,
|
|
|
|
|
// runtime, runtime/metrics, and cmd/go/internal/load.
|
|
|
|
|
package godebugs
|
|
|
|
|
|
|
|
|
|
// An Info describes a single known GODEBUG setting.
|
|
|
|
|
type Info struct {
|
|
|
|
|
Name string // name of the setting ("panicnil")
|
|
|
|
|
Package string // package that uses the setting ("runtime")
|
|
|
|
|
Changed int // minor version when default changed, if any; 21 means Go 1.21
|
|
|
|
|
Old string // value that restores behavior prior to Changed
|
|
|
|
|
Opaque bool // setting does not export information to runtime/metrics using [internal/godebug.Setting.IncNonDefault]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// All is the table of known settings, sorted by Name.
|
|
|
|
|
//
|
|
|
|
|
// Note: After adding entries to this table, run 'go generate runtime/metrics'
|
|
|
|
|
// to update the runtime/metrics doc comment.
|
|
|
|
|
// (Otherwise the runtime/metrics test will fail.)
|
|
|
|
|
//
|
|
|
|
|
// Note: After adding entries to this table, update the list in doc/godebug.md as well.
|
|
|
|
|
// (Otherwise the test in this package will fail.)
|
|
|
|
|
var All = []Info{
|
|
|
|
|
{Name: "execerrdot", Package: "os/exec"},
|
2023-04-21 19:55:43 -07:00
|
|
|
{Name: "gocachehash", Package: "cmd/go"},
|
|
|
|
|
{Name: "gocachetest", Package: "cmd/go"},
|
|
|
|
|
{Name: "gocacheverify", Package: "cmd/go"},
|
2023-11-10 18:11:15 -08:00
|
|
|
{Name: "gotypesalias", Package: "go/types"},
|
2023-03-14 14:25:56 -04:00
|
|
|
{Name: "http2client", Package: "net/http"},
|
|
|
|
|
{Name: "http2debug", Package: "net/http", Opaque: true},
|
|
|
|
|
{Name: "http2server", Package: "net/http"},
|
2023-08-10 20:56:27 +00:00
|
|
|
{Name: "httplaxcontentlength", Package: "net/http", Changed: 22, Old: "1"},
|
2023-09-23 17:05:42 -04:00
|
|
|
{Name: "httpmuxgo121", Package: "net/http", Changed: 22, Old: "1"},
|
2023-03-14 14:25:56 -04:00
|
|
|
{Name: "installgoroot", Package: "go/build"},
|
|
|
|
|
{Name: "jstmpllitinterp", Package: "html/template"},
|
|
|
|
|
//{Name: "multipartfiles", Package: "mime/multipart"},
|
|
|
|
|
{Name: "multipartmaxheaders", Package: "mime/multipart"},
|
|
|
|
|
{Name: "multipartmaxparts", Package: "mime/multipart"},
|
2023-06-30 17:24:57 +02:00
|
|
|
{Name: "multipathtcp", Package: "net"},
|
2023-03-14 14:25:56 -04:00
|
|
|
{Name: "netdns", Package: "net", Opaque: true},
|
|
|
|
|
{Name: "panicnil", Package: "runtime", Changed: 21, Old: "1"},
|
|
|
|
|
{Name: "randautoseed", Package: "math/rand"},
|
|
|
|
|
{Name: "tarinsecurepath", Package: "archive/tar"},
|
2023-11-10 10:12:48 -08:00
|
|
|
{Name: "tls10server", Package: "crypto/tls", Changed: 22, Old: "1"},
|
2023-08-08 18:25:59 -07:00
|
|
|
{Name: "tlsmaxrsasize", Package: "crypto/tls"},
|
2023-11-10 10:42:42 -08:00
|
|
|
{Name: "tlsrsakex", Package: "crypto/tls", Changed: 22, Old: "1"},
|
2023-11-21 16:37:07 +01:00
|
|
|
{Name: "tlsunsafeekm", Package: "crypto/tls", Changed: 22, Old: "1"},
|
2024-02-28 16:07:27 +01:00
|
|
|
{Name: "winreadlinkvolume", Package: "os", Changed: 22, Old: "0"},
|
2024-02-28 16:06:04 +01:00
|
|
|
{Name: "winsymlink", Package: "os", Changed: 22, Old: "0"},
|
2023-03-14 14:25:56 -04:00
|
|
|
{Name: "x509sha1", Package: "crypto/x509"},
|
|
|
|
|
{Name: "x509usefallbackroots", Package: "crypto/x509"},
|
2023-12-04 10:17:34 -08:00
|
|
|
{Name: "x509usepolicies", Package: "crypto/x509"},
|
2023-03-14 14:25:56 -04:00
|
|
|
{Name: "zipinsecurepath", Package: "archive/zip"},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Lookup returns the Info with the given name.
|
|
|
|
|
func Lookup(name string) *Info {
|
|
|
|
|
// binary search, avoiding import of sort.
|
|
|
|
|
lo := 0
|
|
|
|
|
hi := len(All)
|
|
|
|
|
for lo < hi {
|
2023-09-12 13:18:33 +00:00
|
|
|
m := int(uint(lo+hi) >> 1)
|
2023-03-14 14:25:56 -04:00
|
|
|
mid := All[m].Name
|
|
|
|
|
if name == mid {
|
|
|
|
|
return &All[m]
|
|
|
|
|
}
|
|
|
|
|
if name < mid {
|
|
|
|
|
hi = m
|
|
|
|
|
} else {
|
|
|
|
|
lo = m + 1
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|