New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dev.boringcrypto.go1.12 #31452
Dev.boringcrypto.go1.12 #31452
Conversation
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> Reviewed-on: https://go-review.googlesource.com/50970 Reviewed-by: Chris Broadfoot <cbro@golang.org>
Change-Id: I6251fc128990f9494a0b037cabb24ada5eabb6b5 Reviewed-on: https://go-review.googlesource.com/50951 Run-TryBot: Chris Broadfoot <cbro@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Chris Broadfoot <cbro@golang.org>
…ilders 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> (cherry picked from commit 4833e920c1d7f6b23458e6ff3c73951fcf754219) Reviewed-on: https://go-review.googlesource.com/51450 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
…o 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). Cherry-pick of CL 51713. Updates #21234. Change-Id: I1e0035ffba986c3551479d5742809e43da5e7c73 Reviewed-on: https://go-review.googlesource.com/52190 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
…ialization 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. Cherry-pick of CL 51714. Fixes #21234. Change-Id: I4422375a6e234b9f979d22135fc63ae3395946b0 Reviewed-on: https://go-review.googlesource.com/52191 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
5791203 runtime: mapassign_* should use typedmemmove to update keys 3805255 all: remove some manual hyphenation f096b5b runtime: mark activeModules nosplit/nowritebarrier 3e3da54 math/bits: fix example for OnesCount64 9b1e7cf math/bits: add examples for OnesCount functions b01db02 misc/cgo/testsanitizers: also skip tsan11/tsan12 when using GCC a279b53 reflect: document how DeepEqual handles cycles 909f409 doc: mention handling of moved GOROOT in 1.9 release notes 58ad017 doc: use better wording to explain type-aware completion 92dac21 doc: replace paid with commercial 9bb98e0 doc/1.9: add CL 43712, ReverseProxy of HTTP/2 trailers to the release notes. 78d74fc doc: clarify that Gogland is for paid IntelliJ platform IDEs 5495047 doc/1.9: fix broken html link in CL 53030/53210 890e0e8 doc: fix bad link in go1.9 release notes be596f0 doc/1.9: fix stray html in CL 53030 0173631 encoding/binary: add examples for varint functions ac0ccf3 doc/1.9: add CL 36696 for crypto/x509 to the release notes cc402c2 doc: hide blog content for golang.google.cn f396fa4 internal/poll: don't add non-sockets to runtime poller 664cd26 cmd/vet: don't exit with failure on type checking error a8730cd doc: hide video and share if being served from CN b63db76 testsanitizers: check that tsan program runs, skip tsan10 on gcc 193eda7 time: skip ZoneAbbr test in timezones with no abbreviation 6f08c93 cmd/go: show examples with empty output in go test -list f20944d cmd/compile: set/unset base register for better assembly print 623e2c4 runtime: map bitmap and spans during heap initialization 780249e runtime: fall back to small mmaps if we fail to grow reservation 31b2c4c .github: add .md extension to SUPPORT file ac29f30 plugin: mention that there are known bugs with plugins 45a4609 cmd/dist: skip moved GOROOT on Go's Windows builders when not sharding tests e157fac test: add README 835dfef runtime/pprof: prevent a deadlock that SIGPROF might create on mips{,le} df91b80 doc: list editor options by name, not plugin name 3d9475c doc: cleanup editor page b9661a1 doc: add Atom to editor guide ee392ac cmd/compile: consider exported flag in namedata Change-Id: I3a48493e8c05d97cb3b61635503ef0ccd646e5cb
Change-Id: If95cec0ec7e32cdb450818c4c55e2d03b847ab65 Reviewed-on: https://go-review.googlesource.com/53630 Reviewed-by: Austin Clements <austin@google.com>
Change-Id: I1d7bd5cff7350a4e0f78b8efc8406e79c74732d1 Reviewed-on: https://go-review.googlesource.com/55370 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-on: https://go-review.googlesource.com/55470 Run-TryBot: Russ Cox <rsc@golang.org>
Change-Id: I415fcc23b62666d78aed3ddc7d2731127c810be3 Reviewed-on: https://go-review.googlesource.com/55471 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
…ccess Right now the package doesn't do anything useful, but it will. This CL is about the machinery for building goboringcrypto_linux_amd64.syso and then running the self-test and checking FIPS_mode from Go init. Change-Id: I4ec0f5efaa88ccfb506b9818d24a7f1cbcc5a7d6 Reviewed-on: https://go-review.googlesource.com/55472 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
Change-Id: Ie630eff90f7fee9b359683930aec2daf96c1bdfe Reviewed-on: https://go-review.googlesource.com/55473 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
…crc32 If we substitute a SHA1 implementation where the entirety of the reading of the buffer is done in assembly (or C called from cgo), then the race detector cannot observe the race. Change to crc32 with a fake polynomial, in the hope that it will always be handled by Go code, not optimized assembly or cgo calls. Change-Id: I34e90b14ede6bc220ef686f6aef16b8e464b5cde Reviewed-on: https://go-review.googlesource.com/56510 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Change-Id: I80a764971b41f75c3b699797bfed71f509e3407d Reviewed-on: https://go-review.googlesource.com/55474 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
Change-Id: Id4019d601c615b4835b0337d82be3d508292810e Reviewed-on: https://go-review.googlesource.com/55475 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
Change-Id: If83fdeac31f65aba818bbc7edd2f215b16814021 Reviewed-on: https://go-review.googlesource.com/55476 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
…om BoringCrypto Change-Id: I8407310e7d00eafe9208879228dbf4ac3d26a907 Reviewed-on: https://go-review.googlesource.com/55477 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
…able Change-Id: Ide00c40c0ca8d486f3bd8968e1d301c8b0ed6d05 Reviewed-on: https://go-review.googlesource.com/56011 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
Change-Id: I108e0a527bddd673b16582d206e0697341d0a0ea Reviewed-on: https://go-review.googlesource.com/55478 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
…econds parameter for pselect6 Fixes #21518 Change-Id: Idd67e3f0410d0ce991b34dcc0c8f15e0d5c529c9 Reviewed-on: https://go-review.googlesource.com/56891 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Petrica Voicu <pvoicu@paypal.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
…od by constant 1<<63 Cherry-pick CL 56890. Normally 64-bit div/mod is turned into runtime calls on 32-bit arch, but the front end leaves power-of-two constant division and hopes the SSA backend turns into a shift or AND. The SSA rule is (Mod64u <t> n (Const64 [c])) && isPowerOfTwo(c) -> (And64 n (Const64 <t> [c-1])) But isPowerOfTwo returns true only for positive int64, which leaves out 1<<63 unhandled. Add a special case for 1<<63. Fixes #21517. Change-Id: Ic91f86fd5e035a8bb64b937c15cb1c38fec917d6 Reviewed-on: https://go-review.googlesource.com/57070 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Fixes #21456 Change-Id: I7841d816e8c1c581e61db4f24124f99f5184fead Reviewed-on: https://go-review.googlesource.com/57170 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
…failure The code was adding race.Errors to t.raceErrors before checking Failed, but Failed was using t.raceErrors+race.Errors. We don't want to change Failed, since that would affect tests themselves, so modify the harness to not unnecessarily change t.raceErrors. Updates #19851 Fixes #21338 Change-Id: I483f27c68c340928f1cbdef160abc0a5716efb5d Reviewed-on: https://go-review.googlesource.com/57151 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
…bel reading Because profile labels are copied from the goroutine into the tag buffer by the signal handler, there's a carefully-crafted set of race detector annotations to create the necessary happens-before edges between setting a goroutine's profile label and retrieving it from the profile tag buffer. Given the constraints of the signal handler, we have to approximate the true synchronization behavior. Currently, that approximation is too weak. Ideally, runtime_setProfLabel would perform a store-release on &getg().labels and copying each label into the profile would perform a load-acquire on &getg().labels. This would create the necessary happens-before edges through each individual g.labels object. Since we can't do this in the signal handler, we instead synchronize on a "labelSync" global. The problem occurs with the following sequence: 1. Goroutine 1 calls setProfLabel, which does a store-release on labelSync. 2. Goroutine 2 calls setProfLabel, which does a store-release on labelSync. 3. Goroutine 3 reads the profile, which does a load-acquire on labelSync. The problem is that the load-acquire only synchronizes with the *most recent* store-release to labelSync, and the two store-releases don't synchronize with each other. So, once goroutine 3 touches the label set by goroutine 1, we report a race. The solution is to use racereleasemerge. This is like a read-modify-write, rather than just a store-release. Each RMW of labelSync in runtime_setProfLabel synchronizes with the previous RMW of labelSync, and this ultimately carries forward to the load-acquire, so it synchronizes with *all* setProfLabel operations, not just the most recent. Change-Id: Iab58329b156122002fff12cfe64fbeacb31c9613 Reviewed-on: https://go-review.googlesource.com/57190 Run-TryBot: Austin Clements <austin@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
….Value Using atomic.Value causes vet errors in code copying PublicKey or PrivateKey structures. I don't think the errors are accurate, but it's easier to work around them than to change vet or change atomic.Value. See #21504. Change-Id: I3a3435c1fc664cc5166c81674f6f7c58dab35f21 Reviewed-on: https://go-review.googlesource.com/56671 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
Change-Id: Ibb92f0f8cb487f4d179b069e588e1cb266599384 Reviewed-on: https://go-review.googlesource.com/55479 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
…hanges to the library". Backport of https://golang.org/cl/57390 to 1.9 release branch. Change-Id: Ieea5a048732db7ee5dc5cf13f06e11ca4f5313cc Reviewed-on: https://go-review.googlesource.com/57450 Reviewed-by: Keith Randall <khr@golang.org>
…backend [This is a cherry-pick of CL 54090 to the 1.9 release branch.] 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: I485bb1867b46d8e5cf64bc820b8963576dc16174 Reviewed-on: https://go-review.googlesource.com/55970 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
The DWARF code is mishandling the case when the host object files define multiple (distinct) symbols with the same name. They are mapped to the same DWARF debug symbol, which then appears on the dwarfp list multiple times, which then breaks the code that processes the list. Detect duplicates and skip them, because that's trivial, instead of fixing the underlying problem. See #21566. Change-Id: Ib5a34c891d7c15f4c7bb6239d8f31a1ec767b8bc Reviewed-on: https://go-review.googlesource.com/57943 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
…al/boring Change-Id: I5b122ad23f75296dab8cec89a4e50dcca7fa9b3f Reviewed-on: https://go-review.googlesource.com/57944 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Change-Id: I71bfff6a3462e6dfd7a65ef76ec56644bae37c34 Reviewed-on: https://go-review.googlesource.com/57272 Reviewed-by: Avelino <t@avelino.xxx> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-on: https://go-review.googlesource.com/58650 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Change-Id: I845375d2b3824211b80885228ba5b45503cba1a6 Reviewed-on: https://go-review.googlesource.com/c/163722 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit 8bffb85) Reviewed-on: https://go-review.googlesource.com/c/163723 Reviewed-by: Andrew Bonventre <andybons@golang.org>
Change-Id: I2fa947f75c0ace671ad8b99c4fab3ad7b178cedf Reviewed-on: https://go-review.googlesource.com/c/163725 Run-TryBot: Andrew Bonventre <andybons@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
…g TSTW Current assembler reports error when it assembles "TSTW $1689262177517664, R3", but go1.11 was building fine. Fixes #30334 Change-Id: I9c16d36717cd05df2134e8eb5b17edc385aff0a9 Reviewed-on: https://go-review.googlesource.com/c/163259 Run-TryBot: Ben Shi <powerman1st@163.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ben Shi <powerman1st@163.com> (cherry picked from commit 2ef8abb) Reviewed-on: https://go-review.googlesource.com/c/163419 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Go 1.12 is released, but it's currently not listed in the https://golang.org/project page. Change-Id: Ib5820f74245e4c986014c64eb40fa2911473e64b Reviewed-on: https://go-review.googlesource.com/c/163837 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit 467456b) Reviewed-on: https://go-review.googlesource.com/c/163727 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
…lean bug" Revert CL 137055, which changed Clean("\\somepath\dir\") to return "\\somepath\dir" on Windows. It's not entirely clear this is correct, as this path is really "\\server\share\", and as such the trailing slash may be the path on that share, much like "C:\". In any case, the change broke existing code, so roll it back for now and rethink for 1.13. Updates #27791 Updates #30307 Change-Id: I69200b1efe38bdb6d452b744582a2bfbb3acbcec Reviewed-on: https://go-review.googlesource.com/c/163077 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> (cherry picked from commit 153c0da) Reviewed-on: https://go-review.googlesource.com/c/163078 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Fixes #30431 Change-Id: I379e78a1c385942a19e1a10b91d732f9a73899e6 Reviewed-on: https://go-review.googlesource.com/c/164041 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit d7518ac) Reviewed-on: https://go-review.googlesource.com/c/164077 Reviewed-by: Andrew Bonventre <andybons@golang.org>
…oringcrypto.go1.12 Change-Id: I20ea47cc360126326a810abcfb6141b3d9338f63
…CHE is not an absolute path If GOCACHE is set but is not an absolute path, we cannot build. And GOCACHE=off also returns the error message "build cache is disabled by GOCACHE=off". Fixes #30493 Change-Id: I24f64bc886599ca0acd757acada4714aebe4d3ae Reviewed-on: https://go-review.googlesource.com/c/164200 Run-TryBot: Baokun Lee <nototon@gmail.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> (cherry picked from commit 13d24b6) Reviewed-on: https://go-review.googlesource.com/c/164717 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
With stack objects, when we scan the stack, it scans defers with tracebackdefers, but it seems to me that tracebackdefers doesn't include the func value itself, which could be a stack allocated closure. Scan it explicitly. Alternatively, we can change tracebackdefers to include the func value, which in turn needs to change the type of stkframe. Updates #30453. Fixes #30470. Change-Id: I55a6e43264d6952ab2fa5c638bebb89fdc410e2b Reviewed-on: https://go-review.googlesource.com/c/164118 Reviewed-by: Keith Randall <khr@golang.org> (cherry picked from commit 4f4c2a7) Reviewed-on: https://go-review.googlesource.com/c/164629 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
There's a "lib/time" sub-section in the Go 1.12 relase notes that points to a non-existent golang.org/pkg/lib/time page. The note is about a change in the tz database in the src/lib/time directory, but the section's title (and the link) should probably just refer to the time package. Change-Id: Ibf9dacd710e72886f14ad0b7415fea1e8d25b83a Reviewed-on: https://go-review.googlesource.com/c/164977 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit 0dc6256) Reviewed-on: https://go-review.googlesource.com/c/164964 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Updates #30555 Fixes #30579 Change-Id: Ib894b4f3cdba23a18a69c9470cf69ceb83591a4d Reviewed-on: https://go-review.googlesource.com/c/go/+/165057 Run-TryBot: Baokun Lee <nototon@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> (cherry picked from commit c746592) Reviewed-on: https://go-review.googlesource.com/c/go/+/165058 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
EvalSymlinks was mishandling cases like "/x/../../y" or "../../../x" where there is an extra ".." that goes past the start of the path. Updates #30520 Fixes #30586 Change-Id: I07525575f83009032fa1a99aa270c8d42007d276 Reviewed-on: https://go-review.googlesource.com/c/go/+/164762 Reviewed-by: Bryan C. Mills <bcmills@google.com> (cherry picked from commit 294edb2) Reviewed-on: https://go-review.googlesource.com/c/go/+/165197 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
…path for paths with major-version suffixes Fixes #30665 Change-Id: Icbcfdb3907bc003ac17a8c7df17ecb41daf82eb4 Reviewed-on: https://go-review.googlesource.com/c/go/+/166117 Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> (cherry picked from commit 1ab9f68) Reviewed-on: https://go-review.googlesource.com/c/go/+/166317
…uilds with Go 1.11 - 1.11.3 Updates #30446 Change-Id: If069f72fa9735f839df92f3ede3bf7b6d7a695a5 Reviewed-on: https://go-review.googlesource.com/c/164317 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> (cherry picked from commit e32203f) Reviewed-on: https://go-review.googlesource.com/c/go/+/164318
…rs main packages The -coverpkg lets users specify a list of packages that should have coverage instrumentation. This may include packages not transitively imported by tests. For each tested package, the synthetic main package imports all covered packages so they can be registered with testing.RegisterCover. This makes it possible for a main package to import another main package. When we compile a package with p.Internal.BuildInfo set (set on main packages by Package.load in module mode), we set runtime/debug.modinfo. Multiple main packages may be passed to the linker because of the above scenario, so this causes duplicate symbol errors. This change copies p.Internal.BuildInfo to the synthetic main package instead of the internal test package. Additionally, it forces main packages imported by the synthetic test main package to be recompiled for testing. Recompiled packages won't have p.Internal.BuildInfo set. Fixes #30684 Change-Id: I06f028d55905039907940ec89d2835f5a1040203 Reviewed-on: https://go-review.googlesource.com/c/go/+/164877 Run-TryBot: Jay Conrod <jayconrod@google.com> Reviewed-by: Bryan C. Mills <bcmills@google.com> (cherry picked from commit 10156b6) Reviewed-on: https://go-review.googlesource.com/c/go/+/166318 TryBot-Result: Gobot Gobot <gobot@golang.org>
…g ops Make sure the side effects inside short-circuited operations (&& and ||) happen correctly. Before this CL, we attached the side effects to the node itself using exprInPlace. That caused other side effects in sibling expressions to get reordered with respect to the short circuit side effect. Instead, rewrite a && b like: r := a if r { r = b } That code we can keep correctly ordered with respect to other side-effects extracted from part of a big expression. exprInPlace seems generally unsafe. But this was the only case where exprInPlace is called not at the top level of an expression, so I don't think the other uses can actually trigger an issue (there can't be a sibling expression). TODO: maybe those cases don't need "in place", and we can retire that function generally. This CL needed a small tweak to the SSA generation of OIF so that the short circuit optimization still triggers. The short circuit optimization looks for triangle but not diamonds, so don't bother allocating a block if it will be empty. Go 1 benchmarks are in the noise. Fixes #30567 Change-Id: I19c04296bea63cbd6ad05f87a63b005029123610 Reviewed-on: https://go-review.googlesource.com/c/go/+/165617 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> (cherry picked from commit 4a9064e) Reviewed-on: https://go-review.googlesource.com/c/go/+/165858 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Previously, the result of sorting a map[interface{}] containing multiple concrete types was non-deterministic. To ensure consistent results, sort first by type name, then by concrete value. Fixes #30484 Change-Id: I10fd4b6a74eefbc87136853af6b2e689bc76ae9d GitHub-Last-Rev: 1b07f0c GitHub-Pull-Request: #30406 Reviewed-on: https://go-review.googlesource.com/c/163745 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> (cherry picked from commit 9d40fad) Reviewed-on: https://go-review.googlesource.com/c/go/+/164617 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
… constants Instead of trying to guess type of constants in the AST, which is hard, use the "var cgo%d Type = Constant" so that typechecking is left to the Go compiler. The previous code could still fail in some cases for constants imported from other modules or defined in other, non-cgo files. Fixes #30527 Change-Id: I2120cd90e90a74b9d765eeec53f6a3d2cfc1b642 Reviewed-on: https://go-review.googlesource.com/c/go/+/164897 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> (cherry picked from commit 711ea1e) Reviewed-on: https://go-review.googlesource.com/c/go/+/165748 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Currently, runtime.KeepAlive applied on a stack object doesn't actually keeps the stack object alive, and the heap object referenced from it could be collected. This is because the address of the stack object is rematerializeable, and we just ignored KeepAlive on rematerializeable values. This CL fixes it. Updates #30476. Fixes #30478. Change-Id: Ic1f75ee54ed94ea79bd46a8ddcd9e81d01556d1d Reviewed-on: https://go-review.googlesource.com/c/164537 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> (cherry picked from commit 40df9cc) Reviewed-on: https://go-review.googlesource.com/c/go/+/164627
…nterfaces Trying to call a method on a nil interface is a panic in Go. For example: var stringer fmt.Stringer println(stringer.String()) // nil pointer dereference In https://golang.org/cl/143097 we started recovering panics encountered during function and method calls. However, we didn't handle this case, as text/template panics before evalCall is ever run. In particular, reflect's MethodByName will panic if the receiver is of interface kind and nil: panic: reflect: Method on nil interface value Simply add a check for that edge case, and have Template.Execute return a helpful error. Note that Execute shouldn't just error if the interface contains a typed nil, since we're able to find a method to call in that case. Finally, add regression tests for both the nil and typed nil interface cases. Fixes #30464. Change-Id: Iffb21b40e14ba5fea0fcdd179cd80d1f23cabbab Reviewed-on: https://go-review.googlesource.com/c/161761 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> (cherry picked from commit 15b4c71) Reviewed-on: https://go-review.googlesource.com/c/go/+/164457 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
… versioned binaries `go build` has chosen the last element of the package import path as the default output name when -o option is given. That caused the output of a package build when the module root is the major version component such as 'v2'. A similar issue involving `go install` was fixed in https://golang.org/cl/128900. This CL refactors the logic added with the change and makes it available as internal/load.DefaultExecName. This CL makes 'go test' to choose the right default test binary name when the tested package is in the module root. (E.g., instead of v2.test, choose pkg.test for the test of 'path/pkg/v2') Fixes #27283 Fixes #30266 Change-Id: I6905754f0906db46e3ce069552715f45356913ae Reviewed-on: https://go-review.googlesource.com/c/go/+/140863 Reviewed-by: Bryan C. Mills <bcmills@google.com> (cherry picked from commit bf94fc3) Reviewed-on: https://go-review.googlesource.com/c/go/+/167384 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
…ointer typedef Fixes #30816 Updates #30646 Change-Id: I5b7e986b0588e87b9781cce01445e3c55c06b6fc Reviewed-on: https://go-review.googlesource.com/c/go/+/165897 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> (cherry picked from commit a6436a5) Reviewed-on: https://go-review.googlesource.com/c/go/+/167497 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
…name for versioned binaries" This reverts commit 746edd4 (CL 167384). Reason for revert: Dmitri identified a potential problem in https://go-review.googlesource.com/c/go/+/140863/11#message-db0ff6bb2c7b06161ca47de771c4465afa8b1102, and we'd like more time to investigate without holding up the 1.12 release branch. Updates #27283 Updates #30266 Updates #30821 Change-Id: I49d7bbbe200e80b81899c3bcbf7844717af010aa Reviewed-on: https://go-review.googlesource.com/c/go/+/167617 Reviewed-by: Andrew Bonventre <andybons@golang.org>
Change-Id: I99832fa4f2c3ec28e2dad46cf7607f3766948031 Reviewed-on: https://go-review.googlesource.com/c/go/+/167698 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit d3bb45d) Reviewed-on: https://go-review.googlesource.com/c/go/+/167701
Change-Id: I6d3a615c5f72e9aa29d23e127af98d6e836da173 Reviewed-on: https://go-review.googlesource.com/c/go/+/167699 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> (cherry picked from commit f832a97) Reviewed-on: https://go-review.googlesource.com/c/go/+/167702 Reviewed-by: Andrew Bonventre <andybons@golang.org>
Change-Id: Id5f76204b8cd3fe67c21c5adfd3a4e456a8cad14 Reviewed-on: https://go-review.googlesource.com/c/go/+/167704 Run-TryBot: Andrew Bonventre <andybons@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Katie Hockman <katie@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
…o1.12 Change-Id: I4b5300765402816cafd2e37849319237b5f6d688
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here (e.g. What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
This PR will be imported into Gerrit with the title and first
comment (this text) used to generate the subject and body of
the Gerrit change.
Please ensure you adhere to every item in this list.
More info can be found at https://github.com/golang/go/wiki/CommitMessage
net/http: frob the quux before blarfing
"This change modifies Go to ___________"
really needed (ASCII art, table, or long link)
Fixes #1234
orUpdates #1234
(the latter if this is not a complete fix) to this comment
golang/go
you can use theowner/repo#issue_number
syntax:Fixes golang/tools#1234
Our Gerrit server & GitHub bots enforce CLA compliance instead.