]> Cypherpunks repositories - gostls13.git/log
gostls13.git
2 years agodoc/go1.20: add release notes for cmd/go changes
Bryan C. Mills [Wed, 9 Nov 2022 15:45:50 +0000 (10:45 -0500)]
doc/go1.20: add release notes for cmd/go changes

Updates #41696.
Updates #50332.
Updates #41583.

Change-Id: I99e96a2996f14da262570a5cb5273dcdce45df2b
Reviewed-on: https://go-review.googlesource.com/c/go/+/449075
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>

2 years agocrypto/x509: expand package docs and clarify package target
Filippo Valsorda [Fri, 30 Oct 2020 15:40:27 +0000 (16:40 +0100)]
crypto/x509: expand package docs and clarify package target

Fixes #26624

Change-Id: Ifab3fc2209d71b9a7de383eaa5786b7446de25fa
Reviewed-on: https://go-review.googlesource.com/c/go/+/266541
Reviewed-by: Roland Shoemaker <roland@golang.org>
Run-TryBot: Roland Shoemaker <roland@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Auto-Submit: Roland Shoemaker <roland@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agodoc/go1.20: add TODOs found by x/build/cmd/relnote
Russ Cox [Mon, 14 Nov 2022 18:11:54 +0000 (13:11 -0500)]
doc/go1.20: add TODOs found by x/build/cmd/relnote

Change-Id: Id1e7cf8f088fa39d177a001e97c93cd660d0b3c6
Reviewed-on: https://go-review.googlesource.com/c/go/+/450256
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agocrypto/aes: rewrite ppc64le asm-cbc routine
Paul E. Murphy [Thu, 24 Mar 2022 17:06:27 +0000 (12:06 -0500)]
crypto/aes: rewrite ppc64le asm-cbc routine

This loads the keys once per call, not once per block. This
has the effect of unrolling the inner loop too. This allows
decryption to scale better with available hardware.

Noteably, encryption serializes crypto ops, thus no
performance improvement is seen, but neither is it reduced.

Care is also taken to explicitly clear keys from registers
as was done implicitly in the prior version.

Also, fix a couple of typos from copying the asm used to
load ESPERM.

Performance delta on POWER9:

name             old time/op    new time/op    delta
AESCBCEncrypt1K    1.10µs ± 0%    1.10µs ± 0%   +0.55%
AESCBCDecrypt1K     793ns ± 0%     415ns ± 0%  -47.70%

Change-Id: I52ca939fefa1d776a390a0869e7f4564058942b3
Reviewed-on: https://go-review.googlesource.com/c/go/+/441816
Run-TryBot: Paul Murphy <murp@ibm.com>
Reviewed-by: Joedian Reid <joedian@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
2 years agodatabase/sql: add a missing period to end of sentence in Rows.Scan docs
Brad Fitzpatrick [Mon, 14 Nov 2022 17:04:38 +0000 (09:04 -0800)]
database/sql: add a missing period to end of sentence in Rows.Scan docs

Change-Id: I331d4ff3e0f76a26c1c5ec41297117a5b1f16911
Reviewed-on: https://go-review.googlesource.com/c/go/+/450295
Reviewed-by: Damien Neil <dneil@google.com>
Auto-Submit: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Joedian Reid <joedian@golang.org>
2 years agotesting: fix error message when a parallel Cleanup calls runtime.Goexit
Changkun Ou [Mon, 27 Sep 2021 10:06:43 +0000 (12:06 +0200)]
testing: fix error message when a parallel Cleanup calls runtime.Goexit

Fixes #48502

Change-Id: I6054b043ebd2237e19897fdf1234b311d19facc7
Reviewed-on: https://go-review.googlesource.com/c/go/+/352350
Reviewed-by: Joedian Reid <joedian@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Changkun Ou <mail@changkun.de>
Reviewed-by: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>

2 years agointernal/godebug: define more efficient API
Russ Cox [Fri, 11 Nov 2022 17:36:31 +0000 (12:36 -0500)]
internal/godebug: define more efficient API

We have been expanding our use of GODEBUG for compatibility,
and the current implementation forces a tradeoff between
freshness and efficiency. It parses the environment variable
in full each time it is called, which is expensive. But if clients
cache the result, they won't respond to run-time GODEBUG
changes, as happened with x509sha1 (#56436).

This CL changes the GODEBUG API to provide efficient,
up-to-date results. Instead of a single Get function,
New returns a *godebug.Setting that itself has a Get method.
Clients can save the result of New, which is no more expensive
than errors.New, in a global variable, and then call that
variable's Get method to get the value. Get costs only two
atomic loads in the case where the variable hasn't changed
since the last call.

Unfortunately, these changes do require importing sync
from godebug, which will mean that sync itself will never
be able to use a GODEBUG setting. That doesn't seem like
such a hardship. If it was really necessary, the runtime could
pass a setting to package sync itself at startup, with the
caveat that that setting, like the ones used by runtime itself,
would not respond to run-time GODEBUG changes.

Change-Id: I99a3acfa24fb2a692610af26a5d14bbc62c966ac
Reviewed-on: https://go-review.googlesource.com/c/go/+/449504
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agoarchive/zip: don't read directories containing file data
Alexander Yastrebov [Fri, 11 Nov 2022 23:23:19 +0000 (23:23 +0000)]
archive/zip: don't read directories containing file data

Fixes #54801

Change-Id: I3d03516792975ddb09835b2621c57e12e7cbad35
GitHub-Last-Rev: 4faa7e14dcc48c05d707f1e137d915da24133e14
GitHub-Pull-Request: golang/go#56714
Reviewed-on: https://go-review.googlesource.com/c/go/+/449955
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Joedian Reid <joedian@golang.org>
2 years agospec: document the new unsafe functions SliceData, String, and StringData
Robert Griesemer [Thu, 10 Nov 2022 23:28:03 +0000 (15:28 -0800)]
spec: document the new unsafe functions SliceData, String, and StringData

For #53003.

Change-Id: If5d76c7b8dfcbcab919cad9c333c0225fc155859
Reviewed-on: https://go-review.googlesource.com/c/go/+/449537
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
2 years agomath/bits: directly calculate quo/rem when hi is zero in Div64
ruinan [Tue, 8 Nov 2022 08:49:53 +0000 (16:49 +0800)]
math/bits: directly calculate quo/rem when hi is zero in Div64

func Div64(hi, lo, y uint64) (quo, rem uint64) {...}

math/bits.Div64 returns the quotient and remainder of (hi, lo) divided
by y. When hi is zero, we can directly return lo/y, lo%y, which can save
a lot of unnecessary calculations.

The performance is measured on arm64 and the changes will only affect
the arch that doesn't have the intrinsic.

name                old time/op    new time/op    delta
DivWVW/1-10         4.62ns ± 1%    2.45ns ± 1%  -46.97%
DivWVW/2-10         12.4ns ± 0%    12.2ns ± 0%   -1.38%
DivWVW/3-10         17.4ns ± 1%    17.2ns ± 0%   -0.88%
DivWVW/4-10         21.4ns ± 1%    21.6ns ± 0%   +0.75%
DivWVW/5-10         22.1ns ± 1%    21.9ns ± 0%   -0.69%
DivWVW/10-10        53.4ns ± 1%    53.0ns ± 1%   -0.69%
DivWVW/100-10        641ns ± 1%     633ns ± 0%   -1.26%
DivWVW/1000-10      5.52µs ± 1%    5.44µs ± 0%   -1.39%
DivWVW/10000-10     54.9µs ± 1%    54.7µs ± 1%   -0.54%
DivWVW/100000-10     646µs ± 1%     643µs ± 1%     ~

name                  old speed      new speed    delta
DivWVW/1-10       13.8GB/s ± 1%  26.1GB/s ± 1%  +88.57%
DivWVW/2-10       10.3GB/s ± 0%  10.5GB/s ± 0%   +1.39%
DivWVW/3-10       11.1GB/s ± 1%  11.2GB/s ± 0%   +0.90%
DivWVW/4-10       12.0GB/s ± 1%  11.9GB/s ± 0%   -0.74%
DivWVW/5-10       14.5GB/s ± 1%  14.6GB/s ± 0%   +0.69%
DivWVW/10-10      12.0GB/s ± 1%  12.1GB/s ± 1%   +0.69%
DivWVW/100-10     10.0GB/s ± 1%  10.1GB/s ± 0%   +1.28%
DivWVW/1000-10    11.6GB/s ± 1%  11.8GB/s ± 0%   +1.41%
DivWVW/10000-10   11.6GB/s ± 1%  11.7GB/s ± 1%   +0.54%
DivWVW/100000-10  9.91GB/s ± 1%  9.95GB/s ± 1%     ~

Change-Id: I12014c2e2cdb2c91608079f7502592307af9e525
Reviewed-on: https://go-review.googlesource.com/c/go/+/449776
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Eric Fang <eric.fang@arm.com>
Reviewed-by: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
2 years agospec: clarify struct field and array element comparison order
Robert Griesemer [Thu, 10 Nov 2022 21:50:33 +0000 (13:50 -0800)]
spec: clarify struct field and array element comparison order

Fixes #8606.

Change-Id: I64b13b2ed61ecae4641264deb47c9f7653a80356
Reviewed-on: https://go-review.googlesource.com/c/go/+/449536
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agointernal/syscall/unix: use runtime.gostring for Gostring
Ian Lance Taylor [Fri, 11 Nov 2022 20:42:51 +0000 (12:42 -0800)]
internal/syscall/unix: use runtime.gostring for Gostring

Under the race detector, checkptr flags uses of unsafe.Slice that
result in slices that straddle multiple Go allocations.
Avoid that scenario by calling existing runtime code.

This fixes a failure on the darwin-.*-race builders introduced in
CL 446178.

Change-Id: I6e0fdb37e3c3f38d97939a8799bb4d10f519c5b9
Reviewed-on: https://go-review.googlesource.com/c/go/+/449936
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Ian Lance Taylor <iant@golang.org>

2 years agoos/exec: fix TestWaitInterrupt/WaitDelay error message
scott [Fri, 11 Nov 2022 03:55:08 +0000 (03:55 +0000)]
os/exec: fix TestWaitInterrupt/WaitDelay error message

As the comments say. Here we expect err to be nil instead of ctx.Err()

Change-Id: I4cd02d62ac0a13c9577a567de36742f13d140d36
GitHub-Last-Rev: 6bedfbc9d2511140d088dc9ee5f40015725f68db
GitHub-Pull-Request: golang/go#56698
Reviewed-on: https://go-review.googlesource.com/c/go/+/449737
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>

2 years agonet: handle correctly the _gateway and _outbound hostnames for nss myhostname
Mateusz Poliwczak [Fri, 11 Nov 2022 07:34:15 +0000 (07:34 +0000)]
net: handle correctly the _gateway and _outbound hostnames for nss myhostname

Fixes #56387

Change-Id: If412134344600caefec425699398522399986d4d
GitHub-Last-Rev: f33540ef8f90e9a8c09f3947aba8c01155516d39
GitHub-Pull-Request: golang/go#56388
Reviewed-on: https://go-review.googlesource.com/c/go/+/445075
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>

2 years agoall: fix problematic comments
cui fliter [Fri, 11 Nov 2022 02:05:39 +0000 (10:05 +0800)]
all: fix problematic comments

Change-Id: Ib6ea1bd04d9b06542ed2b0f453c718115417c62c
Reviewed-on: https://go-review.googlesource.com/c/go/+/449755
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Keith Randall <khr@google.com>
2 years agoruntime/race: add missing copyright headers to syso import files
Bryan C. Mills [Fri, 11 Nov 2022 18:12:47 +0000 (13:12 -0500)]
runtime/race: add missing copyright headers to syso import files

These were apparently missed in CL 424034.

Change-Id: I60fcdd8c16992177a23c0e701f4224b250cfabee
Reviewed-on: https://go-review.googlesource.com/c/go/+/449855
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>

2 years agonet: disable TestLookupDotsWithRemoteSource and TestLookupGoogleSRV
Michael Anthony Knyszek [Fri, 11 Nov 2022 17:26:45 +0000 (17:26 +0000)]
net: disable TestLookupDotsWithRemoteSource and TestLookupGoogleSRV

These tests fail consistently due to a DNS change causing widespread
trybot outages.

Fixes #56707.

Change-Id: Iebdf91254a922a48880021198f0f12f6bc16b6e7
Reviewed-on: https://go-review.googlesource.com/c/go/+/449640
Reviewed-by: Carlos Amedee <carlos@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
2 years agoruntime: delay incrementing freeindex in malloc
Cherry Mui [Wed, 9 Nov 2022 15:44:36 +0000 (10:44 -0500)]
runtime: delay incrementing freeindex in malloc

When the GC is scanning some memory (possibly conservatively),
finding a pointer, while concurrently another goroutine is
allocating an object at the same address as the found pointer, the
GC may see the pointer before the object and/or the heap bits are
initialized. This may cause the GC to see bad pointers and
possibly crash.

To prevent this, we make it that the scanner can only see the
object as allocated after the object and the heap bits are
initialized. As the scanner uses the freeindex to determine if an
object is allocated, we delay the increment of freeindex after the
initialization.

As currently in some code path finding the next free index and
updating the free index to a new slot past it is coupled, this
needs a small refactoring. In the new code mspan.nextFreeIndex
return the next free index but not update it (although allocCache
is updated). mallocgc will update it at a later time.

Fixes #54596.

Change-Id: I6dd5ccf743f2d2c46a1ed67c6a8237fe09a71260
Reviewed-on: https://go-review.googlesource.com/c/go/+/427619
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agocmd/go/internal/vcweb: fix a data race in the overview handler
Bryan C. Mills [Thu, 10 Nov 2022 22:00:18 +0000 (17:00 -0500)]
cmd/go/internal/vcweb: fix a data race in the overview handler

I forgot to lock the scriptResult in the overview handler, and
apparently a cmd/go test is incidentally fetching the overview page at
some point during test execution, triggering the race.

This race was caught almost immediately by the new
linux-amd64-longtest-race builder (see
https://build.golang.org/log/85ab78169a6382a73b1a26c89e64138b387da217).

Updates #27494.

Change-Id: I06ee8d54dba400800284401428ba4a59809983b2
Reviewed-on: https://go-review.googlesource.com/c/go/+/449517
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
2 years agocmd/link: exit if runtime.a is missing
Cherry Mui [Thu, 10 Nov 2022 22:17:54 +0000 (17:17 -0500)]
cmd/link: exit if runtime.a is missing

Many stages in the linker assume some runtime symbols exist.
Error out if the runtime package cannot be found.

Fixes #56685.

Change-Id: I39b2663f6d7419688e30e6d8650e5eb8fc43a2b1
Reviewed-on: https://go-review.googlesource.com/c/go/+/449638
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agotest: add regression test for issue 53439
Cuong Manh Le [Fri, 11 Nov 2022 06:02:44 +0000 (13:02 +0700)]
test: add regression test for issue 53439

Fixes #53439

Change-Id: I425af0f78153511034e4a4648f32ef8c9378a325
Reviewed-on: https://go-review.googlesource.com/c/go/+/449756
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
2 years agoos/user: use libc (not cgo) on macOS
Russ Cox [Thu, 10 Nov 2022 03:42:25 +0000 (22:42 -0500)]
os/user: use libc (not cgo) on macOS

With net converted to libc, os/user is the last remaining
cgo code in the standard libary on macOS.
Convert it to libc too.

Now only plugin remains as a cgo-using package on macOS.

Change-Id: Ibb518b5c62ef9ec1e6ab6191f4b576f7c5a4501c
Reviewed-on: https://go-review.googlesource.com/c/go/+/449316
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocrypto/ecdh: add boringcrypto support
Russ Cox [Tue, 16 Aug 2022 14:37:49 +0000 (10:37 -0400)]
crypto/ecdh: add boringcrypto support

Update crypto/ecdh to use boringcrypto when enabled.

Change-Id: Idd0ce06a22b1a62289b383c46893800621c7d97b
Reviewed-on: https://go-review.googlesource.com/c/go/+/423363
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocmd/compile: remove output registers limit for MUL/DIV on loong64
Wayne Zuo [Thu, 10 Nov 2022 14:55:00 +0000 (22:55 +0800)]
cmd/compile: remove output registers limit for MUL/DIV on loong64

This limitation exists on MIPS platform, but not on loong64.

Change-Id: I14bb3ec6895a8f7850873c171e1756843ffea72e
Reviewed-on: https://go-review.googlesource.com/c/go/+/449395
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
Reviewed-by: David Chase <drchase@google.com>
2 years agonet/http: fix triv.go
Russ Cox [Thu, 10 Nov 2022 20:26:27 +0000 (15:26 -0500)]
net/http: fix triv.go

CL 428137 replaced 'buf := make(bytes.Buffer)' with 'var buf strings.Builder'.
That change also requires passing &buf to io.Copy instead of buf.

Change-Id: I72b3faa46693e7d1441298f49dc6b95859c3bff3
Reviewed-on: https://go-review.googlesource.com/c/go/+/449635
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Run-TryBot: Russ Cox <rsc@golang.org>

2 years agocmd/compile: adjust PGO inlining default parameters
Cherry Mui [Thu, 10 Nov 2022 16:33:00 +0000 (11:33 -0500)]
cmd/compile: adjust PGO inlining default parameters

Adjust PGO inlining default parameters to 99% CDF threshold and
2000 budget. Benchmark results (mostly from Sweet) show that this
set of parameters performs reasonably well, with a few percent
speedup at the cost of a few percent binary size increase.

Also rename the debug flags to start with "pgo", to make it clear
that they are related to PGO.

Change-Id: I0749249b1298d1dc55a28993c37b3185f9d7639d
Reviewed-on: https://go-review.googlesource.com/c/go/+/449477
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocmd/internal/obj: reduce allocations in object file writing
Cherry Mui [Thu, 10 Nov 2022 21:10:32 +0000 (16:10 -0500)]
cmd/internal/obj: reduce allocations in object file writing

Some object file writer functions are structured like, having a
local variable, setting fields, then passing it to a Write method
which eventually calls io.Writer.Write. As the Write call is an
interface call it escapes the parameter, which in turn causes the
local variable to be heap allocated. To reduce allocation, use
pre-allocated scratch space instead.

Reduce number of allocations in the compiler:
name        old allocs/op     new allocs/op     delta
Template           679k ± 0%         644k ± 0%  -5.17%  (p=0.000 n=20+20)
Unicode            603k ± 0%         581k ± 0%  -3.67%  (p=0.000 n=20+20)
GoTypes           3.83M ± 0%        3.63M ± 0%  -5.30%  (p=0.000 n=20+20)
Compiler           353k ± 0%         342k ± 0%  -3.09%  (p=0.000 n=18+19)
SSA               31.4M ± 0%        30.4M ± 0%  -3.02%  (p=0.000 n=20+20)
Flate              397k ± 0%         373k ± 0%  -5.92%  (p=0.000 n=20+18)
GoParser           777k ± 0%         735k ± 0%  -5.37%  (p=0.000 n=20+20)
Reflect           2.07M ± 0%        1.90M ± 0%  -7.89%  (p=0.000 n=18+20)
Tar                605k ± 0%         568k ± 0%  -6.26%  (p=0.000 n=19+16)
XML                801k ± 0%         766k ± 0%  -4.36%  (p=0.000 n=20+20)
[Geo mean]        1.18M             1.12M       -5.02%

Change-Id: I9d02a72e459e645527196ac54b6ee643a5ea6bd3
Reviewed-on: https://go-review.googlesource.com/c/go/+/449637
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>

2 years agonet: auto-reload the /etc/nsswitch.conf on unix systems
Mateusz Poliwczak [Thu, 10 Nov 2022 18:52:22 +0000 (18:52 +0000)]
net: auto-reload the /etc/nsswitch.conf on unix systems

This change is made to align with the current (recently changed) glibc behaviour, it will allow the hostLookupOrder method to change its decisions on runtime (based on /etc/nsswitch.conf changes).

Fixes #56515

Change-Id: I241d67f053b6d2111eebcd67744adee02829166e
GitHub-Last-Rev: 82842c127474d5d225d2e9b68568387ee6b0ba04
GitHub-Pull-Request: golang/go#56588
Reviewed-on: https://go-review.googlesource.com/c/go/+/448075
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agocmd/go: enable -x in go mod graph
ianwoolf [Wed, 9 Nov 2022 08:52:41 +0000 (16:52 +0800)]
cmd/go: enable -x in go mod graph

Updates #35849

Change-Id: Ifa18e448c0d436c18d7204ac755cd36bc28cd612
Reviewed-on: https://go-review.googlesource.com/c/go/+/448935
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocmd/go: enable -x in go mod tidy
ianwoolf [Wed, 9 Nov 2022 08:40:24 +0000 (16:40 +0800)]
cmd/go: enable -x in go mod tidy

Updates #35849

Change-Id: I8b40a2de6a05880a9f939349a714b631888f5f94
Reviewed-on: https://go-review.googlesource.com/c/go/+/448915
Reviewed-by: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>

2 years agoruntime: retry thread creation on EAGAIN
Ian Lance Taylor [Tue, 1 Nov 2022 23:04:50 +0000 (16:04 -0700)]
runtime: retry thread creation on EAGAIN

This copies the logic we use in runtime/cgo, when calling pthread_create,
into runtime proper, when calling newosproc.

We only do this in newosproc, not newosproc0, because in newosproc0 we
need a nosplit function literal, and we need to pass arguments to it through
newosproc, which is a pain. Also newosproc0 is only called at process
startup, when thread creation is less likely to fail anyhow.

Fixes #49438

Change-Id: Ia26813952fdbae8aaad5904c9102269900a07ba9
Reviewed-on: https://go-review.googlesource.com/c/go/+/447175
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agocmd/compile: teach prove about signed domain relations of constant integer Phi's
Jakub Ciolek [Mon, 19 Sep 2022 11:08:08 +0000 (13:08 +0200)]
cmd/compile: teach prove about signed domain relations of constant integer Phi's

Implement extracting signed domain relations for OpPhi's composed entirely of integer constants.

darwin/arm benches (M1 Pro):

EqIfaceConcrete-10            0.83ns ± 0%  0.78ns ± 0%  -6.52%  p=0.000 n=8+9 )
ConvT2EByteSized/bool-10      1.33ns ± 0%  1.25ns ± 0%  -6.4%  ( p=0.000 n=9+8 )
ConvT2EByteSized/uint8-10     1.27ns ± 1%  1.25ns ± 0%  -1.82%( p=0.000 n=8+8 )
ConvT2ESmall-10               2.18ns ± 0%  2.14ns ± 1%  -1.97%( p=0.000 n=9+9 )

compilecmp linux/amd64  reports a 1.4% reduction in total size:

file                                                                     before   after    Δ       %
unicode/utf8.s                                                           4251     4317     +66     +1.553%
runtime/internal/sys.s                                                   599      593      -6      -1.002%
sync/atomic.s                                                            2277     1695     -582    -25.560%
internal/cpu.s                                                           5412     5249     -163    -3.012%
internal/abi.s                                                           1006     1045     +39     +3.877%
container/list.s                                                         4821     4858     +37     +0.767%
unicode/utf16.s                                                          1162     868      -294    -25.301%
hash/maphash.s                                                           2525     2625     +100    +3.960%
image/color.s                                                            7414     7045     -369    -4.977%
math.s                                                                   37278    37246    -32     -0.086%
math/cmplx.s                                                             8868     8876     +8      +0.090%
runtime.s                                                                496893   486910   -9983   -2.009%
runtime/metrics.s                                                        1145     1165     +20     +1.747%
sync.s                                                                   14257    15049    +792    +5.555%
internal/singleflight.s                                                  2557     2576     +19     +0.743%
internal/reflectlite.s                                                   59715    21713    -38002  -63.639%
math/rand.s                                                              10153    9980     -173    -1.704%
path.s                                                                   6007     6091     +84     +1.398%
sort.s                                                                   20704    20717    +13     +0.063%
io.s                                                                     19708    18899    -809    -4.105%
container/heap.s                                                         1922     1932     +10     +0.520%
cmd/vendor/golang.org/x/mod/semver.s                                     8013     7922     -91     -1.136%
strconv.s                                                                50530    49955    -575    -1.138%
vendor/golang.org/x/net/dns/dnsmessage.s                                 79054    80314    +1260   +1.594%
bytes.s                                                                  31195    31448    +253    +0.811%
text/tabwriter.s                                                         8952     9037     +85     +0.950%
strings.s                                                                43052    41627    -1425   -3.310%
crypto/internal/nistec/fiat.s                                            124219   123197   -1022   -0.823%
syscall.s                                                                85224    84600    -624    -0.732%
hash/adler32.s                                                           1224     1221     -3      -0.245%
encoding/ascii85.s                                                       4131     4149     +18     +0.436%
hash/crc32.s                                                             6304     6347     +43     +0.682%
encoding/base32.s                                                        8466     8473     +7      +0.083%
vendor/golang.org/x/text/transform.s                                     15633    16050    +417    +2.667%
bufio.s                                                                  24464    22091    -2373   -9.700%
reflect.s                                                                258373   164941   -93432  -36.162%
internal/syscall/unix.s                                                  1730     1299     -431    -24.913%
go/build/constraint.s                                                    12959    13581    +622    +4.800%
hash/crc64.s                                                             3604     3673     +69     +1.915%
hash/fnv.s                                                               4482     4609     +127    +2.834%
compress/bzip2.s                                                         9586     9891     +305    +3.182%
time.s                                                                   92081    89953    -2128   -2.311%
regexp/syntax.s                                                          78123    78293    +170    +0.218%
internal/saferio.s                                                       1746     1635     -111    -6.357%
html.s                                                                   4228     4233     +5      +0.118%
encoding/binary.s                                                        31383    31282    -101    -0.322%
image.s                                                                  37513    38082    +569    +1.517%
internal/poll.s                                                          45486    43956    -1530   -3.364%
context.s                                                                11096    10804    -292    -2.632%
io/fs.s                                                                  16921    18609    +1688   +9.976%
regexp.s                                                                 58983    58790    -193    -0.327%
crypto/cipher.s                                                          18686    18718    +32     +0.171%
crypto/internal/edwards25519/field.s                                     9473     9488     +15     +0.158%
crypto/sha1.s                                                            6477     6537     +60     +0.926%
encoding/base64.s                                                        10615    10215    -400    -3.768%
vendor/golang.org/x/crypto/internal/poly1305.s                           4522     4567     +45     +0.995%
cmd/internal/sys.s                                                       4729     4965     +236    +4.990%
os.s                                                                     53819    53697    -122    -0.227%
embed.s                                                                  6428     6437     +9      +0.140%
crypto/des.s                                                             5770     5762     -8      -0.139%
encoding/pem.s                                                           6425     6467     +42     +0.654%
crypto/internal/edwards25519.s                                           31850    31948    +98     +0.308%
image/draw.s                                                             28660    28594    -66     -0.230%
image/jpeg.s                                                             32246    32385    +139    +0.431%
index/suffixarray.s                                                      38665    38627    -38     -0.098%
crypto/hmac.s                                                            2546     2437     -109    -4.281%
fmt.s                                                                    70412    71396    +984    +1.397%
crypto/sha256.s                                                          5708     5683     -25     -0.438%
crypto/sha512.s                                                          8346     8313     -33     -0.395%
crypto/aes.s                                                             11586    11231    -355    -3.064%
path/filepath.s                                                          16499    16438    -61     -0.370%
crypto/internal/nistec.s                                                 65640    65713    +73     +0.111%
internal/lazyregexp.s                                                    2389     2284     -105    -4.395%
internal/intern.s                                                        2988     3266     +278    +9.304%
os/user.s                                                                12166    12106    -60     -0.493%
compress/lzw.s                                                           7292     7264     -28     -0.384%
encoding/hex.s                                                           5431     5405     -26     -0.479%
compress/flate.s                                                         46812    47932    +1120   +2.393%
net/url.s                                                                26853    26638    -215    -0.801%
crypto/ecdh.s                                                            10015    12228    +2213   +22.097%
vendor/golang.org/x/sys/cpu.s                                            5877     5599     -278    -4.730%
database/sql/driver.s                                                    16553    16671    +118    +0.713%
net/netip.s                                                              39077    40164    +1087   +2.782%
debug/plan9obj.s                                                         6765     6679     -86     -1.271%
math/big.s                                                               160530   161099   +569    +0.354%
archive/tar.s                                                            59285    59692    +407    +0.687%
debug/dwarf.s                                                            117589   116367   -1222   -1.039%
compress/gzip.s                                                          8288     8255     -33     -0.398%
archive/zip.s                                                            51813    49835    -1978   -3.818%
compress/zlib.s                                                          6206     6209     +3      +0.048%
runtime/debug.s                                                          11995    12212    +217    +1.809%
database/sql.s                                                           91280    90859    -421    -0.461%
crypto/dsa.s                                                             4816     4784     -32     -0.664%
net.s                                                                    272116   271353   -763    -0.280%
crypto/elliptic.s                                                        30485    32898    +2413   +7.915%
encoding/asn1.s                                                          47189    48186    +997    +2.113%
crypto/rand.s                                                            3812     3801     -11     -0.289%
debug/macho.s                                                            30712    27800    -2912   -9.482%
debug/pe.s                                                               23198    23542    +344    +1.483%
debug/elf.s                                                              50653    50335    -318    -0.628%
internal/xcoff.s                                                         18330    18578    +248    +1.353%
debug/gosym.s                                                            37011    34275    -2736   -7.392%
encoding/csv.s                                                           11440    11497    +57     +0.498%
encoding/json.s                                                          95650    92269    -3381   -3.535%
vendor/golang.org/x/crypto/cryptobyte.s                                  31261    31418    +157    +0.502%
encoding/gob.s                                                           131648   132481   +833    +0.633%
crypto/x509/pkix.s                                                       9030     9285     +255    +2.824%
crypto/rsa.s                                                             25753    25620    -133    -0.516%
debug/buildinfo.s                                                        7329     7360     +31     +0.423%
log.s                                                                    12153    12554    +401    +3.300%
encoding/xml.s                                                           90630    91544    +914    +1.008%
net/textproto.s                                                          17674    15707    -1967   -11.129%
vendor/golang.org/x/text/unicode/norm.s                                  66104    66296    +192    +0.290%
vendor/golang.org/x/net/http2/hpack.s                                    23542    24291    +749    +3.182%
mime/quotedprintable.s                                                   5074     5106     +32     +0.631%
mime.s                                                                   32982    32673    -309    -0.937%
net/http/internal.s                                                      5765     4748     -1017   -17.641%
flag.s                                                                   25247    25434    +187    +0.741%
vendor/golang.org/x/text/unicode/bidi.s                                  30444    30707    +263    +0.864%
go/token.s                                                               13689    14075    +386    +2.820%
go/doc/comment.s                                                         49201    47717    -1484   -3.016%
internal/buildcfg.s                                                      10468    9949     -519    -4.958%
text/scanner.s                                                           9812     9814     +2      +0.020%
os/exec.s                                                                34367    29498    -4869   -14.168%
mime/multipart.s                                                         17568    17083    -485    -2.761%
image/gif.s                                                              22965    22826    -139    -0.605%
crypto/x509.s                                                            142551   139844   -2707   -1.899%
text/template/parse.s                                                    82771    94885    +12114  +14.636%
go/scanner.s                                                             17306    17321    +15     +0.087%
internal/dag.s                                                           13123    13368    +245    +1.867%
go/constant.s                                                            29736    32872    +3136   +10.546%
image/png.s                                                              37126    37013    -113    -0.304%
internal/goroot.s                                                        3080     3212     +132    +4.286%
internal/diff.s                                                          7561     7909     +348    +4.603%
vendor/golang.org/x/net/idna.s                                           22454    22493    +39     +0.174%
go/ast.s                                                                 63945    68792    +4847   +7.580%
internal/pkgbits.s                                                       19638    19838    +200    +1.018%
text/template.s                                                          107139   100338   -6801   -6.348%
runtime/trace.s                                                          2844     2762     -82     -2.883%
internal/txtar.s                                                         2495     2483     -12     -0.481%
internal/profile.s                                                       117110   118516   +1406   +1.201%
log/syslog.s                                                             6615     6625     +10     +0.151%
vendor/golang.org/x/net/http/httpguts.s                                  3558     3580     +22     +0.618%
crypto/tls.s                                                             298298   292244   -6054   -2.030%
internal/trace.s                                                         69626    67477    -2149   -3.086%
vendor/golang.org/x/net/http/httpproxy.s                                 8164     7942     -222    -2.719%
go/doc.s                                                                 69092    71449    +2357   +3.411%
go/internal/typeparams.s                                                 1465     1338     -127    -8.669%
go/printer.s                                                             90427    82948    -7479   -8.271%
html/template.s                                                          91720    90853    -867    -0.945%
runtime/pprof.s                                                          70261    69793    -468    -0.666%
testing.s                                                                107098   98982    -8116   -7.578%
net/internal/socktest.s                                                  15715    15469    -246    -1.565%
net/mail.s                                                               17762    18044    +282    +1.588%
net/smtp.s                                                               11295    11484    +189    +1.673%
os/signal.s                                                              7647     7779     +132    +1.726%
go/parser.s                                                              111336   116170   +4834   +4.342%
testing/iotest.s                                                         13339    13379    +40     +0.300%
testing/quick.s                                                          8493     8516     +23     +0.271%
cmd/internal/bio.s                                                       11994    8754     -3240   -27.014%
internal/testenv.s                                                       7067     6779     -288    -4.075%
vendor/golang.org/x/net/nettest.s                                        27692    27770    +78     +0.282%
cmd/internal/objabi.s                                                    15031    14718    -313    -2.082%
cmd/internal/src.s                                                       14507    14515    +8      +0.055%
cmd/vendor/golang.org/x/arch/arm/armasm.s                                33278    33864    +586    +1.761%
go/format.s                                                              4517     4725     +208    +4.605%
go/build.s                                                               67444    70250    +2806   +4.160%
testing/fstest.s                                                         53785    52941    -844    -1.569%
cmd/vendor/golang.org/x/arch/arm64/arm64asm.s                            86346    87156    +810    +0.938%
cmd/internal/goobj.s                                                     12262    12327    +65     +0.530%
internal/fuzz.s                                                          88446    89608    +1162   +1.314%
cmd/vendor/golang.org/x/arch/ppc64/ppc64asm.s                            36435    37026    +591    +1.622%
cmd/internal/dwarf.s                                                     28919    29476    +557    +1.926%
cmd/internal/edit.s                                                      3375     3428     +53     +1.570%
cmd/vendor/golang.org/x/arch/x86/x86asm.s                                70465    70187    -278    -0.395%
cmd/internal/pkgpath.s                                                   4922     4422     -500    -10.158%
net/http.s                                                               548512   541160   -7352   -1.340%
cmd/internal/archive.s                                                   11103    11111    +8      +0.072%
testing/internal/testdeps.s                                              6384     6427     +43     +0.674%
cmd/internal/quoted.s                                                    2374     2708     +334    +14.069%
cmd/compile/internal/abt.s                                               15188    14795    -393    -2.588%
cmd/internal/gcprog.s                                                    6090     6131     +41     +0.673%
cmd/internal/codesign.s                                                  4395     4406     +11     +0.250%
go/types.s                                                               478152   479038   +886    +0.185%
cmd/internal/obj.s                                                       121049   114662   -6387   -5.276%
cmd/compile/internal/syntax.s                                            157912   156897   -1015   -0.643%
expvar.s                                                                 8906     8586     -320    -3.593%
net/http/cgi.s                                                           17411    17782    +371    +2.131%
net/http/cookiejar.s                                                     13763    13931    +168    +1.221%
net/http/httptest.s                                                      16213    16785    +572    +3.528%
net/http/pprof.s                                                         14556    14739    +183    +1.257%
net/http/httputil.s                                                      43808    44406    +598    +1.365%
net/rpc.s                                                                32868    30581    -2287   -6.958%
go/internal/gccgoimporter.s                                              45024    45409    +385    +0.855%
go/internal/gcimporter.s                                                 58540    53044    -5496   -9.388%
go/internal/srcimporter.s                                                10011    10451    +440    +4.395%
net/http/fcgi.s                                                          18344    18039    -305    -1.663%
cmd/internal/objfile.s                                                   45853    46153    +300    +0.654%
cmd/api.s                                                                34943    35806    +863    +2.470%
cmd/internal/obj/arm.s                                                   61126    61156    +30     +0.049%
net/rpc/jsonrpc.s                                                        5601     5271     -330    -5.892%
cmd/internal/obj/loong64.s                                               45594    45335    -259    -0.568%
cmd/internal/obj/arm64.s                                                 140572   140006   -566    -0.403%
cmd/internal/obj/mips.s                                                  53672    53637    -35     -0.065%
go/importer.s                                                            1989     2169     +180    +9.050%
cmd/internal/obj/riscv.s                                                 56721    56877    +156    +0.275%
cmd/addr2line.s                                                          1930     1906     -24     -1.244%
cmd/internal/obj/ppc64.s                                                 137317   115306   -22011  -16.029%
cmd/internal/obj/wasm.s                                                  34091    34162    +71     +0.208%
cmd/internal/obj/s390x.s                                                 110244   110444   +200    +0.181%
cmd/asm/internal/flags.s                                                 2234     2351     +117    +5.237%
cmd/internal/obj/x86.s                                                   86811    87534    +723    +0.833%
cmd/internal/buildid.s                                                   17303    17156    -147    -0.850%
cmd/compile/internal/base.s                                              29582    29675    +93     +0.314%
cmd/compile/internal/logopt.s                                            9859     9943     +84     +0.852%
cmd/cgo.s                                                                198958   203063   +4105   +2.063%
cmd/internal/browser.s                                                   1751     1803     +52     +2.970%
cmd/vendor/golang.org/x/tools/cover.s                                    9752     9759     +7      +0.072%
cmd/asm/internal/lex.s                                                   22668    21352    -1316   -5.806%
cmd/asm/internal/arch.s                                                  27642    29863    +2221   +8.035%
cmd/compile/internal/bitvec.s                                            5535     5542     +7      +0.126%
cmd/compile/internal/types.s                                             74646    74488    -158    -0.212%
cmd/dist.s                                                               185287   184450   -837    -0.452%
cmd/compile/internal/types2.s                                            477270   470783   -6487   -1.359%
cmd/cover.s                                                              29563    31341    +1778   +6.014%
cmd/doc.s                                                                54013    53299    -714    -1.322%
cmd/go/internal/fsys.s                                                   16751    16944    +193    +1.152%
cmd/fix.s                                                                64367    65866    +1499   +2.329%
cmd/asm/internal/asm.s                                                   60266    60767    +501    +0.831%
cmd/compile/internal/ir.s                                                252952   187941   -65011  -25.701%
cmd/go/internal/str.s                                                    3582     3690     +108    +3.015%
cmd/go/internal/lockedfile/internal/filelock.s                           2062     1960     -102    -4.947%
cmd/go/internal/cfg.s                                                    11331    11253    -78     -0.688%
cmd/asm.s                                                                2461     2474     +13     +0.528%
cmd/compile/internal/deadcode.s                                          5576     5812     +236    +4.232%
cmd/compile/internal/objw.s                                              5553     5450     -103    -1.855%
cmd/go/internal/par.s                                                    4473     4378     -95     -2.124%
cmd/compile/internal/abi.s                                               19219    19382    +163    +0.848%
cmd/go/internal/lockedfile.s                                             22412    14422    -7990   -35.651%
cmd/go/internal/auth.s                                                   2218     2250     +32     +1.443%
cmd/vendor/golang.org/x/mod/internal/lazyregexp.s                        2389     2284     -105    -4.395%
cmd/go/internal/base.s                                                   10079    10177    +98     +0.972%
cmd/go/internal/imports.s                                                16417    16159    -258    -1.572%
cmd/go/internal/trace.s                                                  4888     4895     +7      +0.143%
cmd/go/internal/web.s                                                    12130    12007    -123    -1.014%
cmd/vendor/golang.org/x/mod/sumdb/tlog.s                                 27662    28441    +779    +2.816%
cmd/vendor/golang.org/x/mod/module.s                                     20503    20758    +255    +1.244%
cmd/vendor/golang.org/x/mod/sumdb/dirhash.s                              3599     3601     +2      +0.056%
cmd/go/internal/cache.s                                                  23949    24705    +756    +3.157%
cmd/go/internal/cmdflag.s                                                3769     3748     -21     -0.557%
cmd/go/internal/search.s                                                 15584    15917    +333    +2.137%
cmd/vendor/golang.org/x/mod/sumdb/note.s                                 14260    14347    +87     +0.610%
cmd/internal/test2json.s                                                 8706     8575     -131    -1.505%
cmd/go/internal/tool.s                                                   2762     2756     -6      -0.217%
cmd/vendor/golang.org/x/mod/zip.s                                        36841    37335    +494    +1.341%
cmd/go/internal/mvs.s                                                    27581    30511    +2930   +10.623%
cmd/go/internal/modfetch/codehost.s                                      80858    76219    -4639   -5.737%
cmd/go/internal/version.s                                                3050     3046     -4      -0.131%
cmd/vendor/golang.org/x/mod/modfile.s                                    99002    98074    -928    -0.937%
cmd/go/internal/test/internal/genflags.s                                 2025     2032     +7      +0.346%
cmd/vendor/golang.org/x/sync/semaphore.s                                 2220     2210     -10     -0.450%
cmd/go/internal/vcs.s                                                    43959    45346    +1387   +3.155%
cmd/vendor/golang.org/x/mod/sumdb.s                                      27952    28265    +313    +1.120%
cmd/go/internal/modindex.s                                               79377    82223    +2846   +3.585%
cmd/compile/internal/typecheck.s                                         317102   310352   -6750   -2.129%
cmd/link/internal/benchmark.s                                            3621     3680     +59     +1.629%
cmd/link/internal/sym.s                                                  1816     1805     -11     -0.606%
cmd/go/internal/modconv.s                                                14909    14895    -14     -0.094%
cmd/gofmt.s                                                              29575    29779    +204    +0.690%
cmd/link/internal/dwtest.s                                               3879     3909     +30     +0.773%
cmd/vendor/golang.org/x/sys/unix.s                                       118975   119232   +257    +0.216%
cmd/nm.s                                                                 4675     4718     +43     +0.920%
cmd/go/internal/modfetch.s                                               111400   112088   +688    +0.618%
cmd/compile/internal/compare.s                                           11311    10693    -618    -5.464%
cmd/compile/internal/staticdata.s                                        14014    14277    +263    +1.877%
cmd/compile/internal/devirtualize.s                                      2548     2144     -404    -15.856%
cmd/compile/internal/inline.s                                            37591    37993    +402    +1.069%
cmd/compile/internal/escape.s                                            69777    68692    -1085   -1.555%
cmd/compile/internal/importer.s                                          52920    48544    -4376   -8.269%
cmd/internal/osinfo.s                                                    501      698      +197    +39.321%
cmd/link/internal/loader.s                                               79034    75315    -3719   -4.706%
cmd/pack.s                                                               8512     8600     +88     +1.034%
cmd/vendor/github.com/google/pprof/internal/elfexec.s                    5636     5711     +75     +1.331%
cmd/vendor/github.com/google/pprof/profile.s                             143898   145834   +1936   +1.345%
cmd/compile/internal/reflectdata.s                                       80184    81399    +1215   +1.515%
cmd/vendor/golang.org/x/term.s                                           24431    24478    +47     +0.192%
cmd/go/internal/modload.s                                                273375   282247   +8872   +3.245%
cmd/link/internal/loadpe.s                                               19813    17572    -2241   -11.311%
cmd/link/internal/loadmacho.s                                            20848    20767    -81     -0.389%
cmd/link/internal/loadelf.s                                              24458    23896    -562    -2.298%
cmd/link/internal/loadxcoff.s                                            11183    8913     -2270   -20.299%
cmd/vendor/github.com/ianlancetaylor/demangle.s                          264095   268313   +4218   +1.597%
cmd/compile/internal/staticinit.s                                        13176    13292    +116    +0.880%
cmd/go/internal/help.s                                                   5180     5320     +140    +2.703%
cmd/go/internal/workcmd.s                                                17702    17368    -334    -1.887%
cmd/test2json.s                                                          1581     1427     -154    -9.741%
cmd/vendor/github.com/google/pprof/internal/measurement.s                8449     8700     +251    +2.971%
cmd/go/internal/load.s                                                   123087   125064   +1977   +1.606%
cmd/vendor/golang.org/x/tools/internal/analysisinternal.s                11481    12506    +1025   +8.928%
cmd/vendor/golang.org/x/tools/internal/typeparams.s                      15239    15796    +557    +3.655%
cmd/vendor/github.com/google/pprof/internal/symbolz.s                    4760     4805     +45     +0.945%
cmd/vendor/github.com/google/pprof/internal/binutils.s                   37975    37526    -449    -1.182%
cmd/vendor/github.com/google/pprof/internal/graph.s                      47850    47968    +118    +0.247%
cmd/go/internal/fmtcmd.s                                                 2319     2373     +54     +2.329%
cmd/vendor/github.com/google/pprof/internal/symbolizer.s                 10195    10268    +73     +0.716%
cmd/vendor/golang.org/x/tools/go/analysis.s                              5790     6021     +231    +3.990%
cmd/vendor/golang.org/x/tools/go/analysis/passes/internal/analysisutil.s 2246     2519     +273    +12.155%
cmd/vendor/golang.org/x/tools/go/types/objectpath.s                      15720    16601    +881    +5.604%
cmd/vendor/golang.org/x/tools/go/ast/inspector.s                         4537     5777     +1240   +27.331%
cmd/go/internal/modcmd.s                                                 47192    47738    +546    +1.157%
cmd/vendor/golang.org/x/tools/go/analysis/internal/analysisflags.s       13575    14348    +773    +5.694%
cmd/vendor/github.com/google/pprof/internal/report.s                     79257    80089    +832    +1.050%
cmd/link/internal/ld.s                                                   553166   554375   +1209   +0.219%
cmd/vendor/golang.org/x/tools/go/analysis/passes/asmdecl.s               29123    29957    +834    +2.864%
cmd/vendor/golang.org/x/tools/go/analysis/passes/inspect.s               638      818      +180    +28.213%
cmd/vendor/golang.org/x/tools/go/analysis/internal/facts.s               12934    13735    +801    +6.193%
cmd/vendor/golang.org/x/tools/go/analysis/passes/buildtag.s              6903     7148     +245    +3.549%
cmd/vendor/golang.org/x/tools/go/analysis/passes/cgocall.s               7953     8549     +596    +7.494%
cmd/go/internal/work.s                                                   271866   275488   +3622   +1.332%
cmd/trace.s                                                              98068    98671    +603    +0.615%
cmd/vendor/github.com/google/pprof/internal/driver.s                     145066   145844   +778    +0.536%
cmd/link/internal/amd64.s                                                15589    15625    +36     +0.231%
cmd/link/internal/arm.s                                                  16490    16541    +51     +0.309%
cmd/link/internal/arm64.s                                                31835    31684    -151    -0.474%
cmd/go/internal/envcmd.s                                                 21012    20787    -225    -1.071%
cmd/go/internal/clean.s                                                  9306     9233     -73     -0.784%
cmd/go/internal/fix.s                                                    1906     2086     +180    +9.444%
cmd/go/internal/generate.s                                               10509    10758    +249    +2.369%
cmd/go/internal/get.s                                                    13782    14075    +293    +2.126%
cmd/go/internal/run.s                                                    4852     4914     +62     +1.278%
cmd/go/internal/list.s                                                   19576    19097    -479    -2.447%
cmd/go/internal/bug.s                                                    6253     5720     -533    -8.524%
cmd/go/internal/modget.s                                                 58449    59583    +1134   +1.940%
cmd/go/internal/vet.s                                                    7384     7228     -156    -2.113%
cmd/go/internal/test.s                                                   59654    60193    +539    +0.904%
cmd/link/internal/riscv64.s                                              9856     9931     +75     +0.761%
cmd/link/internal/ppc64.s                                                28471    27046    -1425   -5.005%
cmd/link/internal/s390x.s                                                15081    15524    +443    +2.937%
cmd/link/internal/wasm.s                                                 16770    16817    +47     +0.280%
cmd/link/internal/x86.s                                                  14008    14093    +85     +0.607%
cmd/vendor/github.com/google/pprof/driver.s                              8046     8124     +78     +0.969%
cmd/vendor/golang.org/x/tools/go/analysis/passes/assign.s                2010     2193     +183    +9.104%
cmd/vendor/golang.org/x/tools/go/analysis/passes/atomic.s                2132     2335     +203    +9.522%
cmd/go.s                                                                 6341     6546     +205    +3.233%
cmd/vendor/golang.org/x/tools/go/analysis/passes/bools.s                 6078     6348     +270    +4.442%
cmd/vendor/golang.org/x/tools/go/analysis/passes/composite.s             4457     4789     +332    +7.449%
cmd/vendor/golang.org/x/tools/go/analysis/passes/copylock.s              8814     9375     +561    +6.365%
cmd/link.s                                                               3829     4373     +544    +14.207%
cmd/vendor/golang.org/x/tools/go/analysis/passes/framepointer.s          2007     2265     +258    +12.855%
cmd/pprof.s                                                              9881     10052    +171    +1.731%
cmd/vendor/golang.org/x/tools/go/cfg.s                                   26215    27546    +1331   +5.077%
cmd/vendor/golang.org/x/tools/go/analysis/passes/httpresponse.s          3500     4205     +705    +20.143%
cmd/vendor/golang.org/x/tools/go/analysis/passes/ifaceassert.s           4790     5407     +617    +12.881%
cmd/vendor/golang.org/x/tools/go/ast/astutil.s                           50786    55269    +4483   +8.827%
cmd/vendor/golang.org/x/tools/go/analysis/passes/nilfunc.s               1754     2033     +279    +15.906%
cmd/vendor/golang.org/x/tools/go/analysis/passes/shift.s                 4514     5262     +748    +16.571%
cmd/vendor/golang.org/x/tools/go/analysis/passes/sigchanyzer.s           3455     3687     +232    +6.715%
cmd/vendor/golang.org/x/tools/go/analysis/passes/stdmethods.s            8064     8249     +185    +2.294%
cmd/vendor/golang.org/x/tools/go/analysis/passes/stringintconv.s         4547     4900     +353    +7.763%
cmd/vendor/golang.org/x/tools/go/analysis/passes/structtag.s             6975     7584     +609    +8.731%
cmd/vendor/golang.org/x/tools/go/analysis/passes/testinggoroutine.s      3375     3670     +295    +8.741%
cmd/vendor/golang.org/x/tools/go/types/typeutil.s                        12924    13870    +946    +7.320%
cmd/vendor/golang.org/x/tools/go/analysis/passes/unsafeptr.s             3251     3557     +306    +9.412%
cmd/vendor/golang.org/x/tools/go/analysis/passes/unreachable.s           6121     7575     +1454   +23.754%
cmd/vendor/golang.org/x/tools/go/analysis/passes/tests.s                 13925    14409    +484    +3.476%
cmd/vendor/golang.org/x/tools/go/analysis/passes/unusedresult.s          2953     3159     +206    +6.976%
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker.s                  11563    11962    +399    +3.451%
cmd/vendor/golang.org/x/tools/go/analysis/passes/errorsas.s              1735     1933     +198    +11.412%
cmd/vendor/golang.org/x/tools/go/analysis/passes/ctrlflow.s              4241     4486     +245    +5.777%
cmd/vendor/golang.org/x/tools/go/analysis/passes/loopclosure.s           3107     3460     +353    +11.361%
cmd/vendor/golang.org/x/tools/go/analysis/passes/unmarshal.s             1879     2141     +262    +13.944%
cmd/vendor/golang.org/x/tools/go/analysis/passes/printf.s                28740    29317    +577    +2.008%
cmd/vendor/golang.org/x/tools/go/analysis/passes/lostcancel.s            7188     7930     +742    +10.323%
cmd/vet.s                                                                1374     1554     +180    +13.100%
cmd/compile/internal/ssa.s                                               3631074  3571680  -59394  -1.636%
cmd/compile/internal/liveness.s                                          40423    40726    +303    +0.750%
cmd/compile/internal/ssagen.s                                            361816   362743   +927    +0.256%
cmd/compile/internal/mips64.s                                            16298    16330    +32     +0.196%
cmd/compile/internal/loong64.s                                           17376    17440    +64     +0.368%
cmd/compile/internal/mips.s                                              16121    16153    +32     +0.198%
cmd/compile/internal/arm64.s                                             29294    29346    +52     +0.178%
cmd/compile/internal/arm.s                                               26850    26882    +32     +0.119%
cmd/compile/internal/amd64.s                                             30945    31034    +89     +0.288%
cmd/compile/internal/dwarfgen.s                                          34464    35065    +601    +1.744%
cmd/compile/internal/ppc64.s                                             31621    31733    +112    +0.354%
cmd/compile/internal/wasm.s                                              11851    11889    +38     +0.321%
cmd/compile/internal/s390x.s                                             24168    24183    +15     +0.062%
cmd/compile/internal/x86.s                                               18090    18079    -11     -0.061%
cmd/compile/internal/walk.s                                              295003   295945   +942    +0.319%
cmd/compile/internal/noder.s                                             405458   403775   -1683   -0.415%
cmd/compile/internal/pkginit.s                                           30757    31951    +1194   +3.882%
cmd/compile/internal/gc.s                                                18788    18880    +92     +0.490%
total                                                                    20334984 20041049 -293935 -1.445%
package runtime/race/internal/amd64v3 was deleted
package runtime/race/internal/amd64v1 was deleted

Change-Id: Ibcd71480da1b53cfec4fa16c20f222b9a195e6da
Reviewed-on: https://go-review.googlesource.com/c/go/+/431797
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Jakub Ciolek <jakub@ciolek.dev>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocmd/go: allow -mod=vendor to be set outside of a module
Michael Matloob [Fri, 4 Nov 2022 21:27:38 +0000 (17:27 -0400)]
cmd/go: allow -mod=vendor to be set outside of a module

It will behave as if teh command-line-arguments module was vendored,
with zero dependencies, much as -mod=readonly works.

Fixes #56536

Change-Id: Ia02dda2f90d006b5917c3ae002ccb714987f27a3
Reviewed-on: https://go-review.googlesource.com/c/go/+/448019
Reviewed-by: Michael Matloob <matloob@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Michael Matloob <matloob@golang.org>

2 years agocmd/dist: define GOPPC64_{cpu} for PPC64 targets
Paul E. Murphy [Thu, 10 Mar 2022 17:51:00 +0000 (11:51 -0600)]
cmd/dist: define GOPPC64_{cpu} for PPC64 targets

This can be used to provide better instruction selection for assembly
implementations without having to implement two variants and dynamic
runtime selections when a newer GOPPC64 value is used.

Change-Id: I4331037d57b128137280aa7904d08d362391f81e
Reviewed-on: https://go-review.googlesource.com/c/go/+/449115
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
2 years agoos/signal/internal/pty: use libc (not cgo) on macOS
Russ Cox [Wed, 9 Nov 2022 20:43:54 +0000 (15:43 -0500)]
os/signal/internal/pty: use libc (not cgo) on macOS

This package is only used by tests anyway, but might as well
remove the cgo use on macOS so that it doesn't show up as
a cgo user, as part of our overall strategy to remove cgo use
in the standard library on macOS.

Change-Id: I5a1a39ed56373385f9d43a5e17098035dc1a451a
Reviewed-on: https://go-review.googlesource.com/c/go/+/449315
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agocmd/go/internal/load: remove a special case for "unsafe"
Bryan C. Mills [Thu, 10 Nov 2022 17:30:05 +0000 (12:30 -0500)]
cmd/go/internal/load: remove a special case for "unsafe"

We had a special case to zero out the Target field for package
"unsafe", which is not imported from a normal object file.

As of CL 449376 that special case has been folded into go/build's
logic for setting the PkgObj field, so the special case in
cmd/go/internal/load has become redundant.

(Noticed while investigating CL 449376.)

Updates #47257.
Updates #56687.

Change-Id: I1668123aa6230097aa75e55380d3e2c7937c4b64
Reviewed-on: https://go-review.googlesource.com/c/go/+/449515
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
2 years agoruntime: consolidate some low-level error reporting
Ian Lance Taylor [Tue, 1 Nov 2022 19:33:59 +0000 (12:33 -0700)]
runtime: consolidate some low-level error reporting

Use a single writeErrStr function. Avoid using global variables.
Use a single version of some error messages rather than duplicating
the messages in OS-specific files.

Change-Id: If259fbe78faf797f0a21337d14472160ca03efa0
Reviewed-on: https://go-review.googlesource.com/c/go/+/447055
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agonet: unify TCP keepalive behavior
database64128 [Thu, 10 Nov 2022 08:20:29 +0000 (08:20 +0000)]
net: unify TCP keepalive behavior

CL 107196 introduced a default TCP keepalive interval for Dialer and TCPListener (used by both ListenConfig and ListenTCP). Leaving DialTCP out was likely an oversight.

DialTCP's documentation says it "acts like Dial". Therefore it's natural to also expect DialTCP to enable TCP keepalive by default.

This commit addresses this disparity by moving the enablement logic down to the newTCPConn function, which is used by both dialer and listener.

Fixes #49345

Change-Id: I99c08b161c468ed0b993d1dbd2bd0d7e803f3826
GitHub-Last-Rev: 5c2f1cb0fbc5e83aa6cdbdf3ed4e23419d9bca65
GitHub-Pull-Request: golang/go#56565
Reviewed-on: https://go-review.googlesource.com/c/go/+/447917
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>

2 years agonet/http: build error chains in transport that can be unwrapped
Marcus Weiner [Wed, 9 Nov 2022 10:37:28 +0000 (10:37 +0000)]
net/http: build error chains in transport that can be unwrapped

In some places of the HTTP transport errors were constructed that
wrapped other errors without providing the ability to call
`errors.Unwrap` on them to get the underlying error.
These places have been fixed to use `%w` when using `fmt.Errorf`
or to implement `Unwrap() error`.

Fixes #56435

Change-Id: Ieed3359281574485c8d0b18298e25e5f1e14555c
GitHub-Last-Rev: 504efbc507a50bd2cf63001511733e232927089f
GitHub-Pull-Request: golang/go#56451
Reviewed-on: https://go-review.googlesource.com/c/go/+/445775
Reviewed-by: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Damien Neil <dneil@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Damien Neil <dneil@google.com>

2 years agocrypto/internal/edwards25519: replace scalar field with fiat-crypto
Filippo Valsorda [Mon, 1 Aug 2022 11:11:55 +0000 (13:11 +0200)]
crypto/internal/edwards25519: replace scalar field with fiat-crypto

This was the last piece of ref10 code, including the infamous "Christmas
tree" in scMulAdd, that approximately all Ed25519 implementations
inherited. Replace the whole scalar field implementation with a
fiat-crypto generated one, like those in crypto/internal/nistec/fiat.

The only complexity is the wide reduction (both for the 64-byte one and
for the clamped input). For that we do a limbed reduction suggested by
Frank Denis.

Some minor housekeeping and test changes from filippo.io/edwards25519
are included, as part of syncing with downstream.

Ignoring the autogenerated file, the diff is

    268 insertions(+), 893 deletions(-)

George Tankersley signed the Individual CLA and authorized me to submit
this change on his behalf at the time he contributed it to
filippo.io/edwards25519.

Co-authored-by: George Tankersley <george.tankersley@gmail.com>
Change-Id: I4084b4d3813f36e16b3d8839df75da1b4fd7846b
Reviewed-on: https://go-review.googlesource.com/c/go/+/420454
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2 years agointernal/reflectlite: use unsafe.String in name.name and name.tag
Tobias Klauser [Wed, 9 Nov 2022 10:09:42 +0000 (11:09 +0100)]
internal/reflectlite: use unsafe.String in name.name and name.tag

Same as CL 448675 did in package reflect.

Change-Id: I26277d8dcf2d2e204724d6fa5cc6e1ad391633f5
Reviewed-on: https://go-review.googlesource.com/c/go/+/448936
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agoos: document that WriteFile is not atomic
Richard Tweed [Thu, 10 Nov 2022 00:04:07 +0000 (00:04 +0000)]
os: document that WriteFile is not atomic

Fixes #56173

Change-Id: I03a3ad769c99c0bdb78b1d757173d630879fd4dd
GitHub-Last-Rev: e3e31fa0b95aba363b13c45f562e3a4c8b31f2cc
GitHub-Pull-Request: golang/go#56282
Reviewed-on: https://go-review.googlesource.com/c/go/+/443495
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>

2 years agonet: add support for /etc/hosts aliases using go resolver
Mateusz Poliwczak [Thu, 10 Nov 2022 18:07:57 +0000 (18:07 +0000)]
net: add support for /etc/hosts aliases using go resolver

It adds support for /etc/hosts aliases and fixes the difference between the glibc cgo and the go DNS resolver.
Examples: https://pastebin.com/Fv6UcAVr

Fixes #44741

Change-Id: I98c484fced900731fbad800278b296028a45f044
GitHub-Last-Rev: 3d47e44f11c350df906d0c986e41891dd6e8d929
GitHub-Pull-Request: golang/go#51004
Reviewed-on: https://go-review.googlesource.com/c/go/+/382996
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agonet/http: add ResponseController and per-handler timeouts
Damien Neil [Fri, 29 Jul 2022 16:27:16 +0000 (09:27 -0700)]
net/http: add ResponseController and per-handler timeouts

The ResponseController type provides a discoverable interface
to optional methods implemented by ResponseWriters.

c := http.NewResponseController(w)
c.Flush()

vs.

if f, ok := w.(http.Flusher); ok {
f.Flush()
}

Add the ability to control per-request read and write deadlines
via the ResponseController SetReadDeadline and SetWriteDeadline
methods.

For #54136

Change-Id: I3f97de60d4c9ff150cda559ef86c6620eee665d2
Reviewed-on: https://go-review.googlesource.com/c/go/+/436890
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Damien Neil <dneil@google.com>

2 years agonet/http: add tests for Server.ReadTimeout and server.WriteTimeout
Damien Neil [Fri, 28 Oct 2022 18:43:13 +0000 (11:43 -0700)]
net/http: add tests for Server.ReadTimeout and server.WriteTimeout

We don't seem to have tests verifying that handler reads from the
request body or writes to the response body time out properly.
Add some.

For #49837
For #56478

Change-Id: I0828edd6c86b071073fd1b22ccbb24f86114ab94
Reviewed-on: https://go-review.googlesource.com/c/go/+/446255
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocmd/internal/obj: adjust (*Link).AllPos comment in inl.go
David Chase [Thu, 10 Nov 2022 16:45:23 +0000 (11:45 -0500)]
cmd/internal/obj: adjust (*Link).AllPos comment in inl.go

AllPos truncates and overwrites its slice-storage input instead
of appending.  This makes that clear.

Change-Id: I81653ff49a4a7d14fe9446fd6620943f3b20bbd3
Reviewed-on: https://go-review.googlesource.com/c/go/+/449478
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
2 years agoruntime: make Malloc benchmarks actually benchmark malloc
Cherry Mui [Thu, 10 Nov 2022 16:23:40 +0000 (11:23 -0500)]
runtime: make Malloc benchmarks actually benchmark malloc

The compiler is too clever so the allocations are currently
avoided. Rewrite to make them actually allocate.

Change-Id: I9542e1365120b2ace318360883b0b01ed5670da7
Reviewed-on: https://go-review.googlesource.com/c/go/+/449476
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agogo/build: omit PkgObj for packages "unsafe" and "builtin"
Bryan C. Mills [Thu, 10 Nov 2022 15:03:21 +0000 (10:03 -0500)]
go/build: omit PkgObj for packages "unsafe" and "builtin"

Package "builtin" is not a real, importable package; it exists only
for documentation. Package "unsafe" is not compiled into an object
file from its source code; instead, imports of "unsafe" are handled
specially by the compiler.

(In Go 1.19.3, package "unsafe" did not have an install target, while
package "builtin" did but that target was never written.)

Fixes #56687.
Updates #47257.

Change-Id: I1d1e90ff9e1629b80e0df93e1f7e17242c8dab69
Reviewed-on: https://go-review.googlesource.com/c/go/+/449376
Reviewed-by: Michael Matloob <matloob@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agogo/build: in TestImportDirTarget, only expect an install target when cgo is enabled
Bryan C. Mills [Thu, 10 Nov 2022 14:44:39 +0000 (09:44 -0500)]
go/build: in TestImportDirTarget, only expect an install target when cgo is enabled

As of CL 448803, packages in GOROOT only have install targets when
they have cgo source files. When cgo is not enabled, that condition
is necessarily false, and no install target will exist.

For #47257.

Change-Id: I653a9c5f89d18a5841810f3de8d490bd7cb7e922
Reviewed-on: https://go-review.googlesource.com/c/go/+/449375
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>

2 years agocmd/compile: add ability to hash-debug on file:line, including inlining
David Chase [Mon, 7 Nov 2022 16:02:08 +0000 (11:02 -0500)]
cmd/compile: add ability to hash-debug on file:line, including inlining

Modified the fmahash gc debug flag to use this, and modified the
test to check for a hash match that includes inlining.  Also
made the test non-short to ensure portability.

Note fma.go has been enhanced into an FMA test that requires
two separate FMAs in order to "fail"; if either one is 2-rounding,
then it "passes".  (It neither passes nor fails here; its role
is to demonstrate that the FMAs are correctly reported; the
enhanced failure mode was discovered while testing the search
tool.)

Change-Id: I4e328e3654f442d498eac982135420abb59c5434
Reviewed-on: https://go-review.googlesource.com/c/go/+/448358
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Run-TryBot: David Chase <drchase@google.com>

2 years agointernal/types: fix the iota value in error code declarations
Robert Findley [Thu, 10 Nov 2022 16:15:26 +0000 (11:15 -0500)]
internal/types: fix the iota value in error code declarations

The new "InvalidSyntaxTree" node in the error code declaration
inadvertently incremented the value of iota by 1. Fix this by moving it
to its own declaration.

Change-Id: I34b33a8caddbbb9e41f431321ec0e5863dc15055
Reviewed-on: https://go-review.googlesource.com/c/go/+/449475
Run-TryBot: Robert Findley <rfindley@google.com>
Auto-Submit: Robert Findley <rfindley@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agocmd/compile/internal/importer: turn off debugging output
Robert Griesemer [Thu, 10 Nov 2022 00:41:05 +0000 (16:41 -0800)]
cmd/compile/internal/importer: turn off debugging output

Also, remove `debug` constant. Was not used.
Follow-up on CL 442303.

Fixes #56681.

Change-Id: Ia1499511ba553670617bcb9b7c699412e8df0669
Reviewed-on: https://go-review.googlesource.com/c/go/+/449238
Reviewed-by: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Robert Griesemer <gri@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
2 years agogo/doc: recognize methods on generic types as Funcs
Keith Randall [Wed, 9 Nov 2022 23:29:09 +0000 (15:29 -0800)]
go/doc: recognize methods on generic types as Funcs

When writing markdown for godoc, we can reference a method M of
a type T as [T.M]. This doesn't currently work for methods on generic
types because the declaration of the type parameter gets in the way.
(You'd have to write [T[P].M] and that doesn't parse, and even if it
did you'd have to spell "P" correctly.)

Get rid of the type parameter when building the list of Funcs so
[T.M] works in godoc if T is generic.

Change-Id: I8ef5264124a944967df3ce20ddd40a2447ff4187
Reviewed-on: https://go-review.googlesource.com/c/go/+/449236
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agoos/user: allocate buffers in Go memory, not C memory
Ian Lance Taylor [Thu, 10 Nov 2022 04:55:17 +0000 (20:55 -0800)]
os/user: allocate buffers in Go memory, not C memory

Since the first implementation of os/user, it's called C malloc
to allocate memory for buffers. However, the buffers are just
used for temporary storage, and we can just a []byte instead.

To make this work without causing cgo pointer errors, we move
the pwd and grp structs into C stack memory, and just return them.
It's OK to store a Go pointer on the C stack temporarily.

Change-Id: I9f8ffb6e51df1e585276c259fe99359d7835df87
Reviewed-on: https://go-review.googlesource.com/c/go/+/449335
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agoexpvar: convert f to atomic type
cui fliter [Sun, 4 Sep 2022 15:51:20 +0000 (15:51 +0000)]
expvar: convert f to atomic type

For #53821

Change-Id: I2e7c5376e6ca3e3dbb2f92ad771aed62fca8b793
GitHub-Last-Rev: b67ddf81ecec1892871044fbcb143ca4256ebc55
GitHub-Pull-Request: golang/go#54864
Reviewed-on: https://go-review.googlesource.com/c/go/+/428195
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>

2 years agocmd/go: cache compiler flag info
Russ Cox [Fri, 11 Feb 2022 22:17:54 +0000 (17:17 -0500)]
cmd/go: cache compiler flag info

When you run 'go env' or any command that needs to consider
what the default gcc flags are (such as 'go list net' or
'go list <any package with net as a dependency>'),
the go command runs gcc (or clang) a few times to see what
flags are available.

These runs can be quite expensive on some systems, particularly
Macs that seem to need to occasionally cache something before
gcc/clang can execute quickly.

To fix this, cache the derived information about gcc under a cache
key derived from the size and modification time of the compiler binary.
This is not foolproof, but it should be good enough.

% go install cmd/go
% time go env >/dev/null
        0.22 real         0.01 user         0.01 sys
% time go env >/dev/null
        0.03 real         0.01 user         0.01 sys
%

Fixes #50982.

Change-Id: Iba7955dd10f610f2793e1accbd2d06922f928faa
Reviewed-on: https://go-review.googlesource.com/c/go/+/392454
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>

2 years agocmd/api: point to API docs in all.bash failure
Russ Cox [Wed, 9 Nov 2022 13:50:51 +0000 (08:50 -0500)]
cmd/api: point to API docs in all.bash failure

When people add new API and get an all.bash failure,
they often don't know about the API checker at all.
Point to the README in the failure message, to try to
help them find what they need to know.

Change-Id: I6b148ec414d212033b371357a5e8c6ab79bb50a4
Reviewed-on: https://go-review.googlesource.com/c/go/+/449015
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
2 years agocrypto: allow hash.Hash for OAEP and MGF1 to be specified independently
Aleks Rudzitis [Thu, 21 Jul 2022 18:19:42 +0000 (11:19 -0700)]
crypto: allow hash.Hash for OAEP and MGF1 to be specified independently

crypto/rsa assumes RSA OAEP uses the same hash to be used for both the label
and the mask generation function. However, implementations in other languages,
such as Java and Python, allow these parameters to be specified independently.

This change allows the MGF hash to be specified independently for decrypt
operations in order to allow decrypting ciphertexts generated in other
environments.

Fixes: #19974
Change-Id: If453d628f0da354ceb3b52863f30087471670f7b
Reviewed-on: https://go-review.googlesource.com/c/go/+/418874
Auto-Submit: Andrew Bonventre <andybons@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
Run-TryBot: Andrew Bonventre <andybons@golang.org>

2 years agoencoding/xml: error when more than one colon in qualified names
Constantin Konstantinidis [Sat, 23 Jul 2022 07:11:32 +0000 (09:11 +0200)]
encoding/xml: error when more than one colon in qualified names

Add test.

Fixes #20396

Change-Id: I89e9013eb338f831e1908e390b284794df78fb6b
Reviewed-on: https://go-review.googlesource.com/c/go/+/103875
Auto-Submit: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agoencoding/xml: disallow empty namespace when prefix is set
Constantin Konstantinidis [Mon, 20 Aug 2018 18:29:30 +0000 (20:29 +0200)]
encoding/xml: disallow empty namespace when prefix is set

Non-regression tests are added.

Fixes #8068

Change-Id: Icb36c910bbf4955743b7aa8382002b2d9246fadc
Reviewed-on: https://go-review.googlesource.com/c/go/+/105636
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>

2 years agoapi/next/54299: add missing newline
Bryan C. Mills [Wed, 9 Nov 2022 22:06:02 +0000 (17:06 -0500)]
api/next/54299: add missing newline

Updates #54299.

Change-Id: I20a9191fa3c78810987ace69527d34091c4a42fb
Reviewed-on: https://go-review.googlesource.com/c/go/+/449215
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agounsafe: add docs for SliceData, String, and StringData
Matthew Dempsky [Wed, 31 Aug 2022 17:24:04 +0000 (10:24 -0700)]
unsafe: add docs for SliceData, String, and StringData

Updates #53003.

Change-Id: I076d1eb4bd0580002ad8008f3ca213c5edc951ee
Reviewed-on: https://go-review.googlesource.com/c/go/+/427095
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agoRevert "path/filepath: change IsAbs("NUL") to return true"
Damien Neil [Tue, 8 Nov 2022 22:21:30 +0000 (14:21 -0800)]
Revert "path/filepath: change IsAbs("NUL") to return true"

This reverts commit d154ef60a0c88be98c70bbe1c5735fb7b1f45250.

This change made IsAbs return true for certain reserved filenames,
but does not consistently detect reserved names. For example,
"./COM1", "//./COM1", and (on some Windows versions) "COM1.txt"
all refer to the COM1 device, but IsAbs detects none of them.

Since NUL is not an absolute path, do not attempt to detect it
or other device paths in IsAbs. See #56217 for more discussion
of IsAbs and device paths.

For #56217.

Change-Id: If4bf81c7e1a2e8842206c7c5268555102140dae8
Reviewed-on: https://go-review.googlesource.com/c/go/+/448898
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Quim Muntal <quimmuntal@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
2 years agoos: remove special casing of NUL in Windows file operations
Damien Neil [Wed, 9 Nov 2022 00:10:47 +0000 (16:10 -0800)]
os: remove special casing of NUL in Windows file operations

Some file operations, notably Stat and Mkdir, special cased their
behavior when operating on a file named "NUL" (case-insensitive).
This check failed to account for the many other names of the NUL
device, as well as other non-NUL device files: "./nul", "//./nul",
"nul.txt" (on some Windows versions), "con", etc.

Remove the special case.

os.Mkdir("NUL") now returns no error. This is consonant with the
operating system's behavior: CreateDirectory("NUL") succeeds, as
does "MKDIR NUL" on the command line.

os.Stat("NUL") now follows the existing path for FILE_TYPE_CHAR devices,
returning a FileInfo which correctly reports the file as being a
character device.

os.Stat and os.File.Stat have common elements of their logic unified.

For #24482.
For #24556.
For #56217.

Change-Id: I7e70f45901127c9961166dd6dbfe0c4a10b4ab64
Reviewed-on: https://go-review.googlesource.com/c/go/+/448897
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Quim Muntal <quimmuntal@gmail.com>
2 years agopath/filepath: detect all forms of \\ volume paths on Windows
Damien Neil [Wed, 19 Oct 2022 21:41:03 +0000 (14:41 -0700)]
path/filepath: detect all forms of \\ volume paths on Windows

Previously, the volumeNameLen function checked for UNC paths starting
with two slashes, a non-'.' character, and another slash. This misses
volume names such as "\\.\C:\".

The previous check for volume names rejects paths beginning
with "\\.". This is incorrect, because while these names are not
UNC paths, "\\.\C:\" is a DOS device path prefix indicating the
C: device. It also misses UNC path prefixes in the form
"\\.\UNC\server\share\".

The previous check for UNC paths also rejects any path with an
empty or missing host or share component. This leads to a number
of possibly-incorrect behaviors, such as Clean(`\\a`) returning `\a`.
Converting the semantically-significant `\\` prefix to a single `\`
seems wrong.

Consistently treat paths beginning with two separators as having
a volume prefix.

Update VolumeName to detect DOS device paths (`\\.\` or `\\?\`),
DOS device paths linking to UNC paths (`\\.\UNC\Server\Share`
or `\\?\UNC\Server\Share`), and UNC paths (`\\Server\Share\`).

Clean(`\\a`) = `\\a`
Join(`\\`, `a`, `b`) = `\\a\b`

In addition, normalize path separators in VolumeName for consistency
with other functions which Clean their result.

Fixes #56336

Change-Id: Id01c33029585bfffc313dcf0ad42ff6ac7ce42fd
Reviewed-on: https://go-review.googlesource.com/c/go/+/444280
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Quim Muntal <quimmuntal@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2 years agocmd/go: improve handling of os.DevNull on Windows
Damien Neil [Wed, 9 Nov 2022 17:42:04 +0000 (09:42 -0800)]
cmd/go: improve handling of os.DevNull on Windows

The "go test" and "go build" commands have special-case behavior when
passed "-o /dev/null". These checks are case-sensitive and assume that
os.DevNull is an absolute path. Windows filesystems are case-insensitive
and os.DevNull is NUL, which is not an absolute path.

CL 145220 changed filepath.IsAbs to report "NUL" as absolute to work
around this issue; that change is being rolled back and a better fix here
is to compare the value of -o against os.DevNull before attempting to
merge it with a base path. Make that fix.

On Windows, accept any capitilization of "NUL" as the null device.

This change doesn't cover every possible name for the null device, such
as "-o //./NUL", but this test is for efficiency rather than correctness.
Accepting just the most common name is fine.

For #56217.

Change-Id: I60b59b671789fc456074d3c8bc755a74ea8d5765
Reviewed-on: https://go-review.googlesource.com/c/go/+/449117
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
2 years agodoc/go1.20: add a release note for os/exec API changes
Bryan C. Mills [Wed, 9 Nov 2022 16:10:59 +0000 (11:10 -0500)]
doc/go1.20: add a release note for os/exec API changes

Updates #50436.

Change-Id: Ib6771221bda1c81d5593b29d7287ebcf169882ff
Reviewed-on: https://go-review.googlesource.com/c/go/+/449076
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>

2 years agocmd/go: mod vendor: emit error if any replacement in vendor directory
rleungx [Sun, 6 Jan 2019 06:23:36 +0000 (14:23 +0800)]
cmd/go: mod vendor: emit error if any replacement in vendor directory

Fixes #29169

Change-Id: I3a0fd506c45ad999a2fc6f75f9b3e8a5118ad91b
Reviewed-on: https://go-review.googlesource.com/c/go/+/156400
Auto-Submit: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>

2 years agocmd/go: decide whether to install .a based on number of CgoFiles
Michael Matloob [Tue, 8 Nov 2022 22:33:47 +0000 (17:33 -0500)]
cmd/go: decide whether to install .a based on number of CgoFiles

Instead of hardcoding the set of five packages that depend on cgo to
decide whether a package should have an install target, make the
decision based on whether the package has any CgoFiles. This means that
in nocgo configurations, there will be no installed packages, and that
if an GOOS/GOARCH combination doesn't have cgo files we don't
unnecessarily install a .a.

Because the determination of whether a file is a CgoFile is made later
in the Import functions, the choice of whether to add a PkgObj for teh
case there are CgoFiles is moved later. One concern here is that in some
cases, PkgObj may be set differently in the case of the FindOnly mode,
since the determination is moved across the boundary. We might want
to always set PkgObj after the FindOnly boundary for consistency? cmd/go
doesn't seem to use it when calling Import with FindOnly.

Also remove internal/buildinternal/needs_install.go because we will be
checking whether to install based on the number of cgo files and it
might be overkill to make the NeedsInstalledDotA function be the
equivalent of len(input) > 0.

For #47257

Change-Id: I5f7f2137dc99aaeb2e2695c14e0222093a6b2407
Reviewed-on: https://go-review.googlesource.com/c/go/+/448803
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Matloob <matloob@golang.org>

2 years agocmd/go/testdata: don't set GOPATH=NUL in test
Damien Neil [Wed, 9 Nov 2022 01:07:40 +0000 (17:07 -0800)]
cmd/go/testdata: don't set GOPATH=NUL in test

An upcoming change to the filepath package to make IsAbs("NUL")==false
on Windows will cause this test to fail, since it sets GOPATH=NUL and
GOPATH must be an absolute path.

Set GOPATH to the name of a text file instead. (The intent is that GOPATH
be set to a path that is not writable.)

For #56217.

Change-Id: I18e645fe11547d02d1a2e0e580085e6348c4009a
Reviewed-on: https://go-review.googlesource.com/c/go/+/448896
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Damien Neil <dneil@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agointernal/fsys: follow root symlink in fsys.Walk
Michael Matloob [Mon, 7 Nov 2022 19:30:45 +0000 (14:30 -0500)]
internal/fsys: follow root symlink in fsys.Walk

If fsys.Walk is called with a root directory that is a symlink, follow
the symlink when doing the walk. This allows for users setting their
current directory to a symlink to a module.

Fixes #50807

Change-Id: Ie65a7cb804b87dea632ea6c758c20adcfa62fcd4
Reviewed-on: https://go-review.googlesource.com/c/go/+/448360
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agonet/http: add Transport.OnProxyConnectResponse
cuiweixie [Wed, 2 Nov 2022 13:07:46 +0000 (21:07 +0800)]
net/http: add Transport.OnProxyConnectResponse

Fixes #54299

Change-Id: I3a29527bde7ac71f3824e771982db4257234e9ef
Reviewed-on: https://go-review.googlesource.com/c/go/+/447216
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: xie cui <523516579@qq.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
2 years agocmd/go: more informative test failures when GOROOT is stale
Damien Neil [Wed, 9 Nov 2022 01:02:49 +0000 (17:02 -0800)]
cmd/go: more informative test failures when GOROOT is stale

If GOROOT is stale, test fail when commands unexpectedly write to GOROOT.
Include an message in the test failure indicating that this is a possible
and expected reason for the failure, and how to fix it.

For #48698.

Change-Id: I057c20260bab09aebf684e8f20794ab8fc0ede1e
Reviewed-on: https://go-review.googlesource.com/c/go/+/448895
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Damien Neil <dneil@google.com>

2 years agocmd/go: print test2json start events
Russ Cox [Mon, 7 Nov 2022 16:58:45 +0000 (11:58 -0500)]
cmd/go: print test2json start events

Add a new "Action":"start" test2json event to mark the
start of the test binary execution. This adds useful information
to the JSON traces, and it also lets programs watching test
execution see the order in which the tests are being run,
because we arrange for the starts to happen sequentially.

Change-Id: I9fc865a486a55a7e9315f8686f59a2aa06455884
Reviewed-on: https://go-review.googlesource.com/c/go/+/448357
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
2 years agocrypto/x509: allow BoringCrypto to use 4096-bit keys
Russ Cox [Thu, 3 Nov 2022 17:08:52 +0000 (13:08 -0400)]
crypto/x509: allow BoringCrypto to use 4096-bit keys

FIPS-140 has been updated to allow 4096-bit RSA keys.
Allow them in certificate processing.

Fixes #41147.

Change-Id: I4c6bcb1b137a200dfe70cebc605ae57f49871184
Reviewed-on: https://go-review.googlesource.com/c/go/+/447655
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Reviewed-by: Roland Shoemaker <roland@golang.org>
2 years agoall: add missing copyright header
cui fliter [Wed, 9 Nov 2022 11:53:15 +0000 (19:53 +0800)]
all: add missing copyright header

Change-Id: Ia5a090953d324f0f8aa9c1808c88125ad5eb6f98
Reviewed-on: https://go-review.googlesource.com/c/go/+/448955
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>

2 years agoruntime: using wyrand for fastrand on linux/loong64
Guoqi Chen [Fri, 4 Nov 2022 09:01:21 +0000 (17:01 +0800)]
runtime: using wyrand for fastrand on linux/loong64

Benchmarks on linux/loong64:
name               old time/op    new time/op    delta
Fastrand           4.06ns ± 0%    3.60ns ± 0%    -11.29%  (p=0.000 n=32+27)
Fastrand64         7.20ns ± 0%    7.16ns ± 0%     -0.52%  (p=0.000 n=23+31)
FastrandHashiter   49.5ns ± 1%    48.9ns ± 2%     -1.24%  (p=0.000 n=32+32)
Fastrandn/2        4.45ns ± 0%    3.81ns ± 0%    -14.37%  (p=0.000 n=32+32)
Fastrandn/3        4.45ns ± 0%    3.81ns ± 0%    -14.32%  (p=0.000 n=32+32)
Fastrandn/4        4.45ns ± 0%    3.81ns ± 0%    -14.33%  (p=0.000 n=31+32)
Fastrandn/5        4.44ns ± 0%    3.81ns ± 0%    -14.26%  (p=0.000 n=31+30)

Change-Id: I0aba7d2331221426c44cc0d0dddecca3b585fda4
Reviewed-on: https://go-review.googlesource.com/c/go/+/446896
Reviewed-by: Keith Randall <khr@google.com>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
2 years agocmd/compile: enable brachelim pass on loong64
Wayne Zuo [Sat, 9 Jul 2022 11:26:47 +0000 (19:26 +0800)]
cmd/compile: enable brachelim pass on loong64

Change-Id: I4fd1c307901c265ab9865bf8a74460ddc15e5d14
Reviewed-on: https://go-review.googlesource.com/c/go/+/416735
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: xiaodong liu <teaofmoli@gmail.com>
Auto-Submit: Wayne Zuo <wdvxdr@golangcn.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>

2 years agoall: fix some comments
cui fliter [Tue, 8 Nov 2022 03:37:59 +0000 (11:37 +0800)]
all: fix some comments

Change-Id: I163ea3a770f2228f67d4fb1374653566e64b91f7
Reviewed-on: https://go-review.googlesource.com/c/go/+/448575
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>

2 years agoio: correctly process result of sendfile(2) when src returns 0 bytes
Daulet Zhanguzin [Wed, 6 Jul 2022 22:29:35 +0000 (22:29 +0000)]
io: correctly process result of sendfile(2) when src returns 0 bytes

Fixes #53658. io.Copy() uses sendfile(2) to avoid allocating extra buffers when src is a file and dst is a TCPConn. However if src returns no bytes current logic treats it as failure and falls back to copying via user space. The following is a benchmark that illustrates the bug.

Benchmark: https://go.dev/play/p/zgZwpjUatSq

Before:
BenchmarkCopy-16          541006              2137 ns/op            4077 B/op          0 allocs/op

After:
BenchmarkCopy-16          490383              2365 ns/op             174 B/op          8 allocs/op

Change-Id: I703376d53b20e080c6204a73c96867cce16b24cf
GitHub-Last-Rev: 3a50be4f169683bf9caea32892c66619a66ad21a
GitHub-Pull-Request: golang/go#53659
Reviewed-on: https://go-review.googlesource.com/c/go/+/415834
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agoencoding/xml: error when closing tag does not match opening tag
Constantin Konstantinidis [Sun, 15 Apr 2018 09:26:32 +0000 (11:26 +0200)]
encoding/xml: error when closing tag does not match opening tag

Comparing opening and closing tag is done using the prefix when available.
Documentation states that Token returns URI in the Space part of the Name.
Translation has been moved for the End tag before the namespace is removed
from the stack.

After closing a tag using a namespace, the valid namespace must be taken
from the opening tag. Tests added.

Fixes #20685

Change-Id: I4d90b19f7e21a76663f0ea1c1db6c6bf9fd2a389
Reviewed-on: https://go-review.googlesource.com/c/go/+/107255
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>

2 years agoencoding/xml: add check of namespaces to detect field names conflicts
Constantin Konstantinidis [Thu, 12 Apr 2018 06:55:16 +0000 (08:55 +0200)]
encoding/xml: add check of namespaces to detect field names conflicts

Test added.

Fixes #8535

Change-Id: Ic89c2781e81d963a653180812748b3fc95fb7fae
Reviewed-on: https://go-review.googlesource.com/c/go/+/106575
Run-TryBot: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agoruntime internal/cpu: rename "Zeus" "NeoverseV1".
Matthew Horsnell [Tue, 28 Jun 2022 13:25:58 +0000 (14:25 +0100)]
runtime internal/cpu: rename "Zeus" "NeoverseV1".

Rename "Zeus" to "NeoverseV1" for the partnum 0xd40 to be
consistent with the documentation of MIDR_EL1 as described in
https://developer.arm.com/documentation/101427/0101/?lang=en

Change-Id: I2e3d5ec76b953a831cb4ab0438bc1c403648644b
Reviewed-on: https://go-review.googlesource.com/c/go/+/414775
Reviewed-by: Jonathan Swinney <jswinney@amazon.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Eric Fang <eric.fang@arm.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
2 years agonet: allocate res_state entirely in C memory
Russ Cox [Tue, 8 Nov 2022 21:16:44 +0000 (16:16 -0500)]
net: allocate res_state entirely in C memory

The linux-amd64-wsl builder was failing because the res_nsearch
implementation was storing pointer to the res_state's own fields
in other fields in the res_state. If the res_state is Go memory, this
looks like pointers to Go pointers. Moving the res_state to C memory
avoids the problem.

The linux-amd64-wsl builder has been fixed a different way by
replacing res_nsearch with res_search on Linux, where it is thread-safe.
But other systems that still need to use res_nsearch (such as macOS)
may run into the same kind of problem, so it is probably still worth
arranging for the res_state to live entirely in C memory.

Fixes #56658 (again).

Change-Id: I58a14e72c866eaceb02ad828854a1f626b9b8e73
Reviewed-on: https://go-review.googlesource.com/c/go/+/448798
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agoruntime: fix uncondition calls to traceGCSTWDone
Xiangdong Ji [Fri, 25 Jun 2021 13:51:22 +0000 (21:51 +0800)]
runtime: fix uncondition calls to traceGCSTWDone

startTheWorldWithSema should call traceGCSTWDone only when
the tracing is enabled.

Change-Id: Ibc7181834f68af3923e4b2aee01a57492ab6213e
Reviewed-on: https://go-review.googlesource.com/c/go/+/330835
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agoruntime: remove the started field from sweepdata
Jakub Ciolek [Wed, 27 Jul 2022 07:02:17 +0000 (09:02 +0200)]
runtime: remove the started field from sweepdata

This bool doesn't seem to be used anymore. Remove it.

Change-Id: Ic73346a98513c392d89482c5e1d818a90d713516
Reviewed-on: https://go-review.googlesource.com/c/go/+/419654
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>

2 years agocmd/compile: fix transitive inlining of generic functions
Matthew Dempsky [Mon, 17 Oct 2022 23:57:07 +0000 (16:57 -0700)]
cmd/compile: fix transitive inlining of generic functions

If an imported, non-generic function F transitively calls a generic
function G[T], we may need to call CanInline on G[T].

While here, we can also take advantage of the fact that we know G[T]
was already seen and compiled in an imported package, so we don't need
to call InlineCalls or add it to typecheck.Target.Decls. This saves us
from wasting compile time re-creating DUPOK symbols that we know
already exist in the imported package's link objects.

Fixes #56280.

Change-Id: I3336786bee01616ee9f2b18908738e4ca41c8102
Reviewed-on: https://go-review.googlesource.com/c/go/+/443535
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Matthew Dempsky <mdempsky@google.com>

2 years agonet: fix res_search uses on alpine, android, dragonfly
Russ Cox [Tue, 8 Nov 2022 19:21:27 +0000 (14:21 -0500)]
net: fix res_search uses on alpine, android, dragonfly

On Android and Dragonfly, don't use -lresolv. It doesn't exist there.

On Linux, use res_search instead of res_nsearch.
glibc makes res_search thread-safe by having a per-thread __res.
It still also provides res_nsearch.
musl makes res_search thread-safe by ignoring __res completely.
It does not provide res_nsearch at all.
Changing to res_search on Linux will fix builds on musl-based systems
while keeping glibc-based systems working.

Fixes #56657.
Fixes #56660.

Change-Id: Id87dde6c8bbf6c0d34543c09782f3871489c8712
Reviewed-on: https://go-review.googlesource.com/c/go/+/448797
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
2 years agonet: pass C string to res_nsearch, in case it stores the pointer
Russ Cox [Tue, 8 Nov 2022 19:04:24 +0000 (14:04 -0500)]
net: pass C string to res_nsearch, in case it stores the pointer

The current code passes a Go pointer to a NUL-terminated C string
to the C function res_nsearch (or res_search), but that function may
in turn store the pointer into the res_state, which is a violation of the
cgo pointer rules and is being detected on the linux-amd64-wsl builder.

Allocating the string in C memory is safer and should resolve
the cgo pointer check. When using libc/syscall mode, the memory
is still allocated Go-side, which could potentially be a problem
if we ever add a moving collector. For now it is OK.

Fixes #56658.

Change-Id: Ibd84a9665be16c71994ddb1eedf09d45a6553a3e
Reviewed-on: https://go-review.googlesource.com/c/go/+/448795
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Bypass: Russ Cox <rsc@golang.org>

2 years agonet/textproto: reject invalid header keys/values in ReadMIMEHeader
Damien Neil [Mon, 6 Jun 2022 20:54:22 +0000 (13:54 -0700)]
net/textproto: reject invalid header keys/values in ReadMIMEHeader

Return an error when parsing a MIME header containing bytes in the
key or value outside the set allowed by RFC 7230.

For historical compatibility, accept spaces in keys (but do not
canonicalize the key in this case).

For #53188.

Change-Id: I195319362a2fc69c4e506644f78c5026db070379
Reviewed-on: https://go-review.googlesource.com/c/go/+/410714
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Damien Neil <dneil@google.com>

2 years agocmd/go: fix svn vctest on Windows and make them timezone agnostic
qmuntal [Fri, 4 Nov 2022 08:50:09 +0000 (09:50 +0100)]
cmd/go: fix svn vctest on Windows and make them timezone agnostic

This CL updates svn vctest so they work on Windows.

Side effect is that svn logs are no longer timezone dependant, as this
updated the `svn log` command to format logs using XML, which contain
UTC dates instead of local dates. Therefore it supersedes
https://go-review.googlesource.com/c/go/+/447795.

Fixes #56555
Fixes #56527

Change-Id: I5a654fd0a0f741e0a8a6ca7021ad699c07b974d6
Reviewed-on: https://go-review.googlesource.com/c/go/+/447935
Reviewed-by: Benny Siegert <bsiegert@gmail.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Quim Muntal <quimmuntal@gmail.com>

2 years agocmd/go: add -pgo build flag
Cherry Mui [Wed, 28 Sep 2022 22:50:01 +0000 (18:50 -0400)]
cmd/go: add -pgo build flag

Add a -pgo flag for "go build" (and other build actions), to
specify the file path of a profile used for PGO. Special name
"off" turns off PGO.

The given profile path is passed to the compiler.

The build cache is sensitive to the content of the given PGO
profile.

TODO: auto mode.

For #55022.

Change-Id: Ieee1b131b4c041f9502fd0a1acf112f3e44246be
Reviewed-on: https://go-review.googlesource.com/c/go/+/438736
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
2 years agoruntime: smooth cons/mark with a moving average and use actual trigger
Michael Anthony Knyszek [Thu, 14 Jul 2022 21:26:55 +0000 (21:26 +0000)]
runtime: smooth cons/mark with a moving average and use actual trigger

This change modifies the pacer in two ways:
* It replaces the PI controller used as a smoothing function with a
  simple two-cycle moving average.
* It makes the pacer use the actual GC trigger point for cons/mark (and
  other) calculations instead of the precomputed one.

The second part of this change was attempted in the Go 1.19 release
cycle, but could not be done because although it resulted in a
better-behaved pacer, it exploited the PI controller's sensitivity to
history in a way that was ultimately unfavorable for most applications.

This sensitivity is complex to reason about, and forces us into choices
that don't really make sense (like using the precomputed trigger over
the actual one -- that's really a bug fix).

The net effect of this change is intended to be:
* The pacer computes a more stable estimate of the actual cons/mark
  ratio, making it easier to understand.
* The pacer is much more accurate at hitting the heap goal, so the GC
  respects GOGC much more often and reliably.
* The pacer forces a more stable rate of GC assists in the
  steady-state overall.

See https://perf.golang.org/search?q=upload:20221106.10 for benchmark
results and #53892 for complete context. The benchmarks that regress
in memory use appear to be not worth worrying about. In all cases, it appears that the GC was triggering super early, resulting in a lack
of adherence to rule of GOGC.

The fogleman benchmarks just have a single final GC that triggers
early and also happens to be the peak heap size. The tile38
WithinCircle benchmark only has 4 GC cycles in the benchmarked region,
so it's very sensitive to pacing. In this case, the old smoothing
function is getting lucky by starting way too early, avoiding assists. Meanwhile the 2-cycle moving average is more accurate on the heap
goal, but the 1st and 2nd cycle after the initialization phase are operating on a cons/mark from the initialization phase which is much
less active, resulting in a cons/mark that's too low, causing the GC
to start too late, increasing assists, and therefore latency (but
only transiently, at this phase change). I really do think the PI
controller is just getting lucky here with a particular history,
because I've definitely observed it oscillating wildly in response to
a phase change.

This change also moves the PI controller out of mgcpacer.go, because
it's no longer used there. It now lives in mgcscavenge.go, where it's
actually used.

Fixes #53892.

Change-Id: I3f875a2e40f31f381920f91d8b090556b17a2b16
Reviewed-on: https://go-review.googlesource.com/c/go/+/417558
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

2 years agoreflect: use unsafe.String in name.name and name.tag
Tobias Klauser [Tue, 8 Nov 2022 13:07:46 +0000 (14:07 +0100)]
reflect: use unsafe.String in name.name and name.tag

Change-Id: I9f54f1463b0682d0d76cd57e5fef318565883a87
Reviewed-on: https://go-review.googlesource.com/c/go/+/448675
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2 years agocmd/compile: adjust PGO debug output slightly
Cherry Mui [Mon, 7 Nov 2022 22:05:33 +0000 (17:05 -0500)]
cmd/compile: adjust PGO debug output slightly

- Include the callee names in hot call inlining message.
- Print the graph when pgoinline >= 2.

Change-Id: Iceb89b5f18cefc69ab9256aca9a910743d22ec0f
Reviewed-on: https://go-review.googlesource.com/c/go/+/448496
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
2 years agocmd/compile/internal/pgo: allow and ignore profiles with no sample
Cherry Mui [Mon, 7 Nov 2022 21:46:28 +0000 (16:46 -0500)]
cmd/compile/internal/pgo: allow and ignore profiles with no sample

Passing a profile with no sample is arguably not a user error.
Accept such a profile, and ignore it as it doesn't indicate any
optimizations. This also makes testing easier.

Change-Id: Iae49a4260e20757419643153f50d8d5d51478411
Reviewed-on: https://go-review.googlesource.com/c/go/+/448495
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
2 years agocmd/compile: fix PGO line offset matching
Cherry Mui [Mon, 7 Nov 2022 23:04:58 +0000 (18:04 -0500)]
cmd/compile: fix PGO line offset matching

Appears to be a typo in CL 447315.

Change-Id: I9f380a3c7521f5ac5a1d7e271eaa60bd4bbcfb29
Reviewed-on: https://go-review.googlesource.com/c/go/+/448515
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
2 years agonet: unify CNAME handling across ports
Russ Cox [Fri, 28 Oct 2022 14:57:14 +0000 (10:57 -0400)]
net: unify CNAME handling across ports

Unix and Windows differ in how they handle LookupCNAME(name).

If name exists in DNS with an A or AAAA record but no CNAME,
then on all operating systems and in the pure Go resolver,
LookupCNAME returns the name associated with the A/AAAA record
(the original name).

TestLookupCNAME has been testing this, because www.google.com
has no CNAME. I think it did at one point, but not anymore, and the
tests are still passing. Also added google.com as a test, since
top-level domains are disallowed from having CNAMEs.

If name exists in DNS with a CNAME record pointing to a record that
does not exist or that has no A or AAAA record,
then Windows has always reported the CNAME value,
but Unix-based systems and the pure Go resolver have reported
a failure instead. cname-to-txt.go4.org is an test record that is
a CNAME to a non-A/AAAA target (the target only has a TXT record).

This CL changes the Unix-based systems and the pure Go resolver
to match the Windows behavior, allowing LookupCNAME to succeed
whenever a CNAME exists.

TestLookupCNAME nows tests the new behavior by looking up
cname-to-txt.go4.org (run by bradfitz).

Fixes #50101.

Change-Id: Ieff5026c8535760e6313c7a41ebd5ff24de6d9be
Reviewed-on: https://go-review.googlesource.com/c/go/+/446179
Run-TryBot: Russ Cox <rsc@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2 years agocmd/go: replace Action.Func with Action.Actor
Russ Cox [Mon, 7 Nov 2022 16:45:57 +0000 (11:45 -0500)]
cmd/go: replace Action.Func with Action.Actor

The interface will let us store actor-specific state in the
interface implementation instead of continuing to grow
the Action struct. In the long term we should remove fields
from the struct that are not used by all Actions.

Change-Id: I8ac89eda7a91d742cee547a1f779e9f254dfd2f0
Reviewed-on: https://go-review.googlesource.com/c/go/+/448356
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
2 years agointernal/coverage/slicereader: use unsafe.String
Tobias Klauser [Tue, 8 Nov 2022 03:30:38 +0000 (04:30 +0100)]
internal/coverage/slicereader: use unsafe.String

Change-Id: Ifd88315626e0ce5b9b8d3c66aa9dd9806f8407dd
Reviewed-on: https://go-review.googlesource.com/c/go/+/448555
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Than McIntosh <thanm@google.com>
Auto-Submit: Than McIntosh <thanm@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>