1
0
mirror of https://github.com/golang/go synced 2024-11-06 10:36:13 -07:00
Commit Graph

42551 Commits

Author SHA1 Message Date
Joel Sing
5a3a5d3525 math, math/big: add support for riscv64
Based on riscv-go port.

Updates #27532

Change-Id: Id8ae7d851c393ec3702e4176c363accb0a42587f
Reviewed-on: https://go-review.googlesource.com/c/go/+/204633
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-15 18:49:52 +00:00
Tobias Klauser
3743d21270 runtime: re-enable TestArenaCollision on darwin in race mode
Go 1.14 will drop support for macOS 10.10, see #23011

This reverts CL 155097

Updates #26475
Updates #29340

Change-Id: I64d0275141407313b73068436ee81d13eacc4c76
Reviewed-on: https://go-review.googlesource.com/c/go/+/214058
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-15 17:53:43 +00:00
yah01
ee55dd6b64 spec: add missing space in EBNF
Fixes #36520

Change-Id: I698ab235f82f7c81caa09318c954847cf3833153
GitHub-Last-Rev: 368a1dc788
GitHub-Pull-Request: golang/go#36559
Reviewed-on: https://go-review.googlesource.com/c/go/+/214821
Reviewed-by: Robert Griesemer <gri@golang.org>
2020-01-15 05:32:51 +00:00
Thomas Symborski
a52db6403c strings: update Join parameter name for clarity
Change-Id: I83f806e76ef4d268b187bd273d78ceb41b7e8fa5
GitHub-Last-Rev: ee82eaae64
GitHub-Pull-Request: golang/go#36194
Reviewed-on: https://go-review.googlesource.com/c/go/+/211799
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-15 04:21:28 +00:00
Rob Pike
cae9a9fd65 doc: fix up some HTML issues in go_spec.html
The HTML linter 'tidy' reports:

	go_spec.html:2556: Warning: unescaped & which should be written as &amp;
	go_spec.html:3293: Warning: unescaped & or unknown entity "&s1"
	go_spec.html:3293: Warning: unescaped & or unknown entity "&a"
	go_spec.html:3294: Warning: unescaped & or unknown entity "&s2"
	go_spec.html:3294: Warning: unescaped & or unknown entity "&a"
	go_spec.html:2045: Warning: trimming empty <p>
	go_spec.html:4526: Warning: trimming empty <ul>
	go_spec.html:4533: Warning: trimming empty <ul>
	go_spec.html:4539: Warning: trimming empty <ul>

This CL fixes all but the <ul> ones, which I think should be fixed
but are defended by a comment.

Change-Id: I0ca88f5e80755024801877ab1298025ecf8f10c5
Reviewed-on: https://go-review.googlesource.com/c/go/+/214457
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
2020-01-14 22:24:11 +00:00
Ian Lance Taylor
cfe3cd903f runtime: keep P's first timer when in new atomically accessed field
This reduces lock contention when only a few P's are running and
checking for whether they need to run timers on the sleeping P's.
Without this change the running P's would get lock contention
while looking at the sleeping P's timers. With this change a single
atomic load suffices to determine whether there are any ready timers.

Change-Id: Ie843782bd56df49867a01ecf19c47498ec827452
Reviewed-on: https://go-review.googlesource.com/c/go/+/214185
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: David Chase <drchase@google.com>
2020-01-14 19:54:20 +00:00
Michael Anthony Knyszek
71154e061f runtime: better approximate total cost of scavenging
Currently, the scavenger is paced according to how long it takes to
scavenge one runtime page's worth of memory. However, this pacing
doesn't take into account the additional cost of actually using a
scavenged page. This operation, "sysUsed," is a counterpart to the
scavenging operation "sysUnused." On most systems this operation is a
no-op, but on some systems like Darwin and Windows we actually make a
syscall. Even on systems where it's a no-op, the cost is implicit: a
more expensive page fault when re-using the page.

On Darwin in particular the cost of "sysUnused" is fairly close to the
cost of "sysUsed", which skews the pacing to be too fast. A lot of
soon-to-be-allocated memory ends up scavenged, resulting in many more
expensive "sysUsed" operations, ultimately slowing down the application.

The way to fix this problem is to include the future cost of "sysUsed"
on a page in the scavenging cost. However, measuring the "sysUsed" cost
directly (like we do with "sysUnused") on most systems is infeasible
because we would have to measure the cost of the first access.

Instead, this change applies a multiplicative constant to the measured
scavenging time which is based on a per-system ratio of "sysUnused" to
"sysUsed" costs in the worst case (on systems where it's a no-op, we
measure the cost of the first access). This ultimately slows down the
scavenger to a more reasonable pace, limiting its impact on performance
but still retaining the memory footprint improvements from the previous
release.

Fixes #36507.

Change-Id: I050659cd8cdfa5a32f5cc0b56622716ea0fa5407
Reviewed-on: https://go-review.googlesource.com/c/go/+/214517
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
2020-01-14 17:13:34 +00:00
Koya IWAMURA
0c65531ef1 C: add missing name
Even though I contributed to golang/go[^1], the rule[^2] did not reflect my name in CONTRIBUTORS, so I added it.

[^1]: https://go-review.googlesource.com/c/go/+/164199
[^2]: https://github.com/golang/build/blob/e21a90b/cmd/updatecontrib/updatecontrib.go#L118

Change-Id: I5d6b5684d61ea5da679519a9e703d977470de175
Reviewed-on: https://go-review.googlesource.com/c/go/+/214617
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-14 15:51:35 +00:00
Ian Lance Taylor
563287ae06 Revert "os: handle long path in RemoveAll for windows"
This reverts CL 214437.

Does not fix the issue, and the test was wrong so it did not detect that it did not fix the issue.

Updates #36375

Change-Id: I6a4112035a1e90f4fdafed6fdf4ec9dfc718b571
Reviewed-on: https://go-review.googlesource.com/c/go/+/214601
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-13 23:35:18 +00:00
Rob Pike
4ead7e8cc4 time: add a sentence about distant times to time.Time.Unix
Since Durations only span 290 years, they are not good for
manipulating very remote times. I bounced off this problem recently
while doing some astronomical calculations and it took me a while to
realize I could get a 64-bit seconds value from time.Time.Unix and
subtract two of them to evaluate the interval.

I thought it worth adding a sentence to make this clear. It didn't
occur to me for quite a while that "Unix time" spans a huge range in
the Go library.

Change-Id: I76c75dc951dfd6bcf86e8b0be3cfec518a3ecdee
Reviewed-on: https://go-review.googlesource.com/c/go/+/213977
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
2020-01-13 21:56:50 +00:00
Robert Griesemer
9ead772a92 spec: uniformly format empty interfaces as "interface{}"
Fixes #36526.

Change-Id: Ic51a287579f139422cc1a7b2fb82d6732114b031
Reviewed-on: https://go-review.googlesource.com/c/go/+/214597
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-13 21:49:46 +00:00
Constantin Konstantinidis
5c44cc47c6 os: handle long path in RemoveAll for windows
Fixes #36375

Change-Id: I407a1db23868880b83e73bc136d274659483fb69
Reviewed-on: https://go-review.googlesource.com/c/go/+/214437
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-13 20:42:57 +00:00
Keith Randall
5d8a61a43e cmd/compile: print recursive types correctly
Change the type printer to take a map of types that we're currently
printing. When we happen upon a type that we're already in the middle
of printing, print a reference to it instead.

A reference to another type is built using the offset of the first
byte of that type's string representation in the result. To facilitate
that computation (and it's probably more efficient, regardless), we
print the type to a buffer as we go, and build the string at the end.

It would be nice to use string.Builder instead of bytes.Buffer, but
string.Builder wasn't around in Go 1.4, and we'd like to bootstrap
from that version.

Fixes #29312

Change-Id: I49d788c1fa20f770df7b2bae3b9979d990d54803
Reviewed-on: https://go-review.googlesource.com/c/go/+/214239
Reviewed-by: Robert Griesemer <gri@golang.org>
2020-01-13 18:52:18 +00:00
fujimoto kyosuke
52c4488471 html: update URL in comment
The comment contained a link that had a file name and ID that no longer existed, so change to the URL of the corresponding part of the latest page.

Change-Id: I74e0885aabf470facc39b84035f7a83fef9c6a8e
GitHub-Last-Rev: 5681c84d9f
GitHub-Pull-Request: golang/go#36514
Reviewed-on: https://go-review.googlesource.com/c/go/+/214181
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-13 07:00:18 +00:00
Ian Lance Taylor
641e61db57 runtime: don't let P's timer heap get clogged with deleted timers
Whenever more than 1/4 of the timers on a P's heap are deleted,
remove them from the heap.

Change-Id: Iff63ed3d04e6f33ffc5c834f77f645c52c007e52
Reviewed-on: https://go-review.googlesource.com/c/go/+/214299
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2020-01-10 23:03:06 +00:00
Bryan C. Mills
1d4d7825a7 cmd/go/internal/modload: fix an erroneous comment about the test repo
Updates #36489

Change-Id: I1ca215ba0a64a31d662134385b8be46bb4ba4434
Reviewed-on: https://go-review.googlesource.com/c/go/+/214282
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-10 21:56:20 +00:00
Matthew Dempsky
5d0075156a runtime: add tests for checkptr
We had a few test cases to make sure checkptr didn't have certain
false positives, but none to test for any true positives. This CL
fixes that.

Updates #22218.

Change-Id: I24c02e469a4af43b1748829a9df325ce510f7cc4
Reviewed-on: https://go-review.googlesource.com/c/go/+/214238
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
2020-01-10 21:40:21 +00:00
Jeremy Faller
ae0b735369 cmd/compile: emit only '/' in DWARF file names
Make file names consistent, using only forward slashes in the path.

Fixes #36495

Change-Id: I337119d6dff233ab9d4bfe757147ec25961ae021
Reviewed-on: https://go-review.googlesource.com/c/go/+/214286
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-10 21:04:43 +00:00
Jay Conrod
6988e6d579 cmd: update golang.org/x/mod to v0.2.0 (latest)
This pulls in two new commits: a fix for a test broken on plan9 and a
correction to a comment.

Change-Id: I31cf046a5073872714c758894732b2fcc800ab6b
Reviewed-on: https://go-review.googlesource.com/c/go/+/214289
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-10 19:40:52 +00:00
Ian Lance Taylor
e6bbe967ed runtime: don't skip timer when adjustTimers sees a modified timer
When adjustTimers sees a timerModifiedEarlier or timerModifiedLater,
it removes it from the heap, leaving a new timer at that position
in the heap. We were accidentally skipping that new timer in our loop.
In some unlikely cases this could cause adjustTimers to look at more
timers than necessary.

Change-Id: Ic71e54c175ab7d86a7fa46f1497aca71ed1c43cc
Reviewed-on: https://go-review.googlesource.com/c/go/+/214338
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-10 19:19:22 +00:00
Filippo Valsorda
8b774103d3 src/go.mod: update x/crypto to drop broken poly1305 arm assembly
This imports CL 213880.

Fixes #35511

Change-Id: I55d18713bdac8fa556ba5a2aced922f80d1ac970
Reviewed-on: https://go-review.googlesource.com/c/go/+/214078
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-10 18:53:03 +00:00
bxq2011hust
79ccbe1b67 crypto/x509: this change modifies C.CopyPEMRoots to static function
Change-Id: Ic7997d1f747152afec78e8e439770166029f34ec
GitHub-Last-Rev: 6a07f25056
GitHub-Pull-Request: golang/go#36491
Reviewed-on: https://go-review.googlesource.com/c/go/+/214298
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-10 15:22:42 +00:00
Than McIntosh
2d2590e94a [dev.link] cmd/link: add loader methods to access unit, gotype
Add loader hooks to get at the 'gotype' and 'unit' symbol properties.

Change-Id: Icdf5dd151e84a548fa2574efdb998c3b698a17d9
Reviewed-on: https://go-review.googlesource.com/c/go/+/214137
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-10 12:37:31 +00:00
Than McIntosh
e5dc6ff874 [dev.link] cmd/link: add support for "not in symbol table" attribute
Add loader.Loader support for recording whether symbols should appear
in the symbol table (e.g. AttrNotInSymbolTable). Change the preloader
to apply this attribute to selected symbols (e.g. go.string.*,
runtime.gcbits.*) during the initial scan over object file defs, since
at that point the name is available.

Change-Id: I54be9a649107e90c0fd544a1c0ba87e2d98833ad
Reviewed-on: https://go-review.googlesource.com/c/go/+/213778
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-10 12:37:02 +00:00
Than McIntosh
3fa9500dd1 [dev.link] cmd/link: default to new ELF host object loader
Flag flip to make "-newldelf" linker option default to true. Next step
will be to remove the old code.

Change-Id: Ie20637ae2f459b32a9aa30e711f51549da28ffd0
Reviewed-on: https://go-review.googlesource.com/c/go/+/213427
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-10 12:36:40 +00:00
Than McIntosh
5279166402 [dev.link] cmd/link: convert Link.linksetup method to work with loader
Switch the linker's Link.linksetup method to work with loader.Sym
instead of sym.Symbols. Currently enabled when the new ELF host object
loader is turned on.

Change-Id: I336cc9f36166767baac574455531e195b6f1ac57
Reviewed-on: https://go-review.googlesource.com/c/go/+/213423
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-10 12:36:22 +00:00
Tobias Klauser
5d076d579a misc/cgo/test: re-enable darwin cgo tests in race mode
Go 1.14 will drop support for macOS 10.10, see #23011

This reverts CL 125304

Updates #26475
Updates #26513

Change-Id: Ia13eef30f22d67103f7ae45424124fbb116e1261
Reviewed-on: https://go-review.googlesource.com/c/go/+/214057
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-10 10:04:49 +00:00
Ian Lance Taylor
cb2353deb7 doc/go1.14: preannounce dropping macOS 10.11 support
Go 1.14 will be the last to support macOS 10.11.
Go 1.15 will require macOS 10.12 (Sierra).

Updates #23011

Change-Id: I8fff555e5b8fffe088e7e960e77fac9558cb74e4
Reviewed-on: https://go-review.googlesource.com/c/go/+/210137
Reviewed-by: Andrew Bonventre <andybons@golang.org>
2020-01-10 05:14:35 +00:00
Matthew Dempsky
56d6b87972 runtime: change checkptr to use throw instead of panic
Updates #34964.

Change-Id: I5afb2c1e77a9a47358a1d0d108c4a787d7172b94
Reviewed-on: https://go-review.googlesource.com/c/go/+/214217
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
2020-01-09 23:06:21 +00:00
Jay Conrod
65219650ff cmd/go: remove references to 1.13 in 'go help modules'
In "Module support" section, there were two mentions of "Go 1.13",
assuming that's the latest version. Rather than update these to 1.14,
this CL changes those to "The go command".

Also, a minor change in wording for finding go.mod files.

Change-Id: Id194be9405b540f221464814e71c361a22cc0f55
Reviewed-on: https://go-review.googlesource.com/c/go/+/214140
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-09 21:46:59 +00:00
Than McIntosh
fa284af720 [dev.link] cmd/link: convert ELF host object loading to new loader
This is a rewrite of the ELF host object loader to use just the Loader
interfaces for symbol creation, without constructing sym.Symbols. At
the moment this is gated under the temporary linker command line
option "-newldelf".  This version is able to get through all.bash
on linux/amd64.

Change-Id: I99f41368f75b0df9e35ef3c2cf2a702b732540c6
Reviewed-on: https://go-review.googlesource.com/c/go/+/210779
Run-TryBot: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-09 20:48:48 +00:00
Austin Clements
199bc0003d doc/go1.14: -d=checkptr is not yet recommended on Windows
Hopefully we'll have the remaining safety violations in the standard
library ironed out by 1.15.

We also fix a minor (but important) typo while we're here.

Updates #34964, #34972.

Change-Id: Ic72fd4d9411b749f8c0cea87e95ab68347009893
Reviewed-on: https://go-review.googlesource.com/c/go/+/214118
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-09 20:43:24 +00:00
Than McIntosh
161e0a5497 [dev.link] cmd/link: add support for "local" sym attribute
Add loader hooks to get/set the "local" symbol attribute.

Change-Id: Ifc6986c678bda8923fb9b6ef041e77330f441e1f
Reviewed-on: https://go-review.googlesource.com/c/go/+/213422
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-09 20:36:05 +00:00
Than McIntosh
87f561ab2b [dev.link] cmd/link: add support for setting symbol File property
Add loader methods to get/set the "file" symbol property.

In the legacy sym.Symbol struct, there is both a 'unit' field
(pointing to a CompilationUnit with package path, etc) and a 'file'
field. In the case of compiler-generated Go symbols, 'file' is
redundant (stores the package again), however for symbols read out of
a shared library (in the -linkshared case) it is important to be able
to record the file for a symbol.

With the loader, add a side table that can be used to store a file for
a symbol, and add methods for getting/setting file.

Change-Id: Iefceb8e7780f31457b658c099196de6e00be8aaf
Reviewed-on: https://go-review.googlesource.com/c/go/+/213421
Run-TryBot: Than McIntosh <thanm@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-09 20:35:55 +00:00
Than McIntosh
ce7a0dda31 [dev.link] cmd/link: add loader support for recording ElfType for symbols
Add hooks in the loader for recording the ElfType of a symbol, as a
replacement for the sym.Symbol ElfType() and SetElfType() methods.
This symbol property is set only for symbols read from shared
libraries by ldshlibsyms.

Change-Id: I3a3c193c3718dcfb73a2364d6e19e0419dab5b41
Reviewed-on: https://go-review.googlesource.com/c/go/+/213420
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-09 20:35:37 +00:00
Than McIntosh
db48d45838 [dev.link] cmd/link: handle multiple levels of overwrite
Revamp the way that symbol overwrites are handled to deal with symbols
that are overwritten more than once (such as "_cgo_mmap"). The
scenario here is that a symbol can be overwritten twice, once during
preload, and then again when host objects are read during internal
linking. This can result in a situation where we have two entries in
the overwrite map, from X -> Y and then from Y -> Z. Rather than
search the overwrite map when adding new entries, add a helper routine
for querying the map that catches this situation and fixes it up.

Also with this patch is a couple of tweaks to the loader.Dump method
to insure that it can dump the entire global index space without
crashing due to odd overwrites (as in the scenario above).

Change-Id: Ib6c8a0e03e92fc2b57318001711b501eeaf12249
Reviewed-on: https://go-review.googlesource.com/c/go/+/212098
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-09 20:31:01 +00:00
Than McIntosh
49e94f19f0 [dev.link] cmd/link: propagate gotype symbol info in cloneToExternal
This patch fixes a problem with the loader's cloneToExternal method,
specifically that the new external clone created did not get
the proper Gotype value from its orginal symbol.

Change-Id: I9978140d285104d407bf55649fb6ed94959933f2
Reviewed-on: https://go-review.googlesource.com/c/go/+/213639
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-09 20:08:31 +00:00
Dmitri Shuralyov
10bfe5b961 CONTRIBUTORS: first round of updates for Go 1.14
This update was automatically generated using the updatecontrib command:

	cd gotip
	go run golang.org/x/build/cmd/updatecontrib

With minor manual changes based on publicly available information
to canonicalize letter case and formatting for a few names.

Actions taken (relative to CONTRIBUTORS at origin/master):

	Added Aaron Beitch <aaronb@arista.com>
	Added Adam Shelton <aashelt90@gmail.com>
	Added Aditya Harindar <aditya.harindar@gmail.com>
	Added Alec Benzer <alec.benzer@gmail.com>
	Added Alex Buchanan <buchanae@gmail.com>
	Added Alex Gaynor <alex@alloy.us>
	Added Alex Harford <alex.harford@saucelabs.com>
	Added Alex Zhirov <azhirov@google.com>
	Added Alexandr Mayorskiy <a.mayorskiy@corp.mail.ru>
	Added An Xiao <hac@zju.edu.cn>
	Added Andrei Enshin <b1os@bk.ru>
	Added Andrew Medvedev <andrew.y.medvedev@gmail.com>
	Added Andrew Stormont <astormont@racktopsystems.com>
	Added Antonio Huete Jimenez <tuxillo@quantumachine.net>
	Added Arda Güçlü <ardaguclu@gmail.com>
	Added Artem Alekseev <artem.alekseev@intel.com>
	Added Ayan George <ayan@ayan.net>
	Added Barnaby Keene <accounts@southcla.ws>
	Added Ben Toews <mastahyeti@gmail.com>
	Added Benjamin Wuethrich <benjamin.wuethrich@gmail.com>
	Added Brandon Philips <brandon@ifup.org>
	Added Carlos Amedee <carlos@golang.org>
	Added Changkun Ou <hi@changkun.us>
	Added Chauncy Cullitan <chauncyc@google.com>
	Added Clint J. Edwards <clint.j.edwards@gmail.com>
	Added Daisuke Suzuki <daisuzu@gmail.com>
	Added Dan Scales <danscales@google.com>
	Added David Bond <davidsbond93@gmail.com>
	Added Denis Isaev <idenx@yandex.com>
	Added Domas Tamašauskas <puerdomus@gmail.com>
	Added Duco van Amstel <duco.vanamstel@gmail.com>
	Added Eduardo Villaseñor <evillasrmx@gmail.com>
	Added Eric Biggers <ebiggers@google.com>
	Added Eric Brown <browne@vmware.com>
	Added Eric Rutherford <erutherford@gmail.com>
	Added Gabriel Rosenhouse <rosenhouse@gmail.com>
	Added George Hartzell <hartzell@alerce.com>
	Added Gert Cuykens <gert.cuykens@gmail.com>
	Added Ghazni Nattarshah <ghazni.nattarshah@gmail.com>
	Added GitHub User DQNEO (188741) <dqneoo@gmail.com>
	Added GitHub User Matts966 (28551465) <Matts966@users.noreply.github.com>
	Added GitHub User ajz01 (4744634) <ajzdenek@gmail.com>
	Added GitHub User andig (184815) <cpuidle@gmx.de>
	Added GitHub User jinmiaoluo (39730824) <jinmiaoluo@icloud.com>
	Added GitHub User maltalex (10195391) <code@bit48.net>
	Added GitHub User po3rin (29445112) <abctail30@gmail.com>
	Added GitHub User pokutuna (57545) <popopopopokutuna@gmail.com>
	Added GitHub User ramenjuniti (32011829) <ramenjuniti@gmail.com>
	Added GitHub User skanehira (7888591) <sho19921005@gmail.com>
	Added GitHub User witchard (4994659) <witchard@hotmail.co.uk>
	Added GitHub User zikaeroh (48577114) <zikaeroh@gmail.com>
	Added Günther Noack <gnoack@google.com>
	Added Hasit Bhatt <hasit.p.bhatt@gmail.com>
	Added Howard Zhang <howard.zhang@arm.com>
	Added Huan Du <i@huandu.me>
	Added Ignacio Hagopian <jsign.uy@gmail.com>
	Added Ilya Sinelnikov <sidhmangh@gmail.com>
	Added Irbe Krumina <irbekrm@gmail.com>
	Added Isfan Azhabil <isfan.azhabil@tokopedia.com>
	Added Ivan Trubach <mr.trubach@icloud.com>
	Added Jaap Aarts <jaap.aarts1@gmail.com>
	Added Jeremy Faller <jeremy@golang.org>
	Added Johan Jansson <johan.jansson@iki.fi>
	Added John Papandriopoulos <jpap.code@gmail.com>
	Added Jorge L. Fatta <jorge.fatta@auth0.com>
	Added Josa Gesell <josa@gesell.me>
	Added Julian Tibble <julian.tibble@gmail.com>
	Added Jun Zhang <jim.zoumo@gmail.com>
	Added Jędrzej Szczepaniak <jbszczepaniak@gmail.com>
	Added Kalman Bekesi <kalmanb@google.com>
	Added Katharine Berry <ktbry@google.com>
	Added Keisuke Kishimoto <keisuke.kishimoto@gmail.com>
	Added Kevan Swanberg <kevswanberg@gmail.com>
	Added Koki Tomoshige <tomocy.dev@gmail.com>
	Added Liz Rice <liz@lizrice.com>
	Added Lorenz Brun <lorenz@brun.one>
	Added Luke Young <bored-engineer@users.noreply.github.com>
	Added Marc Sanmiquel <marcsanmiquel@gmail.com>
	Added Marko Kungla <marko.kungla@gmail.com>
	Added Mikhail Fesenko <proggga@gmail.com>
	Added Mohit Verma <vmohit.93@gmail.com>
	Added Moritz Fain <moritz@fain.io>
	Added Nathan Dias <nathan.dias@orijtech.com>
	Added Nikita Vanyasin <nikita.vanyasin@gmail.com>
	Added Nuno Cruces <ncruces@users.noreply.github.com>
	Added Oliver Powell <oliverpowell84@gmail.com>
	Added Panos Georgiadis <pgeorgiadis@suse.de>
	Added Pantelis Sampaziotis <psampaz@gmail.com>
	Added Paulo Gomes <paulo.gomes.uk@gmail.com>
	Added Prashant Agrawal <prashant.a.vjti@gmail.com>
	Added Ricardo Seriani <ricardo.seriani@gmail.com>
	Added Rob Findley <rfindley@google.com>
	Added Robin Zhong <robin@robinzhong.co>
	Added Rohan Challa <rohan@golang.org>
	Added Roman Kollár <roman.kollar.0@gmail.com>
	Added Ruixin Bao <ruixin.bao@ibm.com>
	Added Sardorbek Pulatov <sardorbek.pulatov@outlook.com>
	Added Scott Ragan <ragansa@fb.com>
	Added Sean Liao <seankhliao@gmail.com>
	Added Sebastian Chlopecki <sebsebmc@gmail.com>
	Added Sebastian Kinne <skinne@google.com>
	Added Sergei Lemeshkin <sergeilem@gmail.com>
	Added Serhat Giydiren <serhatgiydiren@gmail.com>
	Added Shivashis Padhi <shivashispadhi@gmail.com>
	Added Simarpreet Singh <simar@linux.com>
	Added Simon Ferquel <simon.ferquel@docker.com>
	Added Simon Rozman <simon@rozman.si>
	Added Sjoerd Siebinga <sjoerd.siebinga@gmail.com>
	Added Spencer Kocot <spencerkocot@gmail.com>
	Added Srinidhi Kaushik <shrinidhi.kaushik@gmail.com>
	Added Sven Taute <sven.taute@gmail.com>
	Added Tao Qingyun <qingyunha@gmail.com>
	Added Tianji Wu <the729@gmail.com>
	Added Tomas Dabasinskas <tomas@dabasinskas.net>
	Added Ville Skyttä <ville.skytta@iki.fi>
	Added Vitaly Zdanevich <zdanevich.vitaly@ya.ru>
	Added Vladimir Evgrafov <evgrafov.vladimir@gmail.com>
	Added Vojtech Bocek <vbocek@gmail.com>
	Added Wang Xuerui <git@xen0n.name>
	Added William Poussier <william.poussier@gmail.com>
	Added Xiangdong Ji <xiangdong.ji@arm.com>
	Added Yuichi Nishiwaki <yuichi.nishiwaki@gmail.com>
	Added Ziheng Liu <lzhfromustc@gmail.com>
	Used GitHub User DQNEO (188741) form for DQNEO <dqneoo@gmail.com> https://github.com/golang/go/commit/f07059d949 [go]
	Used GitHub User Matts966 (28551465) form for Matts966 <Matts966@users.noreply.github.com> https://github.com/golang/tools/commit/d89860af [tools]
	Used GitHub User ajz01 (4744634) form for ajz01 <ajzdenek@gmail.com> https://github.com/golang/go/commit/57ad6ef15d [go]
	Used GitHub User andig (184815) form for andig <cpuidle@gmx.de> https://github.com/golang/go/commit/cf630586ca [go sys]
	Used GitHub User jinmiaoluo (39730824) form for jinmiaoluo <jinmiaoluo@icloud.com> https://github.com/golang/go/commit/c7e73ef60a [go]
	Used GitHub User maltalex (10195391) form for maltalex <code@bit48.net> https://github.com/golang/sys/commit/c709ea0 [sys]
	Used GitHub User po3rin (29445112) form for po3rin <abctail30@gmail.com> https://github.com/golang/go/commit/bf865823ba [go]
	Used GitHub User pokutuna (57545) form for pokutuna <popopopopokutuna@gmail.com> https://github.com/golang/go/commit/46e0d724b3 [go]
	Used GitHub User ramenjuniti (32011829) form for ramenjuniti <ramenjuniti@gmail.com> https://github.com/golang/go/commit/f9dd99cae3 [go]
	Used GitHub User skanehira (7888591) form for skanehira <sho19921005@gmail.com> https://github.com/golang/go/commit/87805c92fd [go]
	Used GitHub User utkarsh-extc (53217283) form for utkarsh-extc <53217283+utkarsh-extc@users.noreply.github.com> https://github.com/golang/sys/commit/51ab0e2 [sys]
	Used GitHub User witchard (4994659) form for witchard <witchard@hotmail.co.uk> https://github.com/golang/go/commit/42db1da8e9 [go]
	Used GitHub User zikaeroh (48577114) form for zikaeroh <zikaeroh@gmail.com> https://github.com/golang/tools/commit/e84277c2 [tools]
	Used GitHub name "Adam Shelton" for Adam <aashelt90@gmail.com> https://github.com/golang/exp/commit/c286b88 [exp]
	Used GitHub name "Andrew Bonventre" for Andrew <andybons@golang.org> https://github.com/golang/go/commit/8bbfc51d9a [arch blog build crypto debug exp gddo go image lint mobile net oauth2 perf playground proposal.git review sync sys talks term text time tools tour website]
	Used GitHub name "David Bond" for davidsbond <davidsbond93@gmail.com> https://github.com/golang/go/commit/b421b85841 [go]
	Used GitHub name "Eduardo Villaseñor" for galaxy-designer <evillasrmx@gmail.com> https://github.com/golang/tools/commit/db047d72 [tools]
	Used GitHub name "George Hartzell" for hartzell <hartzell@alerce.com> https://github.com/golang/tools/commit/5eefd052 [tools]
	Used GitHub name "Ignacio Hagopian" for jsign <jsign.uy@gmail.com> https://github.com/golang/go/commit/4d4ddd862d [go]
	Used GitHub name "Ivan Markin" for nogoegst <nogoegst@users.noreply.github.com> https://github.com/golang/go/commit/a1addf15df [go]
	Used GitHub name "Jun Zhang" for zoumo <jim.zoumo@gmail.com> https://github.com/golang/tools/commit/81ca6dc7 [tools]
	Used GitHub name "Keiji Yoshida" for yosssi <yoshida.keiji.84@gmail.com> https://github.com/golang/lint/commit/ac6833c [lint]
	Used GitHub name "Koki Tomoshige" for tomocy <tomocy.dev@gmail.com> https://github.com/golang/go/commit/2f04903fec [go]
	Used GitHub name "Michalis Kargakis" for kargakis <mkargaki@redhat.com> https://github.com/golang/go/commit/e243d242d7 [go]
	Used GitHub name "Nikita Vanyasin" for nikita-vanyasin <nikita.vanyasin@gmail.com> https://github.com/golang/go/commit/c3e8a20a65 [go]
	Used GitHub name "Roberto Clapis" for Roberto <empijei@users.noreply.github.com> https://github.com/golang/go/commit/963776e689 [go]
	Used GitHub name "Robin Eklind" for mewmew <rnd0x00@gmail.com> https://github.com/golang/go/commit/b8620afb8d [arch blog go proposal.git]
	Used GitHub name "Sergei Lemeshkin" for sergeilem <sergeilem@gmail.com> https://github.com/golang/go/commit/a3a1bdff79 [go]
	Used GitHub name "Vladimir Evgrafov" for vovapi <evgrafov.vladimir@gmail.com> https://github.com/golang/go/commit/207a0b7933 [go]

Updates #12042

Change-Id: I1ba3c17108491316255f914c3a71f69fc6f4341a
Reviewed-on: https://go-review.googlesource.com/c/go/+/213824
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2020-01-09 19:50:42 +00:00
Michael Anthony Knyszek
8ac98e7b3f runtime: add scavtrace debug flag and remove scavenge info from gctrace
Currently, scavenging information is printed if the gctrace debug
variable is >0. Scavenging information is also printed naively, for
every page scavenged, resulting in a lot of noise when the typical
expectation for GC trace is one line per GC.

This change adds a new GODEBUG flag called scavtrace which prints
scavenge information roughly once per GC cycle and removes any scavenge
information from gctrace. The exception is debug.FreeOSMemory, which may
force an additional line to be printed.

Fixes #32952.

Change-Id: I4177dcb85fe3f9653fd74297ea93c97c389c1811
Reviewed-on: https://go-review.googlesource.com/c/go/+/212640
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-09 18:00:06 +00:00
Bryan C. Mills
509592d188 cmd/go: explicitly reject 'list -u' and 'list -versions' when '-mod=vendor' is set
The information requested by these flags is not available from the
vendor directory.

Noticed while diagnosing #36478.

Updates #33848

Change-Id: I2b181ba5c27f01fdd6277d8d0ab1003c05774ff7
Reviewed-on: https://go-review.googlesource.com/c/go/+/214081
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-09 17:52:45 +00:00
Bryan C. Mills
cec535b7b7 cmd/go/internal/modload: do not disable Query for -mod=readonly
'go list -m' allows explicit module@version arguments,
which it resolves (using Query) but does not add to the build list.
Similarly, 'go list -u' resolves versions without modifying the build list.

These explicit operations should be allowed even when '-mod=readonly' is set.

Updates #36478

'go list' and 'go mod download' do not

Change-Id: I5d2735729ad573635b9c1902d5d3a8bd960b8a76
Reviewed-on: https://go-review.googlesource.com/c/go/+/214077
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-09 17:52:05 +00:00
Austin Clements
957259b7e2 runtime: protect against external code calling ExitProcess
On Windows, we implement asynchronous preemption using SuspendThread
to suspend other threads in our process. However, SuspendThread is
itself actually asynchronous (it enqueues a kernel "asynchronous
procedure call" and returns). Unfortunately, Windows' ExitProcess API
kills all threads except the calling one and then runs APCs. As a
result, if SuspendThread and ExitProcess are called simultaneously,
the exiting thread can be suspended and the suspending thread can be
exited, leaving behind a ghost process consisting of a single thread
that's suspended.

We've already protected against the runtime's own calls to
ExitProcess, but if Go code calls external code, there's nothing
stopping that code from calling ExitProcess. For example, in #35775,
our own call to racefini leads to C code calling ExitProcess and
occasionally causing a deadlock.

This CL fixes this by introducing synchronization between calling
external code on Windows and preemption. It adds an atomic field to
the M that participates in a simple CAS-based synchronization protocol
to prevent suspending a thread running external code. We use this to
protect cgocall (which is used for both cgo calls and system calls on
Windows) and racefini.

Tested by running the flag package's TestParse test compiled in race
mode in a loop. Before this change, this would reliably deadlock after
a few minutes.

Fixes #35775.
Updates #10958, #24543.

Change-Id: I50d847abcdc2688b4f71eee6a75eca0f2fee892c
Reviewed-on: https://go-review.googlesource.com/c/go/+/213837
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
2020-01-09 17:28:58 +00:00
Bryan C. Mills
6dbcc8b865 cmd/go: make "finding" logging deterministic
In CL 204777, I made the "finding" messages in cachingRepo only print
after a “longish” delay, on the theory that they would help diagnose
slow or stuck fetches.

However, as I've been testing Go 1.14 beta 1, I've found that these
messages are mostly just noise, and the fact that they are so
nondeterministic causes both confusion and test flakes (#35539).

Moreover, it currently triggers once for each candidate module, when
what we're usually after is actually a specific package within the
module.

So let's log the package operation unconditionally instead of the
module fetches nondeterministically.

Fixes #35539
Updates #26152

Change-Id: I41a1c772465b2f0b357d3402bc372b6907773741
Reviewed-on: https://go-review.googlesource.com/c/go/+/213679
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-09 15:38:00 +00:00
Cherry Zhang
17e97322fb runtime: overwrite asyncPreempt PC when injecting sigpanic on Windows
On Windows, it might be possible that SuspendThread suspends a
thread right between when an exception happens and when the
exception handler runs. (This is my guess. I don't know the
implementation detail of Windows exceptions to be sure.) In this
case, we may inject a call to asyncPreempt before the exception
handler runs. The exception handler will inject a sigpanic call,
which will make the stack trace looks like

sigpanic
asyncPreempt
actual panicking function

i.e. it appears asyncPreempt panicked.

Instead, just overwrite the PC, without pushing another frame.

Fixes #35773.

Change-Id: Ief4e964dcb7f45670b5f93c4dcf285cc1c737514
Reviewed-on: https://go-review.googlesource.com/c/go/+/213879
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
2020-01-09 15:37:52 +00:00
Bryan C. Mills
817afe8357 cmd/go: adjust heuristics for skipping +incompatible versions
We know of at least one module (github.com/stripe/stripe-go) that has
a run of +incompatible versions, followed by a run of versions with
go.mod files, followed by another run of +incompatible versions.

We want the heuristics for showing +incompatible versions to reflect
the authors' current intent, and it seems clear that the current
intent of the authors of that module is for users of the unversioned
import path to still be on +incompatible versions.

To respect that intent, we need to keep checking for +incompatible
versions even after we have seen a lower major version with an
explicit go.mod file.

However, we still don't want to download every single version of the
module to check it. A given major version should have a consistent,
canonical import path, so the path (as inferred by the presence or
absence of a go.mod file) should be the same for every release across
that major version.

To avoid unnecessary overhead — and to allow module authors to correct
accidental changes to a major version's import path — we check only
the most recent release of each major version. If a release
accidentally changes the import path in either direction (by deleting
or adding a go.mod file), it can be corrected by issuing a single
subsequent release of that major version to restore the correct path.

I manually verified that, with this change,
github.com/stripe/stripe-go@latest reverts to v68.7.0+incompatible
as it was in Go 1.13.
The other regression tests for #34165 continue to pass.

Updates #34165

Change-Id: I5daff3cd2123f94c7c49519babf4eecd509f169e
Reviewed-on: https://go-review.googlesource.com/c/go/+/212317
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-08 20:07:45 +00:00
Keith Randall
2248fc63ab cmd/compile: give every really deep type a unique name
This avoids the security problem in #29312 where two very deep, but
distinct, types are given the same name. They both make it to the
linker which chooses one, and the use of the other is now type unsafe.

Instead, give every very deep type its own name. This errs on the
other side, in that very deep types that should be convertible to each
other might now not be. But at least that's not a security hole.

Update #29312.

Change-Id: Iac0ebe73fdc50594fd6fbf7432eef65f9a053126
Reviewed-on: https://go-review.googlesource.com/c/go/+/213517
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
2020-01-08 18:43:55 +00:00
Luka Zitnik
77c13021dd net/http: document that ParseForm consumes Request.Body
Fixes #35620

Change-Id: I71bc56ec7a7507d14b4f013177b4b816bb1a2094
Reviewed-on: https://go-review.googlesource.com/c/go/+/212458
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-08 15:48:04 +00:00
Joel Sing
4b1b18d106 runtime: use FP offsets for pipe/pipe2 on freebsd/arm64 and linux/arm64
This is more readable and less error-prone than using RSP offsets.

Suggested during review of CL 212765.

Change-Id: I070190abeeac8eae5dbd414407602619d9d57422
Reviewed-on: https://go-review.googlesource.com/c/go/+/213577
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-08 14:58:33 +00:00
Michael Matloob
daacf26980 cmd/go: fix TestScript/test_main_twice
The TMPDIR environment variable isn't always available. Use $WORK/tmp
instead, to fix this test on Windows.

Change-Id: I521c470430c6eea4d1f2fc7db749d38178a03a13
Reviewed-on: https://go-review.googlesource.com/c/go/+/213680
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-07 21:42:59 +00:00
Michael Matloob
7d98da8d31 cmd/go: fix test broken by incorrect comments
I accidentally used // instead of #.

Change-Id: I2c9b9d40dd83994ce80fc837e8d992d3807f3e24
Reviewed-on: https://go-review.googlesource.com/c/go/+/213659
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
2020-01-07 19:53:19 +00:00