]> Cypherpunks repositories - gostls13.git/log
gostls13.git
7 years agocrypto/tls: split clientHandshake into multiple methods
Sergey Frolov [Tue, 30 May 2017 16:53:11 +0000 (12:53 -0400)]
crypto/tls: split clientHandshake into multiple methods

Change-Id: I23bfaa7e03a21aad4e85baa3bf52bb00c09b75d0
Reviewed-on: https://go-review.googlesource.com/44354
Reviewed-by: Adam Langley <agl@golang.org>
7 years agocmd/compile: discard duplicate inline method bodies
Matthew Dempsky [Wed, 26 Jul 2017 18:03:45 +0000 (11:03 -0700)]
cmd/compile: discard duplicate inline method bodies

If we've already imported a named type, then there's no need to
process its associated methods except to validate that the signature
matches the existing known method.

However, the current import code still creates a new function node for
each method, saves its inline body (if any), and adds the node to the
global importlist. Because of this, the duplicate methods are never
garbage collected.

This CL changes the compiler to avoid amassing uncollectable garbage
or performing any unnecessary processing.

This is particularly noticeable for protobuf-heavy code. For the
motivating Go package, this CL reduced compile max-RSS from ~12GB to
~3GB and compile time from ~65s to ~50s.

Passes toolstash -cmp for std, cmd, and k8s.io/kubernetes/cmd/....

Change-Id: Ib53ba9f2ad3212995671cf6ba220ee8a56d8d009
Reviewed-on: https://go-review.googlesource.com/51331
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
7 years agodatabase/sql: fail on unsupported options when context is un-cancellable
Matt Dee [Tue, 8 Aug 2017 19:58:27 +0000 (15:58 -0400)]
database/sql: fail on unsupported options when context is un-cancellable

Currently, the check for `ctx.Done() == context.Background().Done()`
comes before the check to see if we are ignoring any options.  That
check should be done earlier, so that the options are not silently
ignored.

Fixes #21350

Change-Id: I3704e4209854c7d99f3f92498bae831cabc7e419
Reviewed-on: https://go-review.googlesource.com/53970
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
Run-TryBot: Daniel Theophanes <kardianos@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agocrypto/rand: batch large calls to linux getrandom
Michael McLoughlin [Sun, 16 Jul 2017 00:21:26 +0000 (18:21 -0600)]
crypto/rand: batch large calls to linux getrandom

The linux getrandom system call returns at most 33554431 = 2^25-1 bytes per
call. The existing behavior for larger reads is to report a failure, because
there appears to have been an unexpected short read. In this case the system
falls back to reading from "/dev/urandom".

This change performs reads of 2^25 bytes or more with multiple calls to
getrandom.

Fixes #20877

Change-Id: I618855bdedafd86cd11219fe453af1d6fa2c88a7
Reviewed-on: https://go-review.googlesource.com/49170
Reviewed-by: Adam Langley <agl@golang.org>
Run-TryBot: Adam Langley <agl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agocrypto/rsa: drop uneeded parameter in modInverse
Brian Kessler [Fri, 21 Jul 2017 08:19:42 +0000 (01:19 -0700)]
crypto/rsa: drop uneeded parameter in modInverse

The current modInverse implementation allocates a big.Int
for the second parameter of GCD, while only the first is needed.
This is unnecessary and can lead to a speed up for optimizations
of GCD where the second parameter is not calculated at all.

Change-Id: I3f042e140ff643311bc3d0b8d192992d4d2c4c70
Reviewed-on: https://go-review.googlesource.com/50531
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Adam Langley <agl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Filippo Valsorda <filosottile.wiki@gmail.com>
Reviewed-by: Adam Langley <agl@golang.org>
7 years agomath/bits: Add examples for Reverse functions
Wembley G. Leach, Jr [Tue, 8 Aug 2017 01:22:14 +0000 (21:22 -0400)]
math/bits: Add examples for Reverse functions

Change-Id: I30563d31f6acea594cc853cc6b672ec664f90d48
Reviewed-on: https://go-review.googlesource.com/53636
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agonet/http: log Readdir error to Server.ErrorLog
Dmitri Shuralyov [Tue, 8 Aug 2017 19:38:21 +0000 (15:38 -0400)]
net/http: log Readdir error to Server.ErrorLog

Now that issue #12438 is resolved, this TODO can be completed.
Create a logf helper, which is similar to Server.logf method,
but takes a *Request to infer the *Server and its ErrorLog from.

Update documentation of Server.ErrorLog to mention a new type
of errors that may be logged to it.

Also update a statement in documentation of Server.ErrorLog from:

// If nil, logging goes to os.Stderr via the log package's
// standard logger.

To:

// If nil, logging is done via the log package's standard logger.

The motivation for doing so is to avoid making inaccurate claims.
Logging may not go to os.Stderr if anyone overrides the log package's
default output via https://godoc.org/log#SetOutput. Saying that
the standard logger is used should be sufficient to explain the
behavior, and users can infer that os.Stderr is used by default,
unless it's changed.

Updates #12438.

Change-Id: I3a4b0db51d652fd25fb2065fbc2157a3dec4dd38
Reviewed-on: https://go-review.googlesource.com/53950
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agocmd/go,cmd/link: support buildmode c-shared on ppc64le
Lynn Boger [Tue, 8 Aug 2017 17:45:41 +0000 (13:45 -0400)]
cmd/go,cmd/link: support buildmode c-shared on ppc64le

This change enables buildmode c-shared on ppc64le.

A bug was fixed in runtime/rt0_linux_ppc64le.s that was necessary to
make this work.  In _rt0_ppc64le_linux_lib, there is code to store
the value of r2 onto the caller's stack.  However, if this file
is compiled using a build mode that maintains the TOC address in
r2, then instructions will be inserted at the beginning of this
function to generate the r2 value for the callee, not the caller.
That means the r2 value for the callee is stored onto the caller's
stack.  If caller and callee don't have the same r2 values, then
the caller will restore the wrong r2 value after it returns.  This
situation can happen when using dlopen since the caller of this
function will be in ld64.so and will definitely have a different
TOC.

Updates #20756

Change-Id: I6e165e0d0716e73721bbbcc520e8302e4856e3ba
Reviewed-on: https://go-review.googlesource.com/53890
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agoruntime: document concurrency of mheap.spans
Austin Clements [Wed, 9 Aug 2017 15:19:24 +0000 (11:19 -0400)]
runtime: document concurrency of mheap.spans

We use lock-free reads from mheap.spans, but the safety of these is
somewhat subtle. Document this.

Change-Id: I928c893232176135308e38bed788d5f84ff11533
Reviewed-on: https://go-review.googlesource.com/54310
Reviewed-by: Rick Hudson <rlh@golang.org>
7 years agonet/http: check If-Range header when request method is HEAD
Joe Kyo [Wed, 9 Aug 2017 02:26:45 +0000 (03:26 +0100)]
net/http: check If-Range header when request method is HEAD

When If-Range does not match and the requested resource is
available, server should return a "200 OK" response to client.
Currently server returns "200 OK" when the request method is
GET, but "206 Partial Content" when method is HEAD.
This change fixed this inconsistency.

Change-Id: I5ad979919f4f089baba54a4445b70ca38471a906
Reviewed-on: https://go-review.googlesource.com/54110
Run-TryBot: Tom Bergan <tombergan@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Tom Bergan <tombergan@google.com>
7 years agomath: additional tests for Ldexp
Than McIntosh [Wed, 9 Aug 2017 13:16:38 +0000 (09:16 -0400)]
math: additional tests for Ldexp

Add test cases to verify behavior for Ldexp with exponents outside the
range of Minint32/Maxint32, for a gccgo bug.

Test for issue #21323.

Change-Id: Iea67bc6fcfafdfddf515cf7075bdac59360c277a
Reviewed-on: https://go-review.googlesource.com/54230
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agodoc/contribute: improve wording of Gerrit description
Christian Alexander [Wed, 9 Aug 2017 15:11:34 +0000 (08:11 -0700)]
doc/contribute: improve wording of Gerrit description

The word "of" was removed in https://go-review.googlesource.com/c/36626

Change-Id: Iece69f425d06ab1cf02743b1033cfed2e96667ab
Reviewed-on: https://go-review.googlesource.com/54290
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agomath/bits: some regular examples for functions
romanyx [Tue, 8 Aug 2017 16:37:53 +0000 (19:37 +0300)]
math/bits: some regular examples for functions

Change-Id: Iee1b3e116b4dcc4071d6512abc5241eabedaeb5c
Reviewed-on: https://go-review.googlesource.com/53850
Reviewed-by: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agodoc/contribute.html: fix name of .gitcookies file
RaviTeja [Wed, 9 Aug 2017 11:53:47 +0000 (17:23 +0530)]
doc/contribute.html: fix name of .gitcookies file

Change-Id: I41c22b9c6933b3f3469c0e815048a49e1d37927a
Reviewed-on: https://go-review.googlesource.com/54190
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agotesting: explain how SkipNow and FailNow stop execution
Alberto Donizetti [Wed, 2 Aug 2017 16:22:21 +0000 (18:22 +0200)]
testing: explain how SkipNow and FailNow stop execution

SkipNow and FailNow must be called from the goroutine running the
test. This is already documented, but it's easy to call them by
mistake when writing subtests. In the following:

  func TestPanic(t *testing.T) {
    t.Run("", func(t2 *testing.T) {
  t.FailNow()    // BAD: should be t2.FailNow()
})
  }

the FailNow call on the outer t *testing.T correctly triggers a panic

  panic: test executed panic(nil) or runtime.Goexit

The error message confuses users (see issues #17421, #21175) because
there is no way to trace back the relevant part of the message ("test
executed ... runtime.Goexit") to a bad FailNow call without checking
the testing package source code and finding out that FailNow calls
runtime.Goexit.

To help users debug the panic message, mention in the SkipNow and
FailNow documentation that they stop execution by calling
runtime.Goexit.

Fixes #21175

Change-Id: I0a3e5f768e72b464474380cfffbf2b67396ac1b5
Reviewed-on: https://go-review.googlesource.com/52770
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agonet/http: update bundled http2
Tom Bergan [Wed, 9 Aug 2017 01:01:08 +0000 (18:01 -0700)]
net/http: update bundled http2

Updates http2 to x/net/http2 git rev 1c05540f687 for:

  http2: fix format argument warnings in tests
  https://golang.org/cl/48090

  http2: retry requests after receiving REFUSED STREAM
  https://golang.org/cl/50471

  http2: block RoundTrip when the Transport hits MaxConcurrentStreams
  https://golang.org/cl/53250

Fixes #13774
Fixes #20985
Fixes #21229

Change-Id: Ie19b4a7cc395a0b7a25fac55f5051faaf94920bb
Reviewed-on: https://go-review.googlesource.com/54052
Run-TryBot: Tom Bergan <tombergan@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agostrings: add examples for Index functions
molivier [Tue, 8 Aug 2017 15:39:52 +0000 (17:39 +0200)]
strings: add examples for Index functions

Change-Id: Ia0f0c8ab4f2f9e96faad6d88775ae19ca7fae53c
Reviewed-on: https://go-review.googlesource.com/53790
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Avelino <t@avelino.xxx>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agostrings: avoid unnecessary variable setting
Kevin Burke [Thu, 3 Aug 2017 05:24:22 +0000 (22:24 -0700)]
strings: avoid unnecessary variable setting

We initialize fieldStart to 0, then set it to i without ever reading
0, so we might as well just initialize it to i.

Change-Id: I17905b25d54a62b6bc76f915353756ed5eb6972b
Reviewed-on: https://go-review.googlesource.com/52933
Reviewed-by: Martin Möhrmann <moehrmann@google.com>
Reviewed-by: Avelino <t@avelino.xxx>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agocrypto/{aes,cipher,rc4}: fix out of bounds write in stream ciphers
Wei Congrui [Sat, 29 Jul 2017 10:23:00 +0000 (18:23 +0800)]
crypto/{aes,cipher,rc4}: fix out of bounds write in stream ciphers

Functions XORKeyStream should panic if len(dst) < len(src), but it
write to dst before bounds checking. In asm routines and fastXORBytes,
this is an out of bounds write.

Fixes #21104

Change-Id: I354346cda8d63910f3bb619416ffd54cd0a04a0b
Reviewed-on: https://go-review.googlesource.com/52050
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agocmd/vet: check that C receivers are cgo imports
Daniel Martí [Tue, 13 Jun 2017 15:22:06 +0000 (16:22 +0100)]
cmd/vet: check that C receivers are cgo imports

Otherwise, vet might have false positives when "C" is a variable and
we're just using a method on it. Or when an import was renamed to "C".

Add test files for both of these cases.

Fixes #20655.

Change-Id: I55fb93119444a67fcf7891ad92653678cbd4670e
Reviewed-on: https://go-review.googlesource.com/45551
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Rob Pike <r@golang.org>
7 years agocmd/compile: use right shifts to eliminate bounds checks
Josh Bleecher Snyder [Fri, 19 May 2017 22:10:10 +0000 (15:10 -0700)]
cmd/compile: use right shifts to eliminate bounds checks

These rules trigger a few times during make.bash.
When we eliminate boundedness checks from walk.go
we'll rely on them more heavily.

Updates #19692

Change-Id: I268c36ae2f1401c68dd685b15f2d30f5d6971176
Reviewed-on: https://go-review.googlesource.com/43775
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
7 years agocmd/compile: remove gc.Sysfunc calls from 387 backend
Josh Bleecher Snyder [Tue, 8 Aug 2017 23:38:25 +0000 (16:38 -0700)]
cmd/compile: remove gc.Sysfunc calls from 387 backend

gc.Sysfunc must not be called concurrently.
We set up runtime routines used by the backend
prior to doing any backend compilation.
I missed the 387 ones; fix that.

Sysfunc should have been unexported during 1.9.
I will rectify that in a subsequent CL.

Fixes #21352

Change-Id: I8386eaa1e05879c25c672b9c9fc693c938e9aeb6
Reviewed-on: https://go-review.googlesource.com/54090
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Avelino <t@avelino.xxx>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agomath/rand: use t.Helper in tests
Josh Bleecher Snyder [Sat, 29 Jul 2017 14:25:39 +0000 (07:25 -0700)]
math/rand: use t.Helper in tests

Change-Id: Iece39e6412c0f6c63f563eed1621b8cca02de835
Reviewed-on: https://go-review.googlesource.com/51890
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Avelino <t@avelino.xxx>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agomath/rand: fix uniform distribution stddev in tests
Josh Bleecher Snyder [Wed, 26 Jul 2017 17:59:08 +0000 (10:59 -0700)]
math/rand: fix uniform distribution stddev in tests

The standard deviation of a uniform distribution is size / √12.
The size of the interval [0, 255] is 256, not 255.
While we're here, simplify the expression.

The tests previously passed only because the error margin was large enough.
Sample observed standard deviations while running tests:

73.7893634666819
73.9221651548294
73.8077961697150
73.9084236069471
73.8968446814785
73.8684209136244
73.9774618960282
73.9523483202549

255 / √12 == 73.6121593216772
256 / √12 == 73.9008344562721

Change-Id: I7bc6cdc11e5d098951f2f2133036f62489275979
Reviewed-on: https://go-review.googlesource.com/51310
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agoruntime: simplify b.tophash[i] calculation
Josh Bleecher Snyder [Mon, 5 Jun 2017 14:18:09 +0000 (07:18 -0700)]
runtime: simplify b.tophash[i] calculation

The compiler is now smart enough not to insert a bounds check.
Not only is this simpler, it eliminates a LEAQ from the
generated code.

Change-Id: Ie90cbd11584542edd99edd5456d9b02c406e8063
Reviewed-on: https://go-review.googlesource.com/53892
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agoruntime: use constants for map string key size
Josh Bleecher Snyder [Wed, 7 Jun 2017 18:42:36 +0000 (11:42 -0700)]
runtime: use constants for map string key size

It appears that this was just missed
by accident in the original implementation.

Change-Id: Id87147bcb7a685d624eac7034342a305ad644e7a
Reviewed-on: https://go-review.googlesource.com/53891
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Avelino <t@avelino.xxx>
7 years agostrings: add Examples for TrimFunc and variants during Gophercon!
Lyle Franklin [Sat, 15 Jul 2017 20:33:56 +0000 (13:33 -0700)]
strings: add Examples for TrimFunc and variants during Gophercon!

Change-Id: I6bfe5b914cf11be1cd1f8e61d557cc718725f0be
Reviewed-on: https://go-review.googlesource.com/49013
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agocmd/compile: fix ADDSDmem comment and order in list
Alberto Donizetti [Mon, 31 Jul 2017 09:38:13 +0000 (11:38 +0200)]
cmd/compile: fix ADDSDmem comment and order in list

ADDSDmem comment said f32 (likely a copy-paste mistake).

Also swap ADDSSmem and ADDSDmem positions in the list to uniform the
list order.

Fixes #21225

Change-Id: I26bb116900c1cf4c4e6faeef613d7318c9c85b98
Reviewed-on: https://go-review.googlesource.com/52071
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
Reviewed-by: Keith Randall <khr@golang.org>
7 years agomath: change oeis.org urls to https
Jelte Fennema [Mon, 31 Jul 2017 11:07:35 +0000 (13:07 +0200)]
math: change oeis.org urls to https

Regular HTTP is insecure, oeis.org supports HTTPS and it is actually
used in some other places in the codebase. This changes these final urls
to use HTTPS.

Change-Id: Ia46410a9c7ce67238a10cb6bfffaceca46112f58
Reviewed-on: https://go-review.googlesource.com/52072
Reviewed-by: Alberto Donizetti <alb.donizetti@gmail.com>
7 years agonet: fix LookupCNAME on Plan 9
David du Colombier [Tue, 8 Aug 2017 01:06:02 +0000 (03:06 +0200)]
net: fix LookupCNAME on Plan 9

Looking up a nonexistent CNAME record on an existing
domain on Plan 9 can return either a "dns failure"
error or a "resource does not exist" error.

Fixes #21335.

Change-Id: Iead8ed4fe3167db06adb4ab7797c52c7efc3ff89
Reviewed-on: https://go-review.googlesource.com/53670
Run-TryBot: David du Colombier <0intro@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Avelino <t@avelino.xxx>
7 years agoruntime, internal/cpu: change cache line size for arm64 to 64 bytes
Martin Möhrmann [Thu, 11 May 2017 05:36:09 +0000 (07:36 +0200)]
runtime, internal/cpu: change cache line size for arm64 to 64 bytes

According to http://infocenter.arm.com:
* ARM Cortex-A53 (Raspberry Pi 3, Pine A64)
* ARM Cortex-A57 (Opteron A1100, Tegra X1)
* ARM Cortex-A72
all have a cache line size of 64 bytes.

Change-Id: I4b333e930792fb1a221b3ca6f395bfa1b7762afa
Reviewed-on: https://go-review.googlesource.com/43250
Run-TryBot: Martin Möhrmann <moehrmann@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
7 years agoruntime: remove unused prefetch functions
Martin Möhrmann [Mon, 22 May 2017 05:42:42 +0000 (07:42 +0200)]
runtime: remove unused prefetch functions

The only non test user of the assembler prefetch functions is the
heapBits.prefetch function which is itself unused.

The runtime prefetch functions have no functionality on most platforms
and are not inlineable since they are written in assembler. The function
call overhead eliminates the performance gains that could be achieved with
prefetching and would degrade performance for platforms where the functions
are no-ops.

If prefetch functions are needed back again later they can be improved
by avoiding the function call overhead and implementing them as intrinsics.

Change-Id: I52c553cf3607ffe09f0441c6e7a0a818cb21117d
Reviewed-on: https://go-review.googlesource.com/44370
Run-TryBot: Martin Möhrmann <moehrmann@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agonet/http: set Content-Type header in Redirect
Dmitri Shuralyov [Wed, 19 Jul 2017 03:59:40 +0000 (23:59 -0400)]
net/http: set Content-Type header in Redirect

Setting the Content-Type header explicitly allows browsers to know what
the type of the content is. Otherwise, they have to guess the type from
the content itself, which could lead to unpredictable behavior, and
increases CPU usage.

Not setting the Content-Type despite writing a body may also trigger
unwanted warnings in user middleware, and make it more difficult to
resolve valid issues where the user forgets to set Content-Type in
some situations where it should be set.

There is some precedent for doing this in http.FileServer, which
sets "Content-Type" to "text/html; charset=utf-8" before writing
<pre><a href=...></a></pre> HTML.

Change-Id: I24286827bebf4da8adee9238b8c5a94d4069c8db
Reviewed-on: https://go-review.googlesource.com/50510
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agocmd/cgo: document that structs and arrays don't work with //export
Ian Lance Taylor [Wed, 2 Aug 2017 19:30:58 +0000 (12:30 -0700)]
cmd/cgo: document that structs and arrays don't work with //export

Fixes #18412

Change-Id: Ib457eeced7820517aa35df9e7dfda1c0de4ac004
Reviewed-on: https://go-review.googlesource.com/52852
Reviewed-by: Avelino <t@avelino.xxx>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agomisc/cgo/errors: update ptr.go comment
Ian Lance Taylor [Sat, 5 Aug 2017 18:07:06 +0000 (11:07 -0700)]
misc/cgo/errors: update ptr.go comment

Accidentally omitted from submit of CL 53352.

Updates #21306

Change-Id: I022d89c6417fe9371856d49b646eb6294b91657c
Reviewed-on: https://go-review.googlesource.com/53415
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Avelino <t@avelino.xxx>
7 years agoencoding/json: de-indent raw strings in remaining examples
Dmitri Shuralyov [Sun, 16 Jul 2017 05:58:25 +0000 (23:58 -0600)]
encoding/json: de-indent raw strings in remaining examples

This change fixes the remaining examples where the raw strings had
suboptimal indentation (one level too many) when viewed in godoc.

Follows CL 48910.
Fixes #21026.

Change-Id: Ifc0dae3fa899a9fff8b1ff958414e2fe6852321d
Reviewed-on: https://go-review.googlesource.com/50990
Run-TryBot: Dmitri Shuralyov <shurcool@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agohtml: updated entity spec link
Seiji Takahashi [Thu, 3 Aug 2017 13:08:55 +0000 (22:08 +0900)]
html: updated entity spec link

Fixes #21194

Change-Id: Iac5187335df67f90f0f47c7ef6574de147c2ac9b
Reviewed-on: https://go-review.googlesource.com/52970
Reviewed-by: Avelino <t@avelino.xxx>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agointernal/cpu: fix style nit in variable name
Martin Möhrmann [Sun, 6 Aug 2017 14:15:05 +0000 (16:15 +0200)]
internal/cpu: fix style nit in variable name

Consistent with similar change of style in the crypto repository:
http://golang.org/cl/43511

Change-Id: Ib158c52a2649dcbbe9eb92f2bdb9d289e0dcc7bf
Reviewed-on: https://go-review.googlesource.com/53474
Reviewed-by: Han-Wen Nienhuys <hanwen@google.com>
Reviewed-by: Avelino <t@avelino.xxx>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agoflag: make default Usage prefer CommandLine's output over just os.Stderr
Brad Fitzpatrick [Thu, 13 Jul 2017 17:28:54 +0000 (17:28 +0000)]
flag: make default Usage prefer CommandLine's output over just os.Stderr

CommandLine (exported in Go 1.2) has default output of os.Stderr.

Before it was exported, it made sense to have the global Usage func
(the implicit usage func if CommandLine.Usage is nil) hard-code
os.Stderr has its output. But once CommandLine was exported, Usage
should use it if provided.

Fixes #20998

Change-Id: I9e1c0415a563a982634b9808199c9ee175d72f4c
Reviewed-on: https://go-review.googlesource.com/48390
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
7 years agoruntime: mapassign_* should use typedmemmove to update keys
Keith Randall [Sat, 5 Aug 2017 16:58:41 +0000 (09:58 -0700)]
runtime: mapassign_* should use typedmemmove to update keys

We need to make sure that when the key contains a pointer, we use
a write barrier to update the key.

Also mapdelete_* should use typedmemclr.

Fixes #21297

Change-Id: I63dc90bec1cb909c2c6e08676c9ec853d736cdf8
Reviewed-on: https://go-review.googlesource.com/53414
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agoall: remove some manual hyphenation
Josh Bleecher Snyder [Sun, 6 Aug 2017 13:17:42 +0000 (06:17 -0700)]
all: remove some manual hyphenation

Manual hyphenation doesn't work well when text gets reflown,
for example by godoc.

There are a few other manual hyphenations in the tree,
but they are in local comments or comments for unexported functions.

Change-Id: I17c9b1fee1def650da48903b3aae2fa1e1119a65
Reviewed-on: https://go-review.googlesource.com/53510
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agoruntime: mark activeModules nosplit/nowritebarrier
Ian Lance Taylor [Fri, 4 Aug 2017 17:36:40 +0000 (10:36 -0700)]
runtime: mark activeModules nosplit/nowritebarrier

The activeModules function is called by the cgo pointer checking code,
which is called by the write barrier (when GODEBUG=cgocheck=2), and as
such must be nosplit/nowritebarrier.

Fixes #21306

Change-Id: I57f2124f14de7f3872b2de9532abab15df95d45a
Reviewed-on: https://go-review.googlesource.com/53352
Reviewed-by: Austin Clements <austin@google.com>
7 years agomath/bits: fix example for OnesCount64
Francesc Campoy Flores [Sat, 5 Aug 2017 00:03:33 +0000 (17:03 -0700)]
math/bits: fix example for OnesCount64

Erroneously called OnesCount instead of OnesCount64

Change-Id: Ie877e43f213253e45d31f64931c4a15915849586
Reviewed-on: https://go-review.googlesource.com/53410
Reviewed-by: Chris Broadfoot <cbro@golang.org>
7 years agomath/bits: add examples for OnesCount functions
Francesc Campoy [Fri, 4 Aug 2017 22:41:57 +0000 (15:41 -0700)]
math/bits: add examples for OnesCount functions

Change-Id: Ie673f9665825a40281c2584d478ba1260f725856
Reviewed-on: https://go-review.googlesource.com/53357
Run-TryBot: Chris Broadfoot <cbro@golang.org>
Reviewed-by: Chris Broadfoot <cbro@golang.org>
7 years agomisc/cgo/testsanitizers: also skip tsan11/tsan12 when using GCC
Ian Lance Taylor [Fri, 4 Aug 2017 22:33:48 +0000 (15:33 -0700)]
misc/cgo/testsanitizers: also skip tsan11/tsan12 when using GCC

Updates #21196

Change-Id: I307cacc963448b90a23f633bec15498ba7bf1937
Reviewed-on: https://go-review.googlesource.com/53356
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agoreflect: document how DeepEqual handles cycles
Ian Lance Taylor [Thu, 3 Aug 2017 00:52:06 +0000 (17:52 -0700)]
reflect: document how DeepEqual handles cycles

Fixes #20428

Change-Id: Ia450e615728efd4ccb6e42117b547cac162f13a3
Reviewed-on: https://go-review.googlesource.com/52931
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
7 years agodoc: mention handling of moved GOROOT in 1.9 release notes
Ian Lance Taylor [Fri, 4 Aug 2017 18:23:25 +0000 (11:23 -0700)]
doc: mention handling of moved GOROOT in 1.9 release notes

Updates #20587

Change-Id: Ia131b9a4dc4986950d9ecbfcbd6b026ade234fc0
Reviewed-on: https://go-review.googlesource.com/53370
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agodoc: use better wording to explain type-aware completion
Jaana Burcu Dogan [Fri, 4 Aug 2017 19:59:55 +0000 (12:59 -0700)]
doc: use better wording to explain type-aware completion

Some editors can filter the autocompletion suggestions based on
whether the code will compile once autocompleted. Explain this
feature with better wording.

Change-Id: I29e4b0396878f18c79208915402c0a209a813b04
Reviewed-on: https://go-review.googlesource.com/53355
Reviewed-by: Florin Patan <florinpatan@gmail.com>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
7 years agodoc: replace paid with commercial
Jaana Burcu Dogan [Fri, 4 Aug 2017 19:44:18 +0000 (12:44 -0700)]
doc: replace paid with commercial

Change-Id: I3e6de4da0648f61e254c7597f316df3e5791321a
Reviewed-on: https://go-review.googlesource.com/53354
Reviewed-by: Andrew Bonventre <andybons@golang.org>
7 years agodoc/1.9: add CL 43712, ReverseProxy of HTTP/2 trailers to the release notes.
Tristan Colgate [Fri, 4 Aug 2017 07:27:56 +0000 (08:27 +0100)]
doc/1.9: add CL 43712, ReverseProxy of HTTP/2 trailers to the release notes.

Add https://go-review.googlesource.com/c/43712,
"net/http/httputil: ReverseProxy should pass on unannounced Trailers"
to the relase notes.

Fixes #21307

Change-Id: I52c126987a5d0abc4153c0e71b535529c46cd457
Reviewed-on: https://go-review.googlesource.com/53290
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agodoc: clarify that Gogland is for paid IntelliJ platform IDEs
Jaana Burcu Dogan [Fri, 4 Aug 2017 16:47:06 +0000 (09:47 -0700)]
doc: clarify that Gogland is for paid IntelliJ platform IDEs

Fixes #21213.

Change-Id: I7b8a84de92bbd1d3f78f8a9612f3af8cd092cb94
Reviewed-on: https://go-review.googlesource.com/53351
Reviewed-by: Andrew Bonventre <andybons@golang.org>
7 years agodoc/1.9: fix broken html link in CL 53030/53210
Dmitry Savintsev [Fri, 4 Aug 2017 08:12:21 +0000 (10:12 +0200)]
doc/1.9: fix broken html link in CL 53030/53210

Change-Id: I7176becd10ad84cbfc3fb9427e190028626e5baf
Reviewed-on: https://go-review.googlesource.com/53291
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agodoc: fix bad link in go1.9 release notes
Alberto Donizetti [Fri, 4 Aug 2017 10:13:33 +0000 (12:13 +0200)]
doc: fix bad link in go1.9 release notes

Change-Id: I64ba37428f5cc560f0f20fe039feaecf5fcda93e
Reviewed-on: https://go-review.googlesource.com/53330
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agodoc/1.9: fix stray html in CL 53030
Dmitry Savintsev [Thu, 3 Aug 2017 21:25:59 +0000 (23:25 +0200)]
doc/1.9: fix stray html in CL 53030

Change-Id: Ib4102b1e2a8863712f725c4d1e37fdbe3dfe3c07
Reviewed-on: https://go-review.googlesource.com/53210
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agoencoding/binary: add examples for varint functions
Axel Wagner [Sat, 15 Jul 2017 17:43:22 +0000 (11:43 -0600)]
encoding/binary: add examples for varint functions

Change-Id: I191f6e46b452fadde9f641140445d843b0c7d534
Reviewed-on: https://go-review.googlesource.com/48604
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agodoc/1.9: add CL 36696 for crypto/x509 to the release notes
Dmitry Savintsev [Thu, 3 Aug 2017 14:51:32 +0000 (16:51 +0200)]
doc/1.9: add CL 36696 for crypto/x509 to the release notes

add https://go-review.googlesource.com/c/36696
"crypto/x509: ignore CN if SAN extension present"
to the release notes.

Fixes #21289

Change-Id: Ifa184d3816806a8da3c67b68476c923329acf13e
Reviewed-on: https://go-review.googlesource.com/53030
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agodoc: hide blog content for golang.google.cn
Andrew Bonventre [Thu, 3 Aug 2017 16:33:26 +0000 (12:33 -0400)]
doc: hide blog content for golang.google.cn

/blog redirects to blog.golang.org (currently blocked in China)
unless there is a local checkout of golang.org/x/blog, which is
not possible on App Engine Classic.

Change-Id: Ia695e663c9bebcc6c3bedea324c630299eaad4dc
Reviewed-on: https://go-review.googlesource.com/53051
Reviewed-by: Chris Broadfoot <cbro@golang.org>
7 years agointernal/poll: don't add non-sockets to runtime poller
Ian Lance Taylor [Tue, 1 Aug 2017 23:05:17 +0000 (16:05 -0700)]
internal/poll: don't add non-sockets to runtime poller

Updates #21172

Change-Id: I0fec6e645328bbc85f3e47f4f71dd8d1d68c75ab
Reviewed-on: https://go-review.googlesource.com/52551
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
7 years agocmd/vet: don't exit with failure on type checking error
Ian Lance Taylor [Wed, 2 Aug 2017 19:06:58 +0000 (12:06 -0700)]
cmd/vet: don't exit with failure on type checking error

The vet tool only reports a type checking error when invoked with -v.
Don't let that by itself cause vet to exit with an error exit status.

Updates #21188

Change-Id: I172c13d46c35d49e229e96e833683d8c82a77de7
Reviewed-on: https://go-review.googlesource.com/52851
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Rob Pike <r@golang.org>
7 years agodoc: hide video and share if being served from CN
Andrew Bonventre [Wed, 2 Aug 2017 20:31:46 +0000 (16:31 -0400)]
doc: hide video and share if being served from CN

In the case where requests are coming from mainland China, hide
links to locations that are blocked and functionality that is
not permitted.

Additionally, some very small cleanup of the JS.

This change requires https://go-review.googlesource.com/c/52873

Change-Id: I7fc68748e629dbe5b966d6bf117e7f7b546966eb
Reviewed-on: https://go-review.googlesource.com/52872
Reviewed-by: Chris Broadfoot <cbro@golang.org>
7 years agotestsanitizers: check that tsan program runs, skip tsan10 on gcc
Ian Lance Taylor [Wed, 2 Aug 2017 17:49:20 +0000 (10:49 -0700)]
testsanitizers: check that tsan program runs, skip tsan10 on gcc

Check not only that a tsan program can be built, but also that it runs.
This fails with some installations of GCC 7.

Skip the tsan10 program when using GCC, as it reportedly hangs.

This is a patch to help people build 1.9; we may be able to do a
better fix for 1.10.

Updates #21196

Change-Id: Icd1ffbd018dc65a97ff45cab1264b9b0c7fa0ab2
Reviewed-on: https://go-review.googlesource.com/52790
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agotime: skip ZoneAbbr test in timezones with no abbreviation
Alberto Donizetti [Tue, 1 Aug 2017 15:41:51 +0000 (17:41 +0200)]
time: skip ZoneAbbr test in timezones with no abbreviation

The testZoneAbbr assumes that

  Parse(RFC1123, t1.Format(RFC1123))

will always succeed. This is not true because Format will fall back to
the numeric zone (ex. -07) for timezones with no abbreviation, but
Parse won't accept the numeric zone when the layout specifies 'MST'
(an abbreviation).

Skip the zone abbreviation test in timezones with no abbreviation.

Fixes #21183

Change-Id: If04691cc23ae1075d8a953733024e17f5a7646de
Reviewed-on: https://go-review.googlesource.com/52430
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agocmd/go: show examples with empty output in go test -list
Seiji Takahashi [Sun, 30 Jul 2017 12:00:09 +0000 (21:00 +0900)]
cmd/go: show examples with empty output in go test -list

Fixes #21205

Change-Id: I81b001eb42cbf2a5d5b7b82eb63548b22f501be5
Reviewed-on: https://go-review.googlesource.com/52110
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

7 years agocmd/compile: set/unset base register for better assembly print
Cherry Zhang [Tue, 18 Jul 2017 12:35:00 +0000 (08:35 -0400)]
cmd/compile: set/unset base register for better assembly print

For address of an auto or arg, on all non-x86 architectures
the assembler backend encodes the actual SP offset in the
instruction but leaves the offset in Prog unchanged. When the
assembly is printed in compile -S, it shows an offset
relative to pseudo FP/SP with an actual hardware SP base
register (e.g. R13 on ARM). This is confusing. Unset the
base register if it is indeed SP, so the assembly output is
consistent. If the base register isn't SP, it should be an
error and the error output contains the actual base register.

For address loading instructions, the base register isn't set
in the compiler on non-x86 architectures. Set it. Normally it
is SP and will be unset in the change mentioned above for
printing. If it is not, it will be an error and the error
output contains the actual base register.

No change in generated binary, only printed assembly. Passes
"go build -a -toolexec 'toolstash -cmp' std cmd" on all
architectures.

Fixes #21064.

Change-Id: Ifafe8d5f9b437efbe824b63b3cbc2f5f6cdc1fd5
Reviewed-on: https://go-review.googlesource.com/49432
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
7 years agoruntime: map bitmap and spans during heap initialization
Austin Clements [Fri, 28 Jul 2017 21:44:09 +0000 (17:44 -0400)]
runtime: map bitmap and spans during heap initialization

We lazily map the bitmap and spans areas as the heap grows. However,
right now we're very slightly too lazy. Specifically, the following
can happen on 32-bit:

1. mallocinit fails to allocate any heap arena, so
   arena_used == arena_alloc == arena_end == bitmap.

2. There's less than 256MB between the end of the bitmap mapping and
   the next mapping.

3. On the first allocation, mheap.sysAlloc sees that there's not
   enough room in [arena_alloc, arena_end) because there's no room at
   all. It gets a 256MB mapping from somewhere *lower* in the address
   space than arena_used and sets arena_alloc and arena_end to this
   hole.

4. Since the new arena_alloc is lower than arena_used, mheap.sysAlloc
   doesn't bother to call mheap.setArenaUsed, so we still don't have a
   bitmap mapping or a spans array mapping.

5. mheap.grow, which called mheap.sysAlloc, attempts to fill in the
   spans array and crashes.

Fix this by mapping the metadata regions for the initial arena_used
when the heap is initialized, rather than trying to wait for an
allocation. This maintains the intended invariant that the structures
are always mapped for [arena_start, arena_used).

Fixes #21044.

Change-Id: I4422375a6e234b9f979d22135fc63ae3395946b0
Reviewed-on: https://go-review.googlesource.com/51714
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agoruntime: fall back to small mmaps if we fail to grow reservation
Austin Clements [Fri, 28 Jul 2017 22:06:03 +0000 (18:06 -0400)]
runtime: fall back to small mmaps if we fail to grow reservation

Right now, if it's possible to grow the arena reservation but
mheap.sysAlloc fails to get 256MB more of memory, it simply fails.
However, on 32-bit we have a fallback path that uses much smaller
mmaps that could take in this situation, but fail to.

This commit fixes mheap.sysAlloc to use a common failure path in case
it can't grow the reservation. On 32-bit, this path includes the
fallback.

Ideally, mheap.sysAlloc would attempt smaller reservation growths
first, but taking the fallback path is a simple change for Go 1.9.

Updates #21044 (fixes one of two issues).

Change-Id: I1e0035ffba986c3551479d5742809e43da5e7c73
Reviewed-on: https://go-review.googlesource.com/51713
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years ago.github: add .md extension to SUPPORT file
Gustav Westling [Sun, 30 Jul 2017 20:14:22 +0000 (22:14 +0200)]
.github: add .md extension to SUPPORT file

This makes GitHub render the markdown file automatically
on their web UI.

SUPPORT.md is the recommended file name according to the GitHub
documentation:
https://help.github.com/articles/adding-support-resources-to-your-project/

Fixes #21223

Change-Id: I9f9b9daced9c29a16850e8c446656f353f50b1ae
Reviewed-on: https://go-review.googlesource.com/52013
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agoplugin: mention that there are known bugs with plugins
Ian Lance Taylor [Wed, 26 Jul 2017 16:46:58 +0000 (09:46 -0700)]
plugin: mention that there are known bugs with plugins

Change-Id: I9e63661cac2bebc41d7aa3cd80e1920eec22b894
Reviewed-on: https://go-review.googlesource.com/51250
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
7 years agocmd/dist: skip moved GOROOT on Go's Windows builders when not sharding tests
Brad Fitzpatrick [Thu, 27 Jul 2017 04:33:18 +0000 (04:33 +0000)]
cmd/dist: skip moved GOROOT on Go's Windows builders when not sharding tests

Change-Id: I0bcae339624e7d61037d9ea0885b7bd07491bbb6
Reviewed-on: https://go-review.googlesource.com/51430
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agotest: add README
Josh Bleecher Snyder [Mon, 24 Jul 2017 17:17:15 +0000 (10:17 -0700)]
test: add README

Updates #21034

Change-Id: I951fb48ab3b9ed54d225c11879db8f09048a36a3
Reviewed-on: https://go-review.googlesource.com/50950
Reviewed-by: Rob Pike <r@golang.org>
7 years agoruntime/pprof: prevent a deadlock that SIGPROF might create on mips{,le}
Vladimir Stefanovic [Thu, 4 May 2017 14:45:29 +0000 (16:45 +0200)]
runtime/pprof: prevent a deadlock that SIGPROF might create on mips{,le}

64bit atomics on mips/mipsle are implemented using spinlocks. If SIGPROF
is received while the program is in the critical section, it will try to
write the sample using the same spinlock, creating a deadloop.
Prevent it by creating a counter of SIGPROFs during atomic64 and
postpone writing the sample(s) until called from elsewhere, with
pc set to _LostSIGPROFDuringAtomic64.

Added a test case, per Cherry's suggestion. Works around #20146.

Change-Id: Icff504180bae4ee83d78b19c0d9d6a80097087f9
Reviewed-on: https://go-review.googlesource.com/42652
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
7 years agodoc: list editor options by name, not plugin name
Jaana Burcu Dogan [Tue, 25 Jul 2017 20:03:48 +0000 (13:03 -0700)]
doc: list editor options by name, not plugin name

So the users can recognize their option by their editor's name.

Fixes #20398.

Change-Id: Id314d4dbe26f40231a479b179620d7e66512b506
Reviewed-on: https://go-review.googlesource.com/51114
Reviewed-by: Chris Broadfoot <cbro@golang.org>
7 years agodoc: cleanup editor page
Zac Bergquist [Tue, 25 Jul 2017 18:08:47 +0000 (14:08 -0400)]
doc: cleanup editor page

Fix some UI issues introduced with CL50952:
- increase header colspan to account for additional column
- remove ':' character from footnotes

Change-Id: I56f59b8e4b2852612b3c6c7c0dfe99125dd8b57b
Reviewed-on: https://go-review.googlesource.com/51113
Reviewed-by: Jaana Burcu Dogan <jbd@google.com>
7 years agodoc: add Atom to editor guide
Zac Bergquist [Mon, 24 Jul 2017 23:05:43 +0000 (19:05 -0400)]
doc: add Atom to editor guide

Fixes #20569

Change-Id: I752a49ed50c1567f8db7112859ac073f37dd77dc
Reviewed-on: https://go-review.googlesource.com/50952
Reviewed-by: Jaana Burcu Dogan <jbd@google.com>
7 years agocmd/compile: consider exported flag in namedata
Ian Lance Taylor [Fri, 21 Jul 2017 23:37:40 +0000 (16:37 -0700)]
cmd/compile: consider exported flag in namedata

It is possible to have an unexported name with a nil package,
for an embedded field whose type is a pointer to an unexported type.
We must encode that fact in the type..namedata symbol name,
to avoid incorrectly merging an unexported name with an exported name.

Fixes #21120

Change-Id: I2e3879d77fa15c05ad92e0bf8e55f74082db5111
Reviewed-on: https://go-review.googlesource.com/50710
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
7 years agocmd/link: use full link, not compile, to test for -no-?pie
Ian Lance Taylor [Mon, 24 Jul 2017 17:13:25 +0000 (10:13 -0700)]
cmd/link: use full link, not compile, to test for -no-?pie

This avoids an error from clang when using -nopie during compilation,
and permits us to check that the entire build succeeds.

Updates #21042

Change-Id: I2e6c7d5c97a85c223ed3288622bbb58ce33b8774
Reviewed-on: https://go-review.googlesource.com/50874
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years ago.github: recommend 'go bug' when filing an issue
Josh Bleecher Snyder [Mon, 24 Jul 2017 16:54:13 +0000 (09:54 -0700)]
.github: recommend 'go bug' when filing an issue

It was released with 1.8, so it should be widely available.

Change-Id: I7dcf205009b528071ea63f99cb5da0db183df341
Reviewed-on: https://go-review.googlesource.com/50932
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years ago.github: add SUPPORT file
Josh Bleecher Snyder [Mon, 24 Jul 2017 15:18:06 +0000 (08:18 -0700)]
.github: add SUPPORT file

GitHub recently added support for a SUPPORT file:

https://github.com/blog/2400-support-file-support

This SUPPORT file is a very lightly edited copy
of the wiki entry on asking questions:

https://github.com/golang/go/wiki/Questions

Change-Id: Ic1eb74d985ea30862defb99750fb42da84e492de
Reviewed-on: https://go-review.googlesource.com/50930
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agoencoding/json: ignore embedded fields of pointers to unexported non-structs
Joe Tsai [Fri, 21 Jul 2017 23:53:54 +0000 (16:53 -0700)]
encoding/json: ignore embedded fields of pointers to unexported non-structs

https://golang.org/cl/33773 fixes the JSON marshaler to avoid serializing
embedded fields on unexported types of non-struct types. However, Go allows
embedding pointer to types, so the check for whether the field is a non-struct
type must first dereference the pointer to get at the underlying type.

Furthermore, due to a edge-case in the behavior of StructField.PkgPath not
being a reliable indicator of whether the field is unexported (see #21122),
we use our own logic to determine whether the field is exported or not.

The logic in this CL may be simplified depending on what happens in #21122.

Fixes #21121
Updates #21122

Change-Id: I8dfd1cdfac8a87950df294a566fb96dfd04fd749
Reviewed-on: https://go-review.googlesource.com/50711
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agosync: delete a sentence from the Map docs
Brad Fitzpatrick [Fri, 21 Jul 2017 17:32:32 +0000 (17:32 +0000)]
sync: delete a sentence from the Map docs

From Josh's comments on https://golang.org/cl/50310

Once I removed the "from the Go standard library" bit, the beginning
wasn't worth keeping. It also wasn't clear whether what it meant by
"cache contention". Processor caches, or user-level caches built with
sync.Map? It didn't seem worth clarifying and didn't convey any useful
information, so deleted.

Change-Id: Id1d76105a3081d0855f6a64540700932bb83d98e
Reviewed-on: https://go-review.googlesource.com/50632
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
7 years agonet/http: document that after Hijack, Request.Body is invalid
Brad Fitzpatrick [Fri, 21 Jul 2017 18:52:38 +0000 (18:52 +0000)]
net/http: document that after Hijack, Request.Body is invalid

We can make it panic with a more explicit and readable error message
during Go 1.10, but document it for now. This has always been the
case; it's not a new rule.

Updates #20933

Change-Id: I53c1fefb47a8f4aae0bb32fa742afa3a2ed20e8a
Reviewed-on: https://go-review.googlesource.com/50634
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
7 years agosync: update Map documentation with usage rule of thumb
Michael Stapelberg [Thu, 20 Jul 2017 15:16:36 +0000 (08:16 -0700)]
sync: update Map documentation with usage rule of thumb

As per bcmills’s lightning talk at GopherCon 2017:
https://github.com/gophercon/2017-talks/tree/master/lightningtalks/BryanCMills-AnOverviewOfSyncMap

Change-Id: I12dd0daa608af175d110298780f32c6dc5e1e0a0
Reviewed-on: https://go-review.googlesource.com/50310
Reviewed-by: Bryan Mills <bcmills@google.com>
7 years agodoc: minor fixes to the editor guide
Jaana Burcu Dogan [Fri, 21 Jul 2017 01:16:03 +0000 (18:16 -0700)]
doc: minor fixes to the editor guide

Change-Id: I8f6bcfab27251ef6962306d56e40d306ef85fe60
Reviewed-on: https://go-review.googlesource.com/50472
Reviewed-by: Rob Pike <r@golang.org>
7 years agoruntime: improve out-of-memory message when VirtualAlloc fails
Austin Clements [Tue, 18 Jul 2017 15:14:28 +0000 (11:14 -0400)]
runtime: improve out-of-memory message when VirtualAlloc fails

Fixes #19514.

Change-Id: I93600d5c3d11ecab5a47dd4cd55ed3aea05e221e
Reviewed-on: https://go-review.googlesource.com/49611
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agonet/http: improve signature of Redirect, NewRequest
Dmitri Shuralyov [Wed, 19 Jul 2017 04:41:13 +0000 (00:41 -0400)]
net/http: improve signature of Redirect, NewRequest

In CL https://golang.org/cl/4893043 (6 years ago), a new package named
"url" was created (it is currently known as "net/url"). During that
change, some identifier name collisions were introduced, and two
parameters in net/http were renamed to "urlStr".

Since that time, Go has continued to put high emphasis on the quality
and readability of the documentation. Sometimes, that means making small
sacrifices in the implementation details of a package to ensure that
the godoc reads better, since that's what the majority of users interact
with. See https://golang.org/s/style#named-result-parameters:

> Clarity of docs is always more important than saving a line or two
> in your function.

I think the "urlStr" parameter name is suboptimal for godoc purposes,
and just "url" would be better.

During the review of https://golang.org/cl/4893043, it was also noted
by @rsc that having to rename parameters named "url" was suboptimal:

> It's unfortunate that naming the package url means
> you can't have a parameter or variable named url.

However, at the time, the name of the url package was still being
decided, and uri was an alternative name under consideration.
The reason urlStr was chosen is because it was a lesser evil
compared to naming the url package uri instead:

> Let's not get hung up on URI vs. URL, but I'd like s/uri/urlStr/ even for just
> that the "i" in "uri" looks very similar to the "l" in "url" in many fonts.

> Please let's go with urlStr instead of uri.

Now that we have the Go 1 compatibility guarantee, the name of the
net/url package is fixed. However, it's possible to improve the
signature of Redirect, NewRequest functions in net/http package
for godoc purposes by creating a package global alias to url.Parse,
and renaming urlStr parameter to url in the exported funcs. This CL
does so.

Updates #21077.

Change-Id: Ibcc10e3825863a663e6ad91b6eb47b1862a299a6
Reviewed-on: https://go-review.googlesource.com/49930
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agocmd/go, cmd/link: if -no-pie doesn't work, try -nopie
Ian Lance Taylor [Tue, 18 Jul 2017 20:15:05 +0000 (13:15 -0700)]
cmd/go, cmd/link: if -no-pie doesn't work, try -nopie

GCC says -no-pie, clang says -nopie.

Fixes #21042

Change-Id: Iadc83ea7a48ea0debc5064c1ee8da4ebff752044
Reviewed-on: https://go-review.googlesource.com/49710
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agosync: release m.mu during (*RWMutexMap).Range callbacks in sync_test
Bryan C. Mills [Tue, 9 May 2017 20:12:57 +0000 (16:12 -0400)]
sync: release m.mu during (*RWMutexMap).Range callbacks in sync_test

The mainline sync.Map has allowed mutations within Range callbacks
since https://golang.org/cl/37342. The reference implementations need
to do the same.

This change integrates https://go-review.googlesource.com/c/42956/
from x/sync.

Change-Id: I6b58cf874bb31cd4f6fdb8bfa8278888ed617a5a
Reviewed-on: https://go-review.googlesource.com/42957
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agomisc/cgo/testsanitizers: add regression test for change 50251
Bryan C. Mills [Thu, 20 Jul 2017 17:47:57 +0000 (13:47 -0400)]
misc/cgo/testsanitizers: add regression test for change 50251

http://golang.org/cl/50251 fixed a regression under TSAN.
This change adds a minimal reproducer for the observed symptom.

Change-Id: Ib9ad01b458b7fdec14d6c2fe3c243f9c64b3dcf2
Reviewed-on: https://go-review.googlesource.com/50371
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agocmd/go: fix test when go source tree has POSIX ACL
Jess Frazelle [Thu, 20 Jul 2017 16:29:15 +0000 (12:29 -0400)]
cmd/go: fix test when go source tree has POSIX ACL

Fixes TestGoBuildUmask when the user has a POSIX ACL on the Go source tree.

Fixes #17909.

Change-Id: I5bc19099af8353afd41071258f4f317612b4c8c1
Reviewed-on: https://go-review.googlesource.com/50370
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agoruntime: use SIGKILL if SIGQUIT is blocked; skip tests that need SIGQUIT
Austin Clements [Thu, 20 Jul 2017 15:12:37 +0000 (11:12 -0400)]
runtime: use SIGKILL if SIGQUIT is blocked; skip tests that need SIGQUIT

The runtime tests may be invoked from a parent that has SIGQUIT
blocked. For example, Java invokes subprocesses this way. In this
situation, TestCrashDumpsAllThreads and TestPanicSystemstack will fail
because they depend on SIGQUIT to get tracebacks, and any subprocess
test that times out will fail to kill the subprocess.

Fix this by detecting if SIGQUIT is blocked and, if so, skipping tests
that depend on it and using SIGKILL to kill timed-out subprocesses.

Based on a fix by Carl Henrik Lunde in
https://golang.org/issue/19196#issuecomment-316145733

Fixes #19196.

Change-Id: Ia20bf15b96086487d0ef6b75239dcc260c21714c
Reviewed-on: https://go-review.googlesource.com/50330
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
7 years agoruntime: don't call libc sigaction function in forked child
Ian Lance Taylor [Thu, 20 Jul 2017 06:42:27 +0000 (23:42 -0700)]
runtime: don't call libc sigaction function in forked child

If we are using vfork, and if something (such as TSAN) is intercepting
the sigaction function, then we must call the system call, not the
libc function. Otherwise the intercepted sigaction call in the child
may trash the data structures in the parent.

Change-Id: Id9588bfeaa934f32c920bf829c5839be5cacf243
Reviewed-on: https://go-review.googlesource.com/50251
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
Reviewed-by: Austin Clements <austin@google.com>
7 years agoos: remove duplicate check from windows os.Stat
Johnny Luo [Thu, 20 Jul 2017 07:20:46 +0000 (17:20 +1000)]
os: remove duplicate check from windows os.Stat

Fixes #21075

Change-Id: Idfe5002dfe17943844d9427e27f82ce894b92e80
Reviewed-on: https://go-review.googlesource.com/50270
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

7 years agonet/mail: Fix typo
yansal [Wed, 19 Jul 2017 21:04:36 +0000 (23:04 +0200)]
net/mail: Fix typo

Fixes #21089

Change-Id: Idd65c7185b3e19f33958eb165cb5b09c06db3d56
Reviewed-on: https://go-review.googlesource.com/50110
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agodoc: add an editor guide
Jaana Burcu Dogan [Wed, 14 Jun 2017 19:41:14 +0000 (12:41 -0700)]
doc: add an editor guide

The Go ecosystem provides many tools to make Go
development more productive and seamless. Document
the availability of the editor plugins and IDEs,
add an overview of feature support and screencasts.

Updates #20398.
Updates #20402.
Updates #20399.
Updates #20401.
Updates #20569.

Change-Id: I0c6cb48eb4e3848807aaad78390493e14f097916
Reviewed-on: https://go-review.googlesource.com/45772
Reviewed-by: Steve Francia <spf@golang.org>
7 years agoruntime: only trace mark assists that do work
Austin Clements [Wed, 19 Jul 2017 18:18:08 +0000 (14:18 -0400)]
runtime: only trace mark assists that do work

Currently we trace mark assists even if they're satisfied entirely by
stealing. This means even if background marking is keeping up with
allocation, we'll still emit a trace event every N bytes of
allocation. The event will be a few microseconds, if that, but they're
frequent enough that, when zoomed out in the trace view, it looks like
all of the time is spent in mark assists even if almost none is.

Change this so we only emit a trace event if the assist actually has
to do assisting. This makes the traces of these events far more
useful.

Change-Id: If4aed1c413b814341ef2fba61d2f10751d00451b
Reviewed-on: https://go-review.googlesource.com/50030
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Rick Hudson <rlh@golang.org>
7 years agocmd/compile: fix unaligned loads/stores to global variables on s390x
Michael Munday [Mon, 17 Jul 2017 11:07:28 +0000 (07:07 -0400)]
cmd/compile: fix unaligned loads/stores to global variables on s390x

Load/store-merging and move optimizations can result in unaligned
memory accesses. This is fine so long as the load/store instruction
used does not take a relative offset. In the SSA rules this means we
must not merge (MOVDaddr (SB)) ops into loads/stores unless we can
guarantee the alignment of the target.

Fixes #21048.

Change-Id: I70f13a62a148d5f0a56e704e8f76e36b4a4226d9
Reviewed-on: https://go-review.googlesource.com/49250
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
7 years agonet/http: fix parameter name in comment
Ian Lance Taylor [Tue, 18 Jul 2017 20:29:47 +0000 (13:29 -0700)]
net/http: fix parameter name in comment

Fixes #21077

Change-Id: Ic61d7313907f58ff4027fd2eee1ddb8c1656304d
Reviewed-on: https://go-review.googlesource.com/49712
Reviewed-by: Dmitri Shuralyov <shurcool@gmail.com>
7 years agoruntime: move tSweepTerm capture closer to STW
Austin Clements [Tue, 18 Jul 2017 15:21:15 +0000 (11:21 -0400)]
runtime: move tSweepTerm capture closer to STW

tSweepTerm and pauseStart are supposed to be when STW was triggered,
but right now they're captured a bit before STW. Move these down to
immediately before we trigger STW.

Fixes #19590.

Change-Id: Icd48a5c4d45c9b36187ff986e4f178b5064556c1
Reviewed-on: https://go-review.googlesource.com/49612
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
7 years agoruntime: always use 2MB stacks on 64-bit Windows
Austin Clements [Mon, 17 Jul 2017 18:18:49 +0000 (14:18 -0400)]
runtime: always use 2MB stacks on 64-bit Windows

Currently, Windows stacks are either 128kB or 2MB depending on whether
the binary uses cgo. This is because we assume that Go system stacks
and the small amount of C code invoked by the standard library can
operate within smaller stacks, but general Windows C code assumes
larger stacks.

However, it's easy to call into arbitrary C code using the syscall
package on Windows without ever importing cgo into a binary. Such
binaries need larger system stacks even though they don't use cgo.

Fix this on 64-bit by increasing the system stack size to 2MB always.
This only costs address space, which is free enough on 64-bit to not
worry about. We keep (for now) the existing heuristic on 32-bit, where
address space comes at more of a premium.

Updates #20975.

Change-Id: Iaaaa9a2fcbadc825cddc797aaaea8d34ef8debf2
Reviewed-on: https://go-review.googlesource.com/49331
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
7 years agodatabase/sql: fix wrong method name in description
Alexey Palazhchenko [Tue, 18 Jul 2017 04:18:35 +0000 (07:18 +0300)]
database/sql: fix wrong method name in description

Change-Id: Ie6a88b70d7c45c59995ee2f57fb28f9a3cbb404d
Reviewed-on: https://go-review.googlesource.com/49470
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>