]> Cypherpunks repositories - gostls13.git/log
gostls13.git
4 years ago[dev.link] cmd/compile: make compiler-generated ppc64 TOC symbols static
Than McIntosh [Wed, 8 Jul 2020 22:32:36 +0000 (18:32 -0400)]
[dev.link] cmd/compile: make compiler-generated ppc64 TOC symbols static

Set the AttrStatic flag on compiler-emitted TOC symbols for ppc64; these
symbols don't need to go into the final symbol table in Go binaries.
This fixes a buglet introduced by CL 240539 that was causing failures
on the aix builder.

Change-Id: If8b63bcf6d2791f1ec5a0c371d2d11e806202fd2
Reviewed-on: https://go-review.googlesource.com/c/go/+/241637
Run-TryBot: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years ago[dev.link] cmd/link: skip symtab entries for selected file local symbols
Than McIntosh [Tue, 30 Jun 2020 14:22:13 +0000 (10:22 -0400)]
[dev.link] cmd/link: skip symtab entries for selected file local symbols

Don't emit symbol table entries for compiler-generated file-local
symbols (this category includes .stmp_* temporaries and *.stkobj
symbols). Note that user-written static symbols within assembler
sources will still be added to the symbol table. Apply the same test
when emitting DWARF for global variables.

Change-Id: I4db77a2750a0b575e051dfea895c4742cf6709a6
Reviewed-on: https://go-review.googlesource.com/c/go/+/240539
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years ago[dev.link] cmd/compile: mark stmp and stkobj symbols as static
Than McIntosh [Tue, 30 Jun 2020 11:55:16 +0000 (07:55 -0400)]
[dev.link] cmd/compile: mark stmp and stkobj symbols as static

Mark compiler-generated ".stmp_%d" and "<fn>.stkobj" symbols as
AttrStatic, so as to tell the linker that they do not need to be
inserted into its name lookup tables.

Change-Id: I59ffd11659b2c54c2d0ad41275d05c3f919e3b88
Reviewed-on: https://go-review.googlesource.com/c/go/+/240497
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years ago[dev.link] cmd/link: emit Mach-O relocations in mmap
Cherry Zhang [Mon, 6 Jul 2020 22:44:42 +0000 (18:44 -0400)]
[dev.link] cmd/link: emit Mach-O relocations in mmap

Following CL 240399 and CL 240400, do the same for Mach-O.

Linking cmd/compile with external linking,

name         old time/op    new time/op    delta
Asmb2_GC       32.7ms ± 2%    13.5ms ± 6%   -58.56%  (p=0.008 n=5+5)

name         old alloc/op   new alloc/op   delta
Asmb2_GC       16.5MB ± 0%     6.4MB ± 0%   -61.15%  (p=0.008 n=5+5)

Change-Id: I0fd7019d8713d1940e5fbbce4ee8eebd926451a1
Reviewed-on: https://go-review.googlesource.com/c/go/+/241178
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/link: run more tests in parallel
Cherry Zhang [Mon, 6 Jul 2020 21:49:24 +0000 (17:49 -0400)]
[dev.link] cmd/link: run more tests in parallel

Change-Id: I4062fd89f234b4ca5386b74584e1363c05e82e84
Reviewed-on: https://go-review.googlesource.com/c/go/+/241177
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years ago[dev.link] cmd/link: remove some unneeded code from writeBlock()
Than McIntosh [Mon, 6 Jul 2020 13:38:17 +0000 (09:38 -0400)]
[dev.link] cmd/link: remove some unneeded code from writeBlock()

The loader writeBlock() function has code that tries to skip the
initial portion of the input symbols list depending on the address of
the section being written-- this code is dead (skipping is never
triggered) due to similar skipping in the callers; remove this
preamble.

Change-Id: I9769694a3194faf73ebebbbc10ceba4928c3087c
Reviewed-on: https://go-review.googlesource.com/c/go/+/241067
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: better naming for Loader container/subsym methods, part 2 of 2
Than McIntosh [Wed, 1 Jul 2020 12:45:16 +0000 (08:45 -0400)]
[dev.link] cmd/link: better naming for Loader container/subsym methods, part 2 of 2

Introduce a new loader method "SetCarrierSym", to be used when
establishing container/containee symbol relationships for symbol
bucketing in the symtab phase.

This new method is intended to be employed in situations where you
have a series of related symbols will be represented by a single
carrier symbol as a combined entity. The pattern here is that the
sub-symbols contain content but will be anonymous from a symbol table
perspective; the carrier symbol has no content itself but will appear
in the symbol table. Examples of carrier symbols that follow this
model are "runtime.itablink" and "runtime.typelink".

Change-Id: I1a3391a71062c7c740cb108b3fa210b7f69b81ed
Reviewed-on: https://go-review.googlesource.com/c/go/+/240509
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: better naming for Loader container/subsym methods, part 1 of 2
Than McIntosh [Tue, 30 Jun 2020 15:30:28 +0000 (11:30 -0400)]
[dev.link] cmd/link: better naming for Loader container/subsym methods, part 1 of 2

Introduce a new loader method "AddInteriorSym" to be used when
establishing container/containee symbol relationships for host object
sub-symbols and GOT/dynamic sub-symbols.

Interior symbols are employed in situations where you have a
"container" or "payload" symbol that has content, and then a series of
"interior" sub-symbols that point into a portion of the container
symbol's content. Each interior symbol will typically have a useful
name / size / value, but no content of its own. From a symbol table
perspective the container symbol is anonymous, but the interior
symbols are added to the output symbol table.

Change-Id: I919ed5dbbfe2ef2c9a76214f7ea9b384a1be6297
Reviewed-on: https://go-review.googlesource.com/c/go/+/240508
Reviewed-by: Austin Clements <austin@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: write ELF relocations in mmap on all architectures
Cherry Zhang [Sat, 4 Jul 2020 22:14:08 +0000 (18:14 -0400)]
[dev.link] cmd/link: write ELF relocations in mmap on all architectures

In CL 240399 we changed to precompute the size for ELF relocation
records and use mmap to write them, but we left architectures
where elfreloc1 write non-fixed number of bytes. This CL handles
those architectures. When a Go relocation will turn into multiple
ELF relocations, in relocsym we account this difference and add
it to the size calculation. So when emitting ELF relocations, we
know the number of ELF relocations to be emitted.

Change-Id: I6732ab674b442f4618405e5412a77f6e4a3315d7
Reviewed-on: https://go-review.googlesource.com/c/go/+/241079
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: parallelize ELF relocation writing
Cherry Zhang [Fri, 26 Jun 2020 23:17:33 +0000 (19:17 -0400)]
[dev.link] cmd/link: parallelize ELF relocation writing

Now that we write ELF relocation records in mapped memory with
known sizes and offsets, we can write them in parallel.

Further speed up Asmb2 pass. Linking cmd/compile with external
linking,

Asmb2        141ms ± 4%      97ms ± 5%  -30.98%  (p=0.000 n=10+9)

Change-Id: I52c2b9230e90ed4421c21d7ef13a4f1e996f6054
Reviewed-on: https://go-review.googlesource.com/c/go/+/240400
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/link: emit ELF relocations in mmap
Cherry Zhang [Fri, 26 Jun 2020 20:35:49 +0000 (16:35 -0400)]
[dev.link] cmd/link: emit ELF relocations in mmap

Currently, ELF relocations are generated sequentially in the heap
and flushed to output file periodically. In fact, in some cases,
the output size of the relocation records can be easily computed,
as a relocation entry has fixed size. We only need to count the
number of relocation records to compute the size.

Once the size is computed, we can mmap the output with the proper
size, and directly write relocation records in the mapped memory.
It also opens the possibility of writing relocations in parallel
(not done in this CL).

Note: on some architectures, a Go relocation may turn into
multiple ELF relocations, which makes size calculation harder.
This CL does not handle those cases, and it still writes
sequentially in the heap there.

Linking cmd/compile with external linking,

name          old time/op    new time/op    delta
Asmb2            190ms ± 2%     141ms ± 4%  -25.74%  (p=0.000 n=10+10)

name          old alloc/op   new alloc/op   delta
Asmb2_GC        66.8MB ± 0%     8.2MB ± 0%  -87.79%  (p=0.008 n=5+5)

name          old live-B     new live-B     delta
Asmb2_GC         66.9M ± 0%     55.2M ± 0%  -17.58%  (p=0.008 n=5+5)

Change-Id: If7056bbe909dc90033eef6b9c4891fcca310602c
Reviewed-on: https://go-review.googlesource.com/c/go/+/240399
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/link: stop Seek file in munmap
Cherry Zhang [Fri, 26 Jun 2020 23:54:00 +0000 (19:54 -0400)]
[dev.link] cmd/link: stop Seek file in munmap

If mmap is used, we don't do file I/O anymore, so no need to Seek
in the file either.

Change-Id: Ic8350eb66404398420df18560f6a7acbb3fcf7e3
Reviewed-on: https://go-review.googlesource.com/c/go/+/240398
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/link: read symbol type only when necessary in elfreloc1
Cherry Zhang [Fri, 26 Jun 2020 18:06:41 +0000 (14:06 -0400)]
[dev.link] cmd/link: read symbol type only when necessary in elfreloc1

Slightly speeds up Asmb2.

Linking cmd/compile with external linking:
Asmb2         190ms ± 2%     182ms ± 2%  -4.14%  (p=0.000 n=10+9)

Change-Id: I55511d0e7b0511b60f8d02390076f8566bc7d135
Reviewed-on: https://go-review.googlesource.com/c/go/+/240397
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] all: merge branch 'master' into dev.link
Cherry Zhang [Fri, 26 Jun 2020 18:25:33 +0000 (14:25 -0400)]
[dev.link] all: merge branch 'master' into dev.link

Clean merge.

Change-Id: I2ae0e4cc67e24216c85619717657dce36e887a54

4 years agodoc/go1.14: crypto/tls.Config.NameToCertificate is deprecated
Ian Lance Taylor [Thu, 25 Jun 2020 23:39:56 +0000 (16:39 -0700)]
doc/go1.14: crypto/tls.Config.NameToCertificate is deprecated

Also crypto/tls.Config.BuildNameToCertificate.

Note that this field and method were deprecated in the Go 1.14 release,
so this change is to the 1.14 release notes.

Fixes #37626

Change-Id: If8549bc746f42a93f1903439e1b464b3e81e2c19
Reviewed-on: https://go-review.googlesource.com/c/go/+/240005
Reviewed-by: Filippo Valsorda <filippo@golang.org>
4 years agoruntime: don't preempt if preemption is disabled
Cherry Zhang [Fri, 26 Jun 2020 15:57:08 +0000 (11:57 -0400)]
runtime: don't preempt if preemption is disabled

If asyncpreemptoff is set, don't preempt upon receiving a SIGURG.

Fixes #38531.

Change-Id: I6d9a828b45c199d3e479cbdfe17a896a40d540f9
Reviewed-on: https://go-review.googlesource.com/c/go/+/240121
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years agodoc/go1.15: fix bad link to crypto/tls
Alberto Donizetti [Fri, 26 Jun 2020 16:24:15 +0000 (18:24 +0200)]
doc/go1.15: fix bad link to crypto/tls

Change-Id: Ie81579cbb1873349a91280f5aebe59624fcb1ef8
Reviewed-on: https://go-review.googlesource.com/c/go/+/240157
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
4 years ago[dev.link] cmd/link: remove special dynlinkingGo case in pclntab pass
Cherry Zhang [Fri, 26 Jun 2020 02:38:14 +0000 (22:38 -0400)]
[dev.link] cmd/link: remove special dynlinkingGo case in pclntab pass

Now that we removed the "weird thing" about runtime.etext symbol,
we can remove this special case.

Change-Id: I2e4558367758d37e898a802bcd30671c7dd6fe89
Reviewed-on: https://go-review.googlesource.com/c/go/+/240066
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: handle runtime.text/etext symbols more consistently
Cherry Zhang [Fri, 26 Jun 2020 02:22:59 +0000 (22:22 -0400)]
[dev.link] cmd/link: handle runtime.text/etext symbols more consistently

Currently, on most platforms, the start/end symbols runtime.text
and runtime.etext are defined in symtab pass and assigned values
in address pass. In some cases (darwin+dynlink or AIX+external),
however, they are defined and assigned values in textaddress pass
(because they need non-zero sizes). Then their values get
overwritten in address pass. This is bad. The linker expects
their values to be consistent. In particular, in CL 239281,
findfunctab is split to two parts. The two parts need to have a
consistent view of the start/end symbols. If its value changes in
between, bad things can happen.

This CL fixes it by always defining runtime.text/etext symbols in
the textaddress pass.

Fix darwin and AIX builds.

Change-Id: Ifdc1bcb69d99be1b7e5b4fd31d473650c03e3b9d
Reviewed-on: https://go-review.googlesource.com/c/go/+/240065
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: move findfunctab to a generated symbol
Jeremy Faller [Mon, 22 Jun 2020 15:11:12 +0000 (11:11 -0400)]
[dev.link] cmd/link: move findfunctab to a generated symbol

Basically removes all allocation from findfunctab:

Findfunctab_GC                172kB ± 0%       0kB ± 0%   ~     (p=1.000 n=1+1)

Change-Id: I246f7d2751317886b658f7ef672fb30b3c519668
Reviewed-on: https://go-review.googlesource.com/c/go/+/239281
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/link: add generator symbols
Jeremy Faller [Fri, 19 Jun 2020 19:35:28 +0000 (15:35 -0400)]
[dev.link] cmd/link: add generator symbols

Create a new class of symbols internal to the linker. These symbols live
in the Loader, and are real smybols, but have no data, only size. After
symbols are allocated in the binary in asmb() a function is called that
is responsible for filling in the data.

This allows the linker to create large symbols, but not pay the price on
the heap memory.

Change-Id: Ib4291fc6e578478057ed2ec163d7b27426f1d5ff
Reviewed-on: https://go-review.googlesource.com/c/go/+/239280
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years agocrypto/x509: move and update the SSL_CERT_FILE and SSL_CERT_DIR docs
Filippo Valsorda [Wed, 24 Jun 2020 20:49:05 +0000 (16:49 -0400)]
crypto/x509: move and update the SSL_CERT_FILE and SSL_CERT_DIR docs

Fixes #37907

Change-Id: Ia077de6dcc74ed761d278eab4efbf45e151429b8
Reviewed-on: https://go-review.googlesource.com/c/go/+/239747
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
4 years agocmd/compile: remove check that Zero's arg has the correct base type
Keith Randall [Thu, 25 Jun 2020 03:59:18 +0000 (20:59 -0700)]
cmd/compile: remove check that Zero's arg has the correct base type

It doesn't have to. The type in the aux field is authoritative.
There are cases involving casting from interface{} where pointers
have a placeholder pointer type (because the type is not known when
the IData op is generated).

The check was introduced in CL 13447.

Fixes #39459

Change-Id: Id77a57577806a271aeebd20bea5d92d08ee7aa6b
Reviewed-on: https://go-review.googlesource.com/c/go/+/239817
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
4 years agoos: return *PathError error in File.Sync on Plan 9
Fazlul Shahriar [Thu, 25 Jun 2020 05:15:42 +0000 (01:15 -0400)]
os: return *PathError error in File.Sync on Plan 9

File.Sync was returning *SyscallError instead of *PathError on Plan 9.
Adjust the error type to match other systems.

Fixes #39800

Change-Id: I844e716eb61c193ef78d29cb0b4a3ef790bb3320
Reviewed-on: https://go-review.googlesource.com/c/go/+/239857
Reviewed-by: David du Colombier <0intro@gmail.com>
4 years ago[dev.link] cmd/internal: convert basic types to builtin symbols
Than McIntosh [Wed, 17 Jun 2020 15:42:47 +0000 (11:42 -0400)]
[dev.link] cmd/internal: convert basic types to builtin symbols

The Go compiler includes special treatment for a small set of very
commonly used type symbols (26 to be exact); for these types it
doesn't bother to emit type descriptors for "normal" compilations, and
instead only generates them for the runtime package, so as to reduce
object file bloat.

This patch moves the set of type symbols in question from the
PkgIdxNone index space (in the object file) to the PkgIdxBuiltin
space, which saves some work in the compiler and loader (reduces each
package's index space slightly).

Change-Id: I039c805e05c1aef26f035e52760fd0a0af40f7a5
Reviewed-on: https://go-review.googlesource.com/c/go/+/239658
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>
4 years ago[dev.link] cmd/internal/obj: don't write builtin names in obj writer
Than McIntosh [Wed, 17 Jun 2020 14:41:56 +0000 (10:41 -0400)]
[dev.link] cmd/internal/obj: don't write builtin names in obj writer

Change the object file writer to avoid adding entries to the object
file string table for builtin functions. This helps save some very
small amount of space in the object file.

Change-Id: Ic3b94a154e00eb4c7378b57613580c7073b841bc
Reviewed-on: https://go-review.googlesource.com/c/go/+/239657
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years agodoc/go1.15: mention consequence of os.File.ReadFrom
Ian Lance Taylor [Fri, 19 Jun 2020 05:43:36 +0000 (22:43 -0700)]
doc/go1.15: mention consequence of os.File.ReadFrom

Now that we've added a os.File.ReadFrom method, io.CopyBuffer to a
os.File will no longer use the provided buffer.

For #16474
For #36817
For #37419

Change-Id: I79a3bf778ff93eab88e88dd9ecbb8c7ea101e868
Reviewed-on: https://go-review.googlesource.com/c/go/+/238864
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agodoc/faq: fix a grammar mistake
Kerollos Magdy [Tue, 23 Jun 2020 10:45:36 +0000 (10:45 +0000)]
doc/faq: fix a grammar mistake

Change-Id: Ifa060f5f91d7b964eb180465245104411310d423
GitHub-Last-Rev: cd1862f2ca721a4f3d4ede7bcb3e7759ce96c6d5
GitHub-Pull-Request: golang/go#39780
Reviewed-on: https://go-review.googlesource.com/c/go/+/239388
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agonet: consistently document deadline handling
Ian Lance Taylor [Wed, 24 Jun 2020 21:47:41 +0000 (14:47 -0700)]
net: consistently document deadline handling

After CL 228645 some mentions of the Deadline methods referred
to the Timeout method, and some to os.ErrDeadlineExceeded.
Stop referring to the Timeout method, to encourage ErrDeadlineExceeded.

For #31449

Change-Id: I27b8ff34f31798f38b06437546886af8cce98ca4
Reviewed-on: https://go-review.googlesource.com/c/go/+/239705
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years agocrypto/tls: replace VerifyPeerCertificate example with VerifyConnection
Filippo Valsorda [Tue, 23 Jun 2020 21:19:01 +0000 (17:19 -0400)]
crypto/tls: replace VerifyPeerCertificate example with VerifyConnection

Look at how much better it is!

Updates #36736

Change-Id: I53a314a103a42dd869c05823fa50f37d70f9d283
Reviewed-on: https://go-review.googlesource.com/c/go/+/239560
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
4 years agocrypto/tls: expand the ConnectionState docs
Filippo Valsorda [Wed, 24 Jun 2020 18:27:32 +0000 (14:27 -0400)]
crypto/tls: expand the ConnectionState docs

Fixes #37572

Change-Id: I493392f535a979ee16609861041da2ecfe21cf77
Reviewed-on: https://go-review.googlesource.com/c/go/+/239744
Run-TryBot: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
4 years agocrypto/tls: fix DialContext docs
Filippo Valsorda [Wed, 24 Jun 2020 18:29:20 +0000 (14:29 -0400)]
crypto/tls: fix DialContext docs

Change-Id: I58e3febbf63049bebb4f8ed8893288183c8aaccd
Reviewed-on: https://go-review.googlesource.com/c/go/+/239745
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
4 years agocrypto/x509: restore support for ios tag on darwin/amd64
Filippo Valsorda [Wed, 24 Jun 2020 16:59:10 +0000 (12:59 -0400)]
crypto/x509: restore support for ios tag on darwin/amd64

Fixes #38710

Change-Id: I9b210e95fd997ff53ec704c5f61110045aaa94bb
Reviewed-on: https://go-review.googlesource.com/c/go/+/239559
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agocrypto/x509: update bundled iOS roots and rewrite generator
Filippo Valsorda [Tue, 23 Jun 2020 19:04:46 +0000 (15:04 -0400)]
crypto/x509: update bundled iOS roots and rewrite generator

Switched the generator to using the open source releases of the root
store rather than HTML parsing, while trying to emulate the sorting
algorithm of the table to reduce churn.

Updates #38843

Change-Id: I78608d245eabc2a35c2f98635ed5f1a531ad2ba8
Reviewed-on: https://go-review.googlesource.com/c/go/+/239557
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agocrypto/elliptic: document and test that IsOnCurve(∞) == false
Filippo Valsorda [Tue, 23 Jun 2020 22:14:25 +0000 (18:14 -0400)]
crypto/elliptic: document and test that IsOnCurve(∞) == false

This also implies it can't be passed to Marshal.

Fixes #37294

Change-Id: I1e6b6abd87ff31f323486958d5cb34a5c8f76b5f
Reviewed-on: https://go-review.googlesource.com/c/go/+/239562
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Katie Hockman <katie@golang.org>
4 years ago[dev.link] cmd/link: fix data race on AIX
Cherry Zhang [Tue, 23 Jun 2020 21:29:17 +0000 (17:29 -0400)]
[dev.link] cmd/link: fix data race on AIX

On AIX, in relocsym we call Xcoffadddynrel, which adds a
relocation record to a global array. relocsym already runs in
parallel. In the past we only parallelize over segments, and
we call Xcoffadddynrel only for symbols in data segment, so it is
effectively called sequentially. In CL 239197 we started to do
more fine-grained parallelism, so we need to make sure it is safe
to call Xcoffadddynrel in parallel.

Fix AIX build.

Change-Id: I3128193995a5a99d9fa04c8e728e590f17298da3
Reviewed-on: https://go-review.googlesource.com/c/go/+/239561
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/{compile,link}: fix file/line of last instruction in DWARF line table
Than McIntosh [Mon, 22 Jun 2020 17:26:15 +0000 (13:26 -0400)]
[dev.link] cmd/{compile,link}: fix file/line of last instruction in DWARF line table

The code in the compiler's DWARF line table generation emits line
table ops at the end of each function fragment to reset the state
machine registers back to an initial state, so that when the line
table fragments for each function are stitched together into a
compilation unit, each fragment will have a clean starting point. The
set-file/set-line ops emitted in this code were being applied to the
last row of the line table, however, meaning that they were
overwriting the existing values.

To avoid this problem, add code to advance the PC past the end of the
last instruction in the function, and switch to just using an
end-of-sequence operator at the end of each function instead of
explicit set-file/set-line ops.

Updates #39757.

Change-Id: Ieb30f83444fa86fb1f2cd53862d8cc8972bb8763
Reviewed-on: https://go-review.googlesource.com/c/go/+/239286
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: David Chase <drchase@google.com>
4 years agocmd/link: skip zero values in fingerprint check
Cherry Zhang [Tue, 23 Jun 2020 16:02:54 +0000 (12:02 -0400)]
cmd/link: skip zero values in fingerprint check

Normally, packages are loaded in dependency order, and if a
Library object is not nil, it is already loaded with the actual
fingerprint. In shared build mode, however, packages may be added
not in dependency order (e.g. go install -buildmode=shared std
adds all std packages before loading them), and it is possible
that a Library's fingerprint is not yet loaded. Skip the check
in this case (when the fingerprint is the zero value).

Fixes #39777.

Change-Id: I66208e92bf687c8778963ba8e33e9bd948f82f3a
Reviewed-on: https://go-review.googlesource.com/c/go/+/239517
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/link: rescope Datblk to datblk
Jeremy Faller [Fri, 19 Jun 2020 19:19:59 +0000 (15:19 -0400)]
[dev.link] cmd/link: rescope Datblk to datblk

Change should be non-functional.

Change-Id: I8ac835762a1aa6458d896b8815cd2d87333b55ab
Reviewed-on: https://go-review.googlesource.com/c/go/+/239279
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years agonet/http: document Dir behavior with symlinks
Katie Hockman [Thu, 18 Jun 2020 15:26:07 +0000 (11:26 -0400)]
net/http: document Dir behavior with symlinks

Based on CL 229377.

Change-Id: I016eec20672c909e8fabe799c277f4d2540fc555
Reviewed-on: https://go-review.googlesource.com/c/go/+/238698
Run-TryBot: Katie Hockman <katie@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
4 years ago[dev.link] cmd/link: apply relocations while writing symbols
Cherry Zhang [Sat, 20 Jun 2020 18:38:38 +0000 (14:38 -0400)]
[dev.link] cmd/link: apply relocations while writing symbols

We can apply relocations of a symbol right after the symbol data
is copied to output buffer. This should help locality and
parallelism (parallelizing over blocks, instead of over segments).

Linking cmd/compile,
Asmb+Reloc     23.9ms ±18%    16.5ms ±11%   -30.73%  (p=0.008 n=5+5)

Linking cmd/compile with external linking,
Asmb+Reloc     74.0ms ± 3%    33.8ms ± 8%   -54.32%  (p=0.008 n=5+5)

In external linking mode, allocation goes up slightly, as we do
smaller batching now. It doesn't seem too bad.
Asmb+Reloc     15.0MB ± 0%    16.7MB ± 0%   +11.22%  (p=0.008 n=5+5)

Change-Id: Ide33d9ff86c39124c8f5cfc050d7badc753a1ced
Reviewed-on: https://go-review.googlesource.com/c/go/+/239197
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
4 years agotext/template: fix lint typo in VariableNode doc
Macks [Tue, 23 Jun 2020 00:09:26 +0000 (00:09 +0000)]
text/template: fix lint typo in VariableNode doc

Change-Id: I68b8c782478aa3e7adbd36a2de1c20b04e8c395b
GitHub-Last-Rev: 50f27197837e57e1d68b8905eaa66ea142bd45fc
GitHub-Pull-Request: golang/go#39622
Reviewed-on: https://go-review.googlesource.com/c/go/+/239383
Reviewed-by: Rob Pike <r@golang.org>
4 years agoruntime: fix comment about memequal implementation locations
Cholerae Hu [Tue, 9 Jun 2020 05:53:39 +0000 (13:53 +0800)]
runtime: fix comment about memequal implementation locations

Change-Id: I9ae3f462a6a6b3809de14b0d08f369524b636d57
Reviewed-on: https://go-review.googlesource.com/c/go/+/237097
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
4 years agosyscall: check secondary group membership for Faccessat(..., AT_EACCESS) on Linux
Tobias Klauser [Fri, 19 Jun 2020 08:41:44 +0000 (10:41 +0200)]
syscall: check secondary group membership for Faccessat(..., AT_EACCESS) on Linux

Follow glibc's implementation and check secondary group memberships
using Getgroups.

No test since we cannot easily change file permissions when not running
as root and the test is meaningless if running as root.

Same as CL 238722 did for x/sys/unix

Updates #39660

Change-Id: I6af50e27b255e33405558947a0ab3dfbc33b2d50
Reviewed-on: https://go-review.googlesource.com/c/go/+/238937
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years ago[dev.link] all: merge branch 'master' into dev.link
Cherry Zhang [Fri, 19 Jun 2020 20:14:40 +0000 (16:14 -0400)]
[dev.link] all: merge branch 'master' into dev.link

NOT apply CL 238779, which is for sym.Symbols.

Clean merge other than that.

Change-Id: I535e9580fcf7d6f382bd684c3d53f11f90d0b6ed

4 years agocmd/link: use sym.Symbol in addpersrc
Cherry Zhang [Thu, 18 Jun 2020 22:05:10 +0000 (18:05 -0400)]
cmd/link: use sym.Symbol in addpersrc

addpersrc is called very late, after we have converted to
sym.Symbols and various fields in loader representation have been
dropped. Use the Symbol representation there.

Fixes #39658.

Change-Id: I616e838655b6f01554644171317e2cc5cefabf39
Reviewed-on: https://go-review.googlesource.com/c/go/+/238779
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years agocmd/dist: don't copy arm64 specific files for bootstap build
fanzha02 [Fri, 19 Jun 2020 03:19:22 +0000 (11:19 +0800)]
cmd/dist: don't copy arm64 specific files for bootstap build

This patch avoids copying cmd/compile/internal/ssa/flags_arm64_test.s.

Fixes #39701

Change-Id: I35d0567e2d3455faf28828c55a0b6d66a5be49e2
Reviewed-on: https://go-review.googlesource.com/c/go/+/238679
Run-TryBot: fannie zhang <Fannie.Zhang@arm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
4 years agoruntime/trace: fix file name in example
Rodolfo Carvalho [Fri, 19 Jun 2020 15:31:25 +0000 (15:31 +0000)]
runtime/trace: fix file name in example

The preceding paragraph suggests the test run will produce a file called trace.out.
The same name, trace.out, is used in the output from go help testflag, thus we change the go test line instead of changing the preceding paragraph.

Change-Id: Ib1fa7e49e540853e263a2399b16040ea6f41b703
GitHub-Last-Rev: 3535e62bf8dd02dd9955a28e7fa9cca98de89efd
GitHub-Pull-Request: golang/go#39709
Reviewed-on: https://go-review.googlesource.com/c/go/+/238997
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
4 years agoruntime, syscall: use local cache for Setenv/Getenv in Plan 9
Richard Miller [Mon, 25 May 2020 09:30:23 +0000 (10:30 +0100)]
runtime, syscall: use local cache for Setenv/Getenv in Plan 9

In os.Getenv and os.Setenv, instead of directly reading and writing the
Plan 9 environment device (which may be shared with other processes),
use a local copy of environment variables cached at the start of
execution. This gives the same semantics for Getenv and Setenv as on
other operating systems which don't share the environment, making it
more likely that Go programs (for example the build tests) will be
portable to Plan 9.

This doesn't preclude writing non-portable Plan 9 Go programs which make
use of the shared environment semantics (for example to have a command
which exports variable definitions to the parent shell). To do this, use
  ioutil.ReadFile("/env/"+key) and
  ioutil.WriteFile("/env/"+key, value, 0666)
in place of os.Getenv(key) and os.Setenv(key, value) respectively.

Note that CL 5599054 previously added env cacheing, citing efficiency
as the reason. However it made the cache write-through, with Setenv
changing the shared environment as well as the cache (so not consistent
with Posix semantics), and Clearenv breaking the sharing of the
environment between the calling thread and other threads (leading to
unpredictable behaviour). Because of these inconsistencies (#8849),
CL 158970045 removed the cacheing again.

This CL restores cacheing but without write-through. The local cache is
initialised at start of execution, manipulated by the standard functions
in syscall/env_unix.go to ensure the same semantics, and exported only
when exec'ing a new program.

Fixes #34971
Fixes #25234
Fixes #19388
Updates #38772

Change-Id: I2dd15516d27414afaf99ea382f0e00be37a570c3
Reviewed-on: https://go-review.googlesource.com/c/go/+/236520
Run-TryBot: David du Colombier <0intro@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Fazlul Shahriar <fshahriar@gmail.com>
Reviewed-by: David du Colombier <0intro@gmail.com>
4 years agoreflect: zero stack slots before writing to them with write barriers
Keith Randall [Thu, 18 Jun 2020 19:51:35 +0000 (12:51 -0700)]
reflect: zero stack slots before writing to them with write barriers

reflect.assignTo writes to the target using write barriers. Make sure
that the memory it is writing to is zeroed, so the write barrier does
not read pointers from uninitialized memory.

Fixes #39541

Change-Id: Ia64b2cacc193bffd0c1396bbce1dfb8182d4905b
Reviewed-on: https://go-review.googlesource.com/c/go/+/238760
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agocmd/compile: redo flag constant ops for arm64
Keith Randall [Tue, 16 Jun 2020 05:52:56 +0000 (22:52 -0700)]
cmd/compile: redo flag constant ops for arm64

Fixes the *noov opcodes so they handle a constant argument properly.

Most of the infrastructure for this CL is in CL 238077 (the arm32 one).

Fixes #39505

Change-Id: Id424a4e18964b848f05aa42f4d78e5f2e2cdf43b
Reviewed-on: https://go-review.googlesource.com/c/go/+/237999
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years agocmd/compile: redo flag constant ops for arm
Keith Randall [Mon, 15 Jun 2020 21:43:02 +0000 (14:43 -0700)]
cmd/compile: redo flag constant ops for arm

Encode the flag results in an auxint field instead of having
one opcode per flag state. This helps us handle the new *noov
branches in a unified manner.

This is only for arm, arm64 is in a subsequent CL.

We could extend to other architectures as well, athough it would
only be cleanup, no behavioral change.

Update #39505

Change-Id: Ia46cea596faad540d1496c5915ab1274571543f0
Reviewed-on: https://go-review.googlesource.com/c/go/+/238077
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years agocmd/compile: mark s390x int <-> float conversions as clobbering flags
Michael Munday [Thu, 18 Jun 2020 12:25:07 +0000 (05:25 -0700)]
cmd/compile: mark s390x int <-> float conversions as clobbering flags

These conversion instructions set the condition code and so should
be marked as clobbering flags.

Fixes #39651.

Change-Id: I91cc9687ea70ef0551bb3139c1875071c349d43e
Reviewed-on: https://go-review.googlesource.com/c/go/+/238628
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years agocmd/internal/obj/ppc64: update doc
Lynn Boger [Tue, 16 Jun 2020 17:40:03 +0000 (13:40 -0400)]
cmd/internal/obj/ppc64: update doc

This updates the ppc64 asm doc file, including information on
updates to the objdump, correcting information on operand order,
and adding some information on shifts.

Change-Id: Ib8ed53eac86c2121ea5b657c361ad92aae31cb32
Reviewed-on: https://go-review.googlesource.com/c/go/+/238237
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
4 years agoreflect: handling flagIndir in DeepEqual potential cycles
Ian Lance Taylor [Wed, 17 Jun 2020 04:57:43 +0000 (21:57 -0700)]
reflect: handling flagIndir in DeepEqual potential cycles

Fixes #39607

Change-Id: Ia7e597e0da8a193a25382cc633a1c6080b4f7cbf
Reviewed-on: https://go-review.googlesource.com/c/go/+/238361
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
4 years agodoc/go1.15: document new bufio.ErrBadReadCount
Ian Lance Taylor [Fri, 12 Jun 2020 22:40:56 +0000 (15:40 -0700)]
doc/go1.15: document new bufio.ErrBadReadCount

For #37419
For #38053

Change-Id: I206f360ff4957bc7edc3c35dfc814b7bd5ec440c
Reviewed-on: https://go-review.googlesource.com/c/go/+/237739
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agonet/rpc: clarify documention of Call.Done field
Ian Lance Taylor [Mon, 15 Jun 2020 22:02:54 +0000 (15:02 -0700)]
net/rpc: clarify documention of Call.Done field

Fixes #36116

Change-Id: I93909f2addee9a9435ad658e8b40eef966ce53fe
Reviewed-on: https://go-review.googlesource.com/c/go/+/238078
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
4 years agoregexp/syntax: append patchLists in constant time
Andy Balholm [Mon, 15 Jun 2020 22:54:49 +0000 (15:54 -0700)]
regexp/syntax: append patchLists in constant time

By keeping a tail pointer, we can append to a patchList in constant
time, rather than in time proportional to the length of the list. This
gets rid of the quadratic compile times we were seeing for long series
of alternations.

This is basically the same change as
https://github.com/google/re2/commit/e9d517989f66f2e0a24cde42f4d2424dd3e4a9b9.

Fixes #39542.

Change-Id: Ib4ca0ca9c55abd1594df1984653c7d311ccf7572
Reviewed-on: https://go-review.googlesource.com/c/go/+/238079
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agonet/http: make Transport.RoundTrip preserve Requests
Damien Neil [Thu, 11 Jun 2020 20:30:23 +0000 (13:30 -0700)]
net/http: make Transport.RoundTrip preserve Requests

Ensure that the exact Request passed to Transport.RoundTrip
is returned in the Response. Do not replace the Request with
a copy when resetting the request body.

Fixes #39533

Change-Id: Ie6fb080c24b0f6625b0761b7aa542af3d2411817
Reviewed-on: https://go-review.googlesource.com/c/go/+/237560
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
4 years agocmd/compile: mark block control instruction unsafe in "all unsafe" functions
Cherry Zhang [Thu, 4 Jun 2020 19:41:45 +0000 (15:41 -0400)]
cmd/compile: mark block control instruction unsafe in "all unsafe" functions

Currently, for runtime functions and nosplit functions, it is
considered "all unsafe", meaning that the entire function body is
unsafe points. In the past, we didn't mark CALLs in such
functions unsafe, which is fixed in CL 230541. We also didn't
mark block control instructions (for mostly-empty blocks) unsafe.
This CL fixes it.

May fix #36110.

Change-Id: I3be8fdcef2b294e5367b31eb1c1b5e79966565fa
Reviewed-on: https://go-review.googlesource.com/c/go/+/236597
Reviewed-by: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years agobufio: test for exact error value in TestNegativeEOFReader and TestLargeReader
Dmitri Shuralyov [Tue, 16 Jun 2020 17:08:47 +0000 (13:08 -0400)]
bufio: test for exact error value in TestNegativeEOFReader and TestLargeReader

CL 225357 added tests for Scanner not panicking on bad readers.
CL 225557 created a named error value that is returned instead.
CL 237739 documents that the bufio.ErrBadReadCount is returned
when bufio.Scanner is used with an invalid io.Reader.

This suggests we wouldn't want that behavior to be able to change
without a test noticing it, so modify the tests to check for the
exact error value instead of just any non-nil one.

For #38053.

Change-Id: I4b0b8eb6804ebfe2c768505ddb94f0b1017fcf8b
Reviewed-on: https://go-review.googlesource.com/c/go/+/238217
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years ago[dev.link] cmd/link: parallelize second-stage DWARF generation
Than McIntosh [Fri, 12 Jun 2020 13:04:28 +0000 (09:04 -0400)]
[dev.link] cmd/link: parallelize second-stage DWARF generation

This patch introduces parallelization of DWARF generation on a per
compilation unit basis. Each compilation unit now operates on a
separate set of symbols, so it's safe to send each compilation unit to
a goroutine to be processed in parallel.

Doing this requires some restructing to ensure that any new symbols
needed are created up front, since we can't create any new syms during
the parallel portion. Similarly, the parallel portion can't set any
symbol attributes, so the check that verifies we haven't doubly listed
any DIE syms had to be reworked, and setting of reachability has to be
delayed until after the parallel phase is complete.

Change-Id: I3042b76e9b597bb1a6a44dce19efba2d02bed76b
Reviewed-on: https://go-review.googlesource.com/c/go/+/237679
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: remove implicit reachability setting from SymbolBuilder
Than McIntosh [Fri, 12 Jun 2020 13:35:42 +0000 (09:35 -0400)]
[dev.link] cmd/link: remove implicit reachability setting from SymbolBuilder

The loader's SymbolBuilder Add*/Set* methods include a call to mark
the underlying symbol as reachable (as a convenience, so that callers
would not have to set it explicitly). This code was carried over from
the corresponding sym.Symbol methods; back in the sym.Symbol world
unreachable symbols were never removed from the AllSyms slice, hence
setting and checking reachability was a good deal more important.

With the advent of the loader and the new deadcode implementation,
there is less of a need for this sort of fallback, and in addition the
implicit attr setting introduces data races in the the loader if there
are SymbolBuilder Add*/Set* method calls in parallel threads, as well
as adding overhead to the methods.

This patch gets rid of the implicit reachability setting, and instead
marks reachability in CreateSymForUpdate, as well as adding a few
explicit SetAttrReachable calls where needed.

Change-Id: I029a0c5a4a24237826a7831f9cbe5180d44cbc40
Reviewed-on: https://go-review.googlesource.com/c/go/+/237678
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: refactor dwarf gen methods to be comp-unit centric
Than McIntosh [Thu, 11 Jun 2020 18:48:08 +0000 (14:48 -0400)]
[dev.link] cmd/link: refactor dwarf gen methods to be comp-unit centric

Refactor some of the linker's DWARF generation methods so as to have
helper routines that do all the work for a given comp unit for a given
section (range, loc, etc). No change in functionality, this is just a
reorg in preparation for a later patch in this sequence.

Change-Id: I86fc789220326a4e522904a5924c8971d6757189
Reviewed-on: https://go-review.googlesource.com/c/go/+/237677
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: rework line table generation to reduce heap mem
Than McIntosh [Wed, 10 Jun 2020 17:14:15 +0000 (13:14 -0400)]
[dev.link] cmd/link: rework line table generation to reduce heap mem

Rework the way symbols are handled in DWARF line table generation to
eliminate copying the data payload for all SWDWARFLINES syms (emitted
by the compiler) into the payload of the ".debug_line" section symbol
(generated by the linker). Instead, chain together the SWDWARFLINES
symbols into a list, then append that list to the section sym list in
dwarfp (this moves us from a single monolithic .debug_line to a
.debug_line section sym followed by a list symbols (one per function
and an epilog symbol per compilation unit). To enable this work, move
the emission of the DW_LNE_set_address op (at the start of each
function) from the linker to the compiler.

Change-Id: Iec61b44a451f7a386c82a89bf944de482b018789
Reviewed-on: https://go-review.googlesource.com/c/go/+/237427
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years ago[dev.link] cmd/link: stop emitting .debug_pubnames/.debug_pubtypes
Than McIntosh [Wed, 10 Jun 2020 14:05:37 +0000 (10:05 -0400)]
[dev.link] cmd/link: stop emitting .debug_pubnames/.debug_pubtypes

Don't emit the .debug_pubnames/.debug_pubtypes sections. These sections
are not used by either GDB or Delve, and C++ compilers [notably GCC
and Clang] no longer emit the sections by default.

Change-Id: Ic3309755e88c8e1aa28a29366bc7f0df1748fe64
Reviewed-on: https://go-review.googlesource.com/c/go/+/237426
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years ago[dev.link] cmd/link: reduce alignment requirement for symtab/elfstr
Than McIntosh [Mon, 15 Jun 2020 19:16:51 +0000 (15:16 -0400)]
[dev.link] cmd/link: reduce alignment requirement for symtab/elfstr

The linker's asmb phase for ELF has a chunk of code that decides where
to place the .symtab and .strtab sections, which appear after after
the DWARF data; this code currently tries to align the start of the
.symtab section using the value of -R (stored in *FlagRound). This
patch gets rid of this additional alignment and instead just aligns
.symtab by pointer size. The -R value is needed for loadable
segments/sections (such as text or data), not for non-loadable
sections (e.g. symtab). On most architectures the *FlagRound value is
4k, however on ARM64 it is 64k, meaning that aligning symtab on this
boundary can waste a good chunk of space.

Change-Id: Ib51f3ad5611f5614768355eb8533084ba117a8e9
Reviewed-on: https://go-review.googlesource.com/c/go/+/238019
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years ago[dev.link] cmd/link: remove dwarf2.go
Than McIntosh [Wed, 10 Jun 2020 13:57:10 +0000 (09:57 -0400)]
[dev.link] cmd/link: remove dwarf2.go

Relocate the last few functions in dwarf2.go to dwarf.go,
and remove dwarf2.go. No change in functionality.

Change-Id: Id1b5f0d1c496d5912b955b8ba942e33bc43aa93b
Reviewed-on: https://go-review.googlesource.com/c/go/+/237425
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>
4 years agogo/token: explain file base offset better in documentation
Robert Griesemer [Tue, 16 Jun 2020 04:32:15 +0000 (21:32 -0700)]
go/token: explain file base offset better in documentation

Fixes #36648.

Change-Id: I92d4462fea0079f63697fb8f407fd2d50b7d68f7
Reviewed-on: https://go-review.googlesource.com/c/go/+/238117
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agodoc/go1.15: enumerate ELF-based OSes
Austin Clements [Tue, 16 Jun 2020 18:54:57 +0000 (14:54 -0400)]
doc/go1.15: enumerate ELF-based OSes

Users don't necessarily know if their OS is ELF-based.

For #37419.

Change-Id: I4a4256c5f5eb34211729e1311582bb0e210f1f8d
Reviewed-on: https://go-review.googlesource.com/c/go/+/238240
Reviewed-by: Than McIntosh <thanm@google.com>
4 years ago[dev.link] cmd/internal/goobj2: fix comment
Than McIntosh [Tue, 16 Jun 2020 20:58:28 +0000 (16:58 -0400)]
[dev.link] cmd/internal/goobj2: fix comment

Fix a stale comment.

Change-Id: Ic14616310cd8e8703cfc7b1ce50c411be34488fa
Reviewed-on: https://go-review.googlesource.com/c/go/+/238243
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years agocmd/go: fix mod_gomodcache and generate_env TestScripts on Plan 9
Fazlul Shahriar [Mon, 15 Jun 2020 17:04:05 +0000 (13:04 -0400)]
cmd/go: fix mod_gomodcache and generate_env TestScripts on Plan 9

Adjust these two tests for Plan 9,
which uses $path instead of $PATH,
and $home instead of $HOME.

Fixes #39599

Change-Id: Idba95e07d307e76f0f61acd904905b417c52d43a
Reviewed-on: https://go-review.googlesource.com/c/go/+/237941
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years agodoc/go1.15: fix two typos
Ainar Garipov [Tue, 16 Jun 2020 18:48:43 +0000 (21:48 +0300)]
doc/go1.15: fix two typos

Updates #37419.

Change-Id: I9ecc706d44950b7de3e8fe4dde8cfab1904eee58
Reviewed-on: https://go-review.googlesource.com/c/go/+/238139
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agodoc/go1.15: add missing slashes
Toshihiro Shiino [Fri, 12 Jun 2020 05:04:13 +0000 (05:04 +0000)]
doc/go1.15: add missing slashes

This saves a redirect and makes the document more consistent.

For #37419

Change-Id: Ic3bd62f8caacf67ffe43a359624e11bed8b8cfaf
Reviewed-on: https://go-review.googlesource.com/c/go/+/237540
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agocmd: update golang.org/x/tools
Jay Conrod [Tue, 16 Jun 2020 14:03:48 +0000 (10:03 -0400)]
cmd: update golang.org/x/tools

This pulls in CL 235797.

Fixes #39151

Change-Id: I367cff2e9b432a778213501c42fb510c1514643f
Reviewed-on: https://go-review.googlesource.com/c/go/+/238157
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Akhil Indurti <aindurti@gmail.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
4 years agoruntime: set g to gsignal before adjustSignalStack
Cherry Zhang [Mon, 15 Jun 2020 20:20:53 +0000 (16:20 -0400)]
runtime: set g to gsignal before adjustSignalStack

When a signal is received, the runtime probes whether an
alternate signal stack is set, if so, adjust gsignal's stack to
point to the alternate signal stack. This is done in
adjustSignalStack, which calls sigaltstack "syscall", which is a
libc call on darwin through asmcgocall. asmcgocall decides
whether to do stack switch based on whether we're running on g0
stack, gsignal stack, or regular g stack. If g is not set to
gsignal, asmcgocall may make wrong decision. Set g first.
adjustSignalStack is recursively nosplit, so it is okay that
temporarily gsignal.stack doesn't match the stack we're running
on.

May fix #39079.

Change-Id: I59b2c5dc08c3c951f1098fff038bf2e06d7ca055
Reviewed-on: https://go-review.googlesource.com/c/go/+/238020
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agodoc/go1.15: document go/printer.StdFormat
Ian Lance Taylor [Fri, 12 Jun 2020 22:58:48 +0000 (15:58 -0700)]
doc/go1.15: document go/printer.StdFormat

For #37419
For #37453
For #37476

Change-Id: Ia032ec844773af421bc4217d5dd6e60996d8e91f
Reviewed-on: https://go-review.googlesource.com/c/go/+/237740
Reviewed-by: Robert Griesemer <gri@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agodoc/gccgo: change gold build instructions to use Git repository
Tobias Klauser [Mon, 15 Jun 2020 12:11:08 +0000 (14:11 +0200)]
doc/gccgo: change gold build instructions to use Git repository

Use the binutils Git repository instead of CVS.

Change-Id: I10100ca44d64ab3621367d1d4ac9e9a50d212d0d
Reviewed-on: https://go-review.googlesource.com/c/go/+/237839
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agodoc/gccgo: update GCC repository after migration to Git
Tobias Klauser [Mon, 15 Jun 2020 10:18:30 +0000 (12:18 +0200)]
doc/gccgo: update GCC repository after migration to Git

The GCC code repository is now hosted on Git. Adjust the instructions in
gccgo_install.html accordingly.

Change-Id: I443a8b645b63e63785979bc0554521e3dc3b0bf7
Reviewed-on: https://go-review.googlesource.com/c/go/+/237798
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agocmd/compile: fix ordering problems in struct equality
Keith Randall [Mon, 15 Jun 2020 16:17:18 +0000 (09:17 -0700)]
cmd/compile: fix ordering problems in struct equality

Make sure that if a field comparison might panic, we evaluate
(and short circuit if not equal) all previous fields, and don't
evaluate any subsequent fields.

Add a bunch more tests to the equality+panic checker.

Update #8606

Change-Id: I6a159bbc8da5b2b7ee835c0cd1fc565575b58c46
Reviewed-on: https://go-review.googlesource.com/c/go/+/237919
Run-TryBot: Keith Randall <khr@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years agoA+C: add Nikita Gillmann (individual CLA)
nikita [Sun, 14 Jun 2020 16:20:13 +0000 (16:20 +0000)]
A+C: add Nikita Gillmann (individual CLA)

previous contribution: https://go-review.googlesource.com/c/go/+/178397/

Change-Id: Ia4038153d0083c1004d0e48c0c6c1eec0774ddc4
GitHub-Last-Rev: de08e864492bd1f9cfaa10205b205d484db79204
GitHub-Pull-Request: golang/go#39584
Reviewed-on: https://go-review.googlesource.com/c/go/+/237821
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agoencoding/json: revert "avoid work when unquoting strings, take 2"
Daniel Martí [Sun, 14 Jun 2020 21:09:18 +0000 (22:09 +0100)]
encoding/json: revert "avoid work when unquoting strings, take 2"

This reverts golang.org/cl/190659 and golang.org/cl/226218, minus the
regression tests in the latter.

The original work happened in golang.org/cl/151157, which was reverted
in golang.org/cl/190909 due to a crash found by fuzzing.

We tried a second time in golang.org/cl/190659, which shipped with Go
1.14. A bug was found, where strings would be mangled in certain edge
cases. The fix for that was golang.org/cl/226218, which was backported
into Go 1.14.4.

Unfortunately, a second regression was just reported in #39555, which is
a similar case of strings getting mangled when decoding under certain
conditions. It would be possible to come up with another small patch to
fix that edge case, but instead, let's just revert the entire
optimization, as it has proved to do more harm than good. Moreover, it's
hard to argue or prove that there will be no more such regressions.

However, all the work wasn't for nothing. First, we learned that the way
the decoder unquotes tokenized strings isn't simple; initially, we had
wrongly assumed that each string was unquoted exactly once and in order.
Second, we have gained a number of regression tests which will be useful
to prevent the same mistakes in the future, including the test cases we
add in this CL.

Fixes #39555.

Change-Id: I66a6919c2dd6d9789232482ba6cf3814eaa70f61
Reviewed-on: https://go-review.googlesource.com/c/go/+/237838
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
4 years agoruntime: avoid lock starvation in TestNetpollBreak on Plan 9
Richard Miller [Sat, 13 Jun 2020 18:04:15 +0000 (19:04 +0100)]
runtime: avoid lock starvation in TestNetpollBreak on Plan 9

TestNetpollBreak was sometimes timing out on Plan 9, where
netpoll_stub.go implements only enough of the network poller
to support runtime timers, using a notetsleep / notewakeup
pair. The runtime.lock which serialises the use of the note
doesn't guarantee fairness, and in practice the netpoll call
used by the test can be starved by the netpoll call from the
scheduler which supports the overall 'go test' timeout.
Calling osyield after relinquishing the lock gives the two
callers a more even chance to take a turn, which prevents
the test from timing out.

Fixes #39437

Change-Id: Ifbe6aaf95336d162d9d0b6deba19b8debf17b071
Reviewed-on: https://go-review.googlesource.com/c/go/+/237698
Run-TryBot: David du Colombier <0intro@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agoimage/gif: speed up initializing test image
Nigel Tao [Sat, 13 Jun 2020 02:28:08 +0000 (12:28 +1000)]
image/gif: speed up initializing test image

The benchmark throughput numbers don't change, but the set-up time (the
time taken before the b.ResetTimer() call) drops from 460ms to 4ms.

Change-Id: I5a6756643dff6127f6d902455d83459c084834fc
Reviewed-on: https://go-review.googlesource.com/c/go/+/237757
Reviewed-by: Rob Pike <r@golang.org>
Run-TryBot: Rob Pike <r@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

4 years agodoc/go1.15: add release notes for database/sql and database/sql/driver
Ainar Garipov [Wed, 10 Jun 2020 15:26:29 +0000 (18:26 +0300)]
doc/go1.15: add release notes for database/sql and database/sql/driver

Updates #37419.

Change-Id: Ifb6aa9a671f677e1a3e908f0b75bf0da17a57ad0
Reviewed-on: https://go-review.googlesource.com/c/go/+/237397
Reviewed-by: Daniel Theophanes <kardianos@gmail.com>
4 years agodoc/go1.15: sort debug/pe entry alphabetically
Ian Lance Taylor [Fri, 12 Jun 2020 22:34:43 +0000 (15:34 -0700)]
doc/go1.15: sort debug/pe entry alphabetically

For #37419

Change-Id: If98ecffbfd976cb66a87b1cce4e82b3ddee1639e
Reviewed-on: https://go-review.googlesource.com/c/go/+/237738
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agoruntime: raise alert threshold on window smhasher test
Keith Randall [Fri, 12 Jun 2020 18:07:56 +0000 (11:07 -0700)]
runtime: raise alert threshold on window smhasher test

This alert is triggering occasionally. I've investigated the
collisions that happen, and they all seem to be pairwise, so they are
not a big deal.  "pairwise" = when there are 32 collisions, it is two
keys mapping to the same hash, 32 times, not 33 keys all mapping to
the same hash.

Add some t.Logf calls in case this comes back, which will help isolate
the problem.

Fixes #39352

Change-Id: I1749d7c8efd0afcf9024d8964d15bc0f58a86e4f
Reviewed-on: https://go-review.googlesource.com/c/go/+/237718
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agoA+C: change email address for Meng Zhuo
Meng Zhuo [Fri, 12 Jun 2020 07:12:52 +0000 (15:12 +0800)]
A+C: change email address for Meng Zhuo

Change-Id: I60965f6193256959055824749ed08ce86f6ba482
Reviewed-on: https://go-review.googlesource.com/c/go/+/237541
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agocmd/compile/internal/ssa: skip TestNexting with old Delve on linux/386
Dmitri Shuralyov [Fri, 12 Jun 2020 02:02:27 +0000 (22:02 -0400)]
cmd/compile/internal/ssa: skip TestNexting with old Delve on linux/386

Support for linux/386 was added to Delve in version 1.4.1, but the
version of Delve currently installed on the linux-386-longtest
builder is 1.2.0. That isn't new enough, which causes the test
to fail. Skip it on that builder until it can be made to work.

The only reason it used to pass on the linux-386-longtest builder
before is because that builder was misconfigured to run tests for
linux/amd64. This was resolved in CL 234520.

Also improve internal documentation and the text of skip reasons.

Fixes #39309.

Change-Id: I395cb1f076e59dd3a3feb53e1dcdce5101e9a0f5
Reviewed-on: https://go-review.googlesource.com/c/go/+/237603
Reviewed-by: David Chase <drchase@google.com>
4 years ago[dev.link] cmd/compile, cmd/link: remove dead methods if type is not used in interface
Cherry Zhang [Mon, 8 Jun 2020 22:38:59 +0000 (18:38 -0400)]
[dev.link] cmd/compile, cmd/link: remove dead methods if type is not used in interface

Currently, a method of a reachable type is live if it matches a
method of a reachable interface. In fact, we only need to retain
the method if the type is actually converted to an interface. If
the type is never converted to an interface, there is no way to
call the method through an interface method call (but the type
descriptor could still be used, e.g. in calling
runtime.newobject).

A type can be used in an interface in two ways:
- directly converted to interface. (Any interface counts, as it
  is possible to convert one interface to another.)
- obtained by reflection from a related type (e.g. obtaining an
  interface of T from []T).

For the former, we let the compiler emit a marker on the type
descriptor symbol when it is converted to an interface. In the
linker, we only need to check methods of marked types.

For the latter, when the linker visits a marked type, it needs to
visit all its "child" types as marked (i.e. potentially could be
converted to interface).

This reduces binary size:
cmd/compile 18792016 18706096 (-0.5%)
cmd/go 14120572 13398948 (-5.1%)

Change-Id: I4465c7eeabf575f4dc84017214c610fa05ae31fd
Reviewed-on: https://go-review.googlesource.com/c/go/+/237298
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
4 years agodoc/go1.15: add code tags
Toshihiro Shiino [Thu, 11 Jun 2020 15:57:18 +0000 (15:57 +0000)]
doc/go1.15: add code tags

Other command line arguments are written in code tags, so add a code tag for consistency.

For #37419

Change-Id: I1948536c3a1860d93726484be2dc7bcb03dfdc2f
Reviewed-on: https://go-review.googlesource.com/c/go/+/237539
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agodoc/go1.15: replace tab indentation with spaces
Toshihiro Shiino [Thu, 11 Jun 2020 15:45:46 +0000 (15:45 +0000)]
doc/go1.15: replace tab indentation with spaces

Replace tab indentation with spaces for consistency, as all other indentation is done with spaces.

For #37419

Change-Id: I728a75ae0d00e637f57eb455b6039ffc1a5feed2
Reviewed-on: https://go-review.googlesource.com/c/go/+/237538
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
4 years agocmd/cgo: in -godefs mode, don't change constant to type
Ian Lance Taylor [Thu, 11 Jun 2020 19:01:52 +0000 (12:01 -0700)]
cmd/cgo: in -godefs mode, don't change constant to type

Fixes #39534

Change-Id: Icbc1745935dd7098c09e2d35c61cd5bfbaa31c63
Reviewed-on: https://go-review.googlesource.com/c/go/+/237558
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
4 years ago[dev.link] all: merge branch 'master' into dev.link
Cherry Zhang [Thu, 11 Jun 2020 20:49:19 +0000 (16:49 -0400)]
[dev.link] all: merge branch 'master' into dev.link

Change-Id: I446db56b20ef2189e23e225a91a17736c1d11e4c

4 years agocmd/go/internal/web: don't follow an infinite number of redirects
Baokun Lee [Tue, 9 Jun 2020 15:03:35 +0000 (23:03 +0800)]
cmd/go/internal/web: don't follow an infinite number of redirects

We replaced http.DefaultClient with securityPreservingHTTPClient,
but we still need that too many redirects check. This issue introduced
by CL 156838.

We introduce a special path to test rediret requests in the script test
framework. You can specify the number of redirects in the path.

$GOPROXY/redirect/<count>/...

Redirect request sequence details(count=8):

 request:  $GOPROXY/mod/redirect/8/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/7/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/6/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/5/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/4/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/3/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/2/rsc.io/quote/@v/v1.2.0.mod
redirect:  $GOPROXY/mod/redirect/1/rsc.io/quote/@v/v1.2.0.mod
the last:  $GOPROXY/mod/rsc.io/quote/@v/v1.2.0.mod

Fixes #39482

Change-Id: I149a3702b2b616069baeef787b2e4b73afc93b0e
Reviewed-on: https://go-review.googlesource.com/c/go/+/237177
Run-TryBot: Baokun Lee <nototon@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
4 years agoA+C: add Vee Zhang (individual CLA)
Vee Zhang [Thu, 11 Jun 2020 04:39:49 +0000 (04:39 +0000)]
A+C: add Vee Zhang (individual CLA)

Change-Id: Id52c5fef2e5b65056d3c87e70e176b67998cea90
GitHub-Last-Rev: b88e3afa38d96a5a51334100bb29108c5f2618f4
GitHub-Pull-Request: golang/go#39520
Reviewed-on: https://go-review.googlesource.com/c/go/+/237223
Reviewed-by: Ian Lance Taylor <iant@golang.org>
4 years agogo/types: rename UsesCgo to go115UsesCgo
Matthew Dempsky [Wed, 10 Jun 2020 19:47:23 +0000 (12:47 -0700)]
go/types: rename UsesCgo to go115UsesCgo

This API and functionality was added late in the Go 1.15 release
cycle, and use within gopls has revealed some shortcomings. It's
possible (but not decided) that we'll want a different API long-term,
so for now this CL renames UsesCgo to a non-exported name to avoid
long-term commitment under the Go 1 compat guarantee.

Updates #16623.
Updates #39072.

Change-Id: I04bc0c161a84adebe43e926df5df406bc794c3db
Reviewed-on: https://go-review.googlesource.com/c/go/+/237417
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
4 years agocmd/internal/objabi: enable frame-pointer for iOS arm64
Gawen Arab [Wed, 10 Jun 2020 20:31:57 +0000 (20:31 +0000)]
cmd/internal/objabi: enable frame-pointer for iOS arm64

This improves stack unwinding of Go code running on iOS arm64.

Change-Id: I0494f750c15dcb895f9d4a072352f050d731df17
GitHub-Last-Rev: 435a2a1690dad98975f7463f91241831cd73d3df
GitHub-Pull-Request: golang/go#37403
Reviewed-on: https://go-review.googlesource.com/c/go/+/220588
Run-TryBot: Elias Naur <mail@eliasnaur.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
4 years agoruntime: fix typo in FuncForPC doc go1.15beta1
Rodolfo Carvalho [Wed, 10 Jun 2020 13:30:42 +0000 (13:30 +0000)]
runtime: fix typo in FuncForPC doc

Change-Id: I04037e13b131e79ebc5af84896bfeda49ddc0eaa
GitHub-Last-Rev: b0d0de930862e4f163e158876cba70d81ed2d52e
GitHub-Pull-Request: golang/go#39500
Reviewed-on: https://go-review.googlesource.com/c/go/+/237220
Reviewed-by: Keith Randall <khr@golang.org>
4 years agocmd/compile: always tighten and de-duplicate tuple selectors
Michael Munday [Tue, 9 Jun 2020 10:17:17 +0000 (03:17 -0700)]
cmd/compile: always tighten and de-duplicate tuple selectors

The scheduler assumes two special invariants that apply to tuple
selectors (Select0 and Select1 ops):

  1. There is only one tuple selector of each type per generator.
  2. Tuple selectors and generators reside in the same block.

Prior to this CL the assumption was that these invariants would
only be broken by the CSE pass. The CSE pass therefore contained
code to move and de-duplicate selectors to fix these invariants.

However it is also possible to write relatively basic optimization
rules that cause these invariants to be broken. For example:

  (A (Select0 (B))) -> (Select1 (B))

This rule could result in the newly added selector (Select1) being
in a different block to the tuple generator (see issue #38356). It
could also result in duplicate selectors if this rule matches
multiple times for the same tuple generator (see issue #39472).

The CSE pass will 'fix' these invariants. However it will only do
so when optimizations are enabled (since disabling optimizations
disables the CSE pass).

This CL moves the CSE tuple selector fixup code into its own pass
and makes it mandatory even when optimizations are disabled. This
allows tuple selectors to be treated like normal ops for most of
the compilation pipeline until after the new pass has run, at which
point we need to be careful to maintain the invariant again.

Fixes #39472.

Change-Id: Ia3f79e09d9c65ac95f897ce37e967ee1258a080b
Reviewed-on: https://go-review.googlesource.com/c/go/+/237118
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>