summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* cmd/go: report scan error position in 'go list -e'tlsJay Conrod2020-04-064-61/+99
| | | | | | | | | | | | | | | This CL extracts some error handling code into a common method for presenting errors encountered when loading package data. Fixes #36087 Fixes #36762 Change-Id: I87c8d41e3cc6e6afa152d9c067bc60923bf19fbe Reviewed-on: https://go-review.googlesource.com/c/go/+/210938 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
* cmd/link: remove darwin/arm testCherry Zhang2020-04-061-2/+0
| | | | | | | | | | | | The darwin/arm port is removed in Go 1.15. Setting GOOS=darwin GOARCH=arm will fail, therefore "go test cmd/link" on macOS will fail (in non -short mode). Remove this test point. Updates #37611. Change-Id: Ia9531c4b4a6692a0c49153517af9fdddd1f3e0bf Reviewed-on: https://go-review.googlesource.com/c/go/+/227341 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd/compile: lay out exit post-dominated blocks at the endJosh Bleecher Snyder2020-04-061-3/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Complete a long-standing TODO in the code. Exit blocks are cold code, so we lay them out at the end of the function. Blocks that are post-dominated by exit blocks are also ipso facto exit blocks. Treat them as such. Implement using a simple loop, because there are generally very few exit blocks. In addition to improved instruction cache, this empirically yields better register allocation. Binary size impact: file before after Δ % cgo 4812872 4808776 -4096 -0.085% fix 3370072 3365976 -4096 -0.122% vet 8252280 8248184 -4096 -0.050% total 115052984 115040696 -12288 -0.011% This also appears to improve compiler performance (-0.15% geomean time/op, -1.20% geomean user time/op), but that could just be alignment effects. Compiler benchmarking hasn't been super reliably recently, and there's no particular reason to think this should speed up the compiler that much. Change-Id: I3d262c4f5cb80626a67a5c17285e2fa09f423c00 Reviewed-on: https://go-review.googlesource.com/c/go/+/227217 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
* cmd/link: fix data race in testDWARFCherry Zhang2020-04-061-1/+1
| | | | | | | | | | | | | | | Multiple instances of testDWARF run in parallel, with a shared backing store of the env input slice. Do modification of the environment locally, instead of on the shared slice. Fixes #38265. Change-Id: I22a7194c8cd55ba22c9d6c47ac47bf7e710a7027 Reviewed-on: https://go-review.googlesource.com/c/go/+/227342 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* cmd/go: report 'go get' errors for absolute paths outside module rootJay Conrod2020-04-062-12/+24
| | | | | | | | | | | | | | | 'go get' will now check absolute paths without wildcards the same way it checks relative paths. modload.DirImportPath may be used for both without converting path separators. Fixes #38038 Change-Id: I453299898ece58f3b5002a5e80021d6bfe815fdd Reviewed-on: https://go-review.googlesource.com/c/go/+/226857 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com> Reviewed-by: Michael Matloob <matloob@golang.org>
* cmd/compile: make logopt test skip if cannot create scratch directoryDavid Chase2020-04-061-1/+1
| | | | | | | | | Fixes #38251. Change-Id: Ic635843fb503484a1c9a230b0cca571393d3da5a Reviewed-on: https://go-review.googlesource.com/c/go/+/227339 Run-TryBot: David Chase <drchase@google.com> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
* cmd/compile: print block auxint value in HTML outputMichael Munday2020-04-062-9/+18
| | | | | | | | | | | | The auxint value was being printed in LongString() but not LongHTML(). Fixes #38250. Change-Id: I28e819feef8710f912bee424d1b900eb07f3abb8 Reviewed-on: https://go-review.googlesource.com/c/go/+/227160 Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
* cmd/compile: improve lowered moves and zeros for ppc64leLynn Boger2020-04-066-74/+799
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change includes the following: - Generate LXV/STXV sequences instead of LXVD2X/STXVD2X on power9. These instructions do not require an index register, which allows more loads and stores within a loop without initializing multiple index registers. The LoweredQuadXXX generate LXV/STXV. - Create LoweredMoveXXXShort and LoweredZeroXXXShort for short moves that don't generate loops, and therefore don't clobber the address registers or flags. - Use registers other than R3 and R4 to avoid conflicting with registers that have already been allocated to avoid unnecessary register moves. - Eliminate the use of R14 as scratch register and use R31 instead. - Add PCALIGN when the LoweredMoveXXX or LoweredZeroXXX generates a loop with more than 3 iterations. This performance opportunity was noticed in github.com/golang/snappy benchmarks. Results on power9: WordsDecode1e1 54.1ns ± 0% 53.8ns ± 0% -0.51% (p=0.029 n=4+4) WordsDecode1e2 287ns ± 0% 282ns ± 1% -1.83% (p=0.029 n=4+4) WordsDecode1e3 3.98µs ± 0% 3.64µs ± 0% -8.52% (p=0.029 n=4+4) WordsDecode1e4 66.9µs ± 0% 67.0µs ± 0% +0.20% (p=0.029 n=4+4) WordsDecode1e5 723µs ± 0% 723µs ± 0% -0.01% (p=0.200 n=4+4) WordsDecode1e6 7.21ms ± 0% 7.21ms ± 0% -0.02% (p=1.000 n=4+4) WordsEncode1e1 29.9ns ± 0% 29.4ns ± 0% -1.51% (p=0.029 n=4+4) WordsEncode1e2 2.12µs ± 0% 1.75µs ± 0% -17.70% (p=0.029 n=4+4) WordsEncode1e3 11.7µs ± 0% 11.2µs ± 0% -4.61% (p=0.029 n=4+4) WordsEncode1e4 119µs ± 0% 120µs ± 0% +0.36% (p=0.029 n=4+4) WordsEncode1e5 1.21ms ± 0% 1.22ms ± 0% +0.41% (p=0.029 n=4+4) WordsEncode1e6 12.0ms ± 0% 12.0ms ± 0% +0.57% (p=0.029 n=4+4) RandomEncode 286µs ± 0% 203µs ± 0% -28.82% (p=0.029 n=4+4) ExtendMatch 47.4µs ± 0% 47.0µs ± 0% -0.85% (p=0.029 n=4+4) Change-Id: Iecad3a39ae55280286e42760a5c9d5c1168f5858 Reviewed-on: https://go-review.googlesource.com/c/go/+/226539 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
* time, runtime: only call resetTimer from (*Timer).ResetIan Lance Taylor2020-04-062-9/+16
| | | | | | | | | | | Previously we stopped the timer and then reset it. With the current timer implementation that is no longer required. Change-Id: Ie7aba61ad53ce835f6fcd0b6bce7fe0a15b10e24 Reviewed-on: https://go-review.googlesource.com/c/go/+/227180 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com>
* cmd/compile: restore missing columns in ssa.htmlBradford Lamson-Scribner2020-04-052-4/+23
| | | | | | | | | | | | | | | If the final pass(es) are identical during ssa.html generation, they are persisted in-memory as "pendingPhases" but never get written as a column in the html. This change flushes those in-memory phases. Fixes #38242 Change-Id: Id13477dcbe7b419a818bb457861b2422ba5ef4bc Reviewed-on: https://go-review.googlesource.com/c/go/+/227182 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* cmd/compile: refactor around HTMLWriter removing logger in favor of FuncBradford Lamson-Scribner2020-04-053-20/+35
| | | | | | | | | | | | | | Replace HTMLWriter's Logger field with a *Func. Implement Fatalf method for HTMLWriter which gets the Frontend() from the Func and calls down into it's Fatalf method, passing the msg and args along. Replace remaining calls to the old Logger with calls to logging methods on the Func. Change-Id: I966342ef9997396f3416fb152fa52d60080ebecb Reviewed-on: https://go-review.googlesource.com/c/go/+/227277 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* cmd/compile: enable -d=checkptr even on windowsAlex Brainman2020-04-051-3/+2
| | | | | | | | | | | | | | | | CL 201783 enable -d=checkptr when -race or -msan is specified everywhere but windows. But, now that all unsafe pointer conversions in the standard library are fixed, enable -d=checkptr even on windows. Updates #34964 Updates #34972 Change-Id: Id912fa83b0d5b46c6f1c134c742fd94d2d185835 Reviewed-on: https://go-review.googlesource.com/c/go/+/227003 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
* cmd/dist: remove darwin/386, darwin/arm as valid portsBrad Fitzpatrick2020-04-044-7/+11
| | | | | | | | | | | | | | | | | | | | | | | This only removes the ability to build it, and removes it as a src/buildall.bash target (which uses go tool dist list). Now: $ go tool dist list | grep ^darwin darwin/amd64 darwin/arm64 After this, remaining is removing leftover port--specific code in the tree. Updates #37610 Updates #37611 Change-Id: I00f03b2355c2e152f75e57abd3063be243529d2d Reviewed-on: https://go-review.googlesource.com/c/go/+/226985 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Filippo Valsorda <filippo@golang.org>
* cmd/compile: add intrinsic HasCPUFeature for checking cpu featuresJosh Bleecher Snyder2020-04-047-6/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before using some CPU instructions, we must check for their presence. We use global variables in the runtime package to record features. Prior to this CL, we issued a regular memory load for these features. The downside to this is that, because it is a regular memory load, it cannot be hoisted out of loops or otherwise reordered with other loads. This CL introduces a new intrinsic just for checking cpu features. It still ends up resulting in a memory load, but that memory load can now be floated to the entry block and rematerialized as needed. One downside is that the regular load could be combined with the comparison into a CMPBconstload+NE. This new intrinsic cannot; it generates MOVB+TESTB+NE. (It is possible that MOVBQZX+TESTQ+NE would be better.) This CL does only amd64. It is easy to extend to other architectures. For the benchmark in #36196, on my machine, this offers a mild speedup. name old time/op new time/op delta FMA-8 1.39ns ± 6% 1.29ns ± 9% -7.19% (p=0.000 n=97+96) NonFMA-8 2.03ns ±11% 2.04ns ±12% ~ (p=0.618 n=99+98) Updates #15808 Updates #36196 Change-Id: I75e2fcfcf5a6df1bdb80657a7143bed69fca6deb Reviewed-on: https://go-review.googlesource.com/c/go/+/212360 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Giovanni Bajo <rasky@develer.com>
* cmd/compile: allow mid-stack inlining when there is a cycle of recursionDan Scales2020-04-032-18/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We still disallow inlining for an immediately-recursive function, but allow inlining if a function is in a recursion chain. If all functions in the recursion chain are simple, then we could inline forever down the recursion chain (eventually running out of stack on the compiler), so we add a map to keep track of the functions we have already inlined at a call site. We stop inlining when we reach a function that we have already inlined in the recursive chain. Of course, normally the inlining will have stopped earlier, because of the cost function. We could also limit the depth of inlining by a simple count (say, limit max inlining of 10 at any given site). Would that limit other opportunities too much? Added a test in test/inline.go. runtime.BenchmarkStackCopyNoCache() is also already a good test that triggers the check to stop inlining when we reach the start of the recursive chain again. For the bent benchmark suite, the performance improvement was mostly not statistically significant, but the geomean averaged out to: -0.68%. The text size increase was less than .1% for all bent benchmarks. The cmd/go text size increase was 0.02% and the cmd/compile text size increase was .1%. Fixes #29737 Change-Id: I892fa84bb07a947b3125ec8f25ed0e508bf2bdf5 Reviewed-on: https://go-review.googlesource.com/c/go/+/226818 Run-TryBot: Dan Scales <danscales@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
* crypto/sha512: optimize sha512 by removing function literalXiangdong Ji2020-04-031-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function 'block' called indirectly via function literal 'blockGeneric' prevents 'gc' performing an accurate escape analysis to its arguments, that will result in unnecessary heap object allocation and GC cost. Consistent performance improvement to sha512 and its dependency packages are observed on various arm64 servers if eliminating the function literal, especially for small-sized benchmarks. A72: ======================================================================================================== name old time/op new time/op delta pkg:crypto/sha512 goos:linux goarch:arm64 Hash8Bytes-64 1.61µs ± 0% 1.37µs ± 0% -14.99% (p=0.000 n=8+9) Hash1K-64 11.2µs ± 0% 10.9µs ± 0% -2.41% (p=0.000 n=8+10) Hash8K-64 77.8µs ± 0% 77.5µs ± 0% -0.44% (p=0.002 n=10+10) pkg:crypto/ecdsa goos:linux goarch:arm64 pkg:crypto/hmac goos:linux goarch:arm64 pkg:crypto/tls goos:linux goarch:arm64 HandshakeServer/RSA-64 920µs ± 0% 919µs ± 0% -0.10% (p=0.035 n=10+9) HandshakeServer/ECDHE-P256-RSA/TLSv13-64 1.32ms ± 1% 1.31ms ± 0% -0.24% (p=0.002 n=9+8) HandshakeServer/ECDHE-P256-RSA/TLSv12-64 1.25ms ± 0% 1.25ms ± 0% -0.07% (p=0.040 n=9+9) HandshakeServer/ECDHE-P256-ECDSA-P256/TLSv12-64 486µs ± 0% 485µs ± 0% -0.19% (p=0.000 n=9+10) HandshakeServer/ECDHE-X25519-ECDSA-P256/TLSv13-64 1.01ms ± 0% 1.01ms ± 0% -0.36% (p=0.000 n=9+10) HandshakeServer/ECDHE-X25519-ECDSA-P256/TLSv12-64 948µs ± 0% 947µs ± 0% -0.11% (p=0.001 n=10+10) HandshakeServer/ECDHE-P521-ECDSA-P521/TLSv12-64 42.1ms ± 3% 42.5ms ± 2% +0.77% (p=0.010 n=8+8) Throughput/MaxPacket/8MB/TLSv13-64 46.9ms ± 9% 42.8ms ± 2% -8.71% (p=0.000 n=10+9) Throughput/MaxPacket/64MB/TLSv13-64 385ms ±17% 332ms ±18% -13.64% (p=0.002 n=10+10) Throughput/DynamicPacket/2MB/TLSv12-64 39.1ms ±110% 17.2ms ±24% -55.97% (p=0.002 n=10+9) Throughput/DynamicPacket/4MB/TLSv12-64 32.2ms ±22% 27.2ms ±40% -15.69% (p=0.029 n=10+10) Throughput/DynamicPacket/4MB/TLSv13-64 27.4ms ±18% 24.9ms ±31% -9.12% (p=0.031 n=9+9) Throughput/DynamicPacket/8MB/TLSv12-64 61.8ms ±32% 43.9ms ±18% -28.93% (p=0.000 n=10+9) Throughput/DynamicPacket/8MB/TLSv13-64 49.4ms ±14% 45.7ms ±19% -7.44% (p=0.035 n=10+10) Throughput/DynamicPacket/32MB/TLSv13-64 181ms ±13% 163ms ± 7% -10.17% (p=0.001 n=9+10) Latency/MaxPacket/5000kbps/TLSv13-64 37.2ms ±52% 30.8ms ± 0% -17.21% (p=0.017 n=10+9) Latency/DynamicPacket/2000kbps/TLSv13-64 16.7ms ± 1% 16.6ms ± 0% -0.39% (p=0.002 n=8+10) pkg:crypto/ed25519 goos:linux goarch:arm64 KeyGeneration-64 139µs ± 0% 139µs ± 0% -0.45% (p=0.000 n=9+10) NewKeyFromSeed-64 139µs ± 0% 139µs ± 0% -0.34% (p=0.000 n=10+10) Signing-64 144µs ± 0% 143µs ± 0% -0.73% (p=0.000 n=10+10) Verification-64 410µs ± 0% 410µs ± 0% -0.09% (p=0.000 n=9+9) [Geo mean] 9.81ms 9.59ms -2.30% name old speed new speed delta pkg:crypto/sha512 goos:linux goarch:arm64 Hash8Bytes-64 4.96MB/s ± 0% 5.84MB/s ± 0% +17.60% (p=0.000 n=7+9) Hash1K-64 91.5MB/s ± 0% 93.7MB/s ± 0% +2.47% (p=0.000 n=8+10) Hash8K-64 105MB/s ± 0% 106MB/s ± 0% +0.45% (p=0.001 n=10+10) pkg:crypto/hmac goos:linux goarch:arm64 pkg:crypto/tls goos:linux goarch:arm64 Throughput/MaxPacket/8MB/TLSv13-64 179MB/s ± 9% 196MB/s ± 2% +9.31% (p=0.000 n=10+9) Throughput/MaxPacket/64MB/TLSv13-64 176MB/s ±20% 203MB/s ±16% +15.35% (p=0.002 n=10+10) Throughput/DynamicPacket/2MB/TLSv12-64 70.2MB/s ±82% 118.9MB/s ±45% +69.30% (p=0.005 n=10+10) Throughput/DynamicPacket/4MB/TLSv12-64 132MB/s ±19% 159MB/s ±31% +20.31% (p=0.029 n=10+10) Throughput/DynamicPacket/4MB/TLSv13-64 155MB/s ±16% 171MB/s ±24% +10.26% (p=0.031 n=9+9) Throughput/DynamicPacket/8MB/TLSv12-64 141MB/s ±37% 192MB/s ±15% +36.28% (p=0.000 n=10+9) Throughput/DynamicPacket/8MB/TLSv13-64 170MB/s ±12% 185MB/s ±17% +8.46% (p=0.035 n=10+10) Throughput/DynamicPacket/32MB/TLSv13-64 186MB/s ±12% 206MB/s ± 6% +10.96% (p=0.001 n=9+10) [Geo mean] 133MB/s 141MB/s +6.04% name old alloc/op new alloc/op delta pkg:crypto/ecdsa goos:linux goarch:arm64 SignP256-64 3.03kB ± 0% 2.67kB ± 1% -11.71% (p=0.000 n=10+9) pkg:crypto/ed25519 goos:linux goarch:arm64 NewKeyFromSeed-64 352B ± 0% 0B -100.00% (p=0.000 n=10+10) Signing-64 1.50kB ± 0% 0.45kB ± 0% -70.21% (p=0.000 n=10+10) [Geo mean] 3.39kB 4.08kB +20.24% name old allocs/op new allocs/op delta pkg:crypto/ecdsa goos:linux goarch:arm64 SignP256-64 34.0 ± 0% 32.0 ± 0% -5.88% (p=0.000 n=10+10) SignP384-64 14.5k ± 0% 14.5k ± 0% -0.12% (p=0.045 n=10+10) pkg:crypto/ed25519 goos:linux goarch:arm64 NewKeyFromSeed-64 2.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Signing-64 11.0 ± 0% 5.0 ± 0% -54.55% (p=0.000 n=10+10) [Geo mean] 35.7 53.6 +50.15% A57: ========================================================================================================= name old time/op new time/op delta pkg:crypto/sha512 goos:linux goarch:arm64 Hash8Bytes-8 1.93µs ± 0% 1.69µs ± 0% -12.37% (p=0.000 n=10+10) Hash1K-8 13.8µs ± 0% 13.5µs ± 0% -2.01% (p=0.000 n=10+10) Hash8K-8 96.1µs ± 0% 95.7µs ± 0% -0.35% (p=0.000 n=10+8) pkg:crypto/ecdsa goos:linux goarch:arm64 SignP256-8 14.9µs ± 4% 14.4µs ± 1% -2.84% (p=0.000 n=10+9) pkg:crypto/hmac goos:linux goarch:arm64 HMACSHA256_1K-8 1.87µs ± 0% 1.86µs ± 0% -0.55% (p=0.000 n=9+10) HMACSHA256_32-8 760ns ± 0% 756ns ± 0% -0.54% (p=0.001 n=10+10) pkg:crypto/tls goos:linux goarch:arm64 HandshakeServer/RSA-8 1.11ms ± 0% 1.12ms ± 0% +0.35% (p=0.001 n=9+10) HandshakeServer/ECDHE-P256-RSA/TLSv13-8 1.63ms ± 0% 1.63ms ± 0% -0.23% (p=0.004 n=10+9) HandshakeServer/ECDHE-P256-ECDSA-P256/TLSv13-8 694µs ± 0% 687µs ± 0% -0.96% (p=0.000 n=10+8) HandshakeServer/ECDHE-P256-ECDSA-P256/TLSv12-8 607µs ± 0% 601µs ± 0% -0.99% (p=0.000 n=9+9) HandshakeServer/ECDHE-X25519-ECDSA-P256/TLSv13-8 1.25ms ± 0% 1.25ms ± 0% -0.24% (p=0.015 n=10+10) HandshakeServer/ECDHE-X25519-ECDSA-P256/TLSv12-8 1.16ms ± 0% 1.16ms ± 0% -0.30% (p=0.000 n=8+10) Latency/MaxPacket/200kbps/TLSv12-8 697ms ± 0% 697ms ± 0% +0.01% (p=0.029 n=10+10) Latency/DynamicPacket/200kbps/TLSv13-8 140ms ± 0% 140ms ± 0% +0.04% (p=0.006 n=9+10) pkg:crypto/ed25519 goos:linux goarch:arm64 NewKeyFromSeed-8 168µs ± 0% 168µs ± 0% +0.04% (p=0.001 n=9+10) Signing-8 174µs ± 0% 173µs ± 0% -0.26% (p=0.000 n=10+10) Verification-8 495µs ± 0% 494µs ± 0% -0.10% (p=0.000 n=9+9) [Geo mean] 9.85ms 9.82ms -0.36% name old speed new speed delta pkg:crypto/sha512 goos:linux goarch:arm64 Hash8Bytes-8 4.15MB/s ± 0% 4.74MB/s ± 0% +14.11% (p=0.000 n=10+10) Hash1K-8 74.3MB/s ± 0% 75.8MB/s ± 0% +2.05% (p=0.000 n=10+10) Hash8K-8 85.3MB/s ± 0% 85.6MB/s ± 0% +0.35% (p=0.000 n=10+8) pkg:crypto/hmac goos:linux goarch:arm64 HMACSHA256_1K-8 549MB/s ± 0% 552MB/s ± 0% +0.56% (p=0.000 n=9+10) HMACSHA256_32-8 42.1MB/s ± 0% 42.3MB/s ± 1% +0.53% (p=0.001 n=10+10) pkg:crypto/tls goos:linux goarch:arm64 [Geo mean] 138MB/s 139MB/s +0.54% name old alloc/op new alloc/op delta pkg:crypto/ecdsa goos:linux goarch:arm64 SignP256-8 2.99kB ± 0% 2.64kB ± 0% -11.77% (p=0.000 n=10+10) pkg:crypto/ed25519 goos:linux goarch:arm64 NewKeyFromSeed-8 352B ± 0% 0B -100.00% (p=0.000 n=10+10) Signing-8 1.50kB ± 0% 0.45kB ± 0% -70.21% (p=0.000 n=10+10) [Geo mean] 3.34kB 4.01kB +20.04% name old allocs/op new allocs/op delta pkg:crypto/ecdsa goos:linux goarch:arm64 SignP256-8 34.0 ± 0% 32.0 ± 0% -5.88% (p=0.000 n=10+10) pkg:crypto/ed25519 goos:linux goarch:arm64 NewKeyFromSeed-8 2.00 ± 0% 0.00 -100.00% (p=0.000 n=10+10) Signing-8 11.0 ± 0% 5.0 ± 0% -54.55% (p=0.000 n=10+10) [Geo mean] 35.7 53.6 +50.17% Change-Id: Ibbda2d9bdff4eea4f611d4590abceb8764c44f2e Reviewed-on: https://go-review.googlesource.com/c/go/+/211617 Reviewed-by: Filippo Valsorda <filippo@golang.org> Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* flag: fix TestExitCode on Plan 9David du Colombier2020-04-031-0/+5
| | | | | | | | | | | | | | | | | | CL 221427 added TestExitCode. This test is failing on Plan 9 because ExitCode is always equal to 1 on error since Plan 9 use error strings. This change fixes TestExitCode by checking that ExitCode is equal to 1 on error instead of the specific value. Fixes #38237. Change-Id: Ie269722e731e275e5bfc51644c1fa6be76525f1f Reviewed-on: https://go-review.googlesource.com/c/go/+/227158 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
* cmd/go: report original module path in error parsing replaced go.modJay Conrod2020-04-033-1/+33
| | | | | | | | | | | | | | | | | | MVS reports an error when a go.mod file declares a module path that doesn't match the path it was required with. If the module is a replacement, its declared path may be the original path (preferred) or the replacement path. This CL makes the reported error a little more clear: the "required as" path should be the original required path, not the replacement path. Fixes #38220 Change-Id: I08b50a100679a447c8803cca1d1b32bc115ec1b1 Reviewed-on: https://go-review.googlesource.com/c/go/+/227097 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
* run.bat: check go.exe instead of goEgon Elbre2020-04-031-1/+1
| | | | | | | | | | Windows requires checking with the .exe extension. Change-Id: I8e2fe83df81b92f04967bafb28f8effde999f597 Reviewed-on: https://go-review.googlesource.com/c/go/+/227157 Reviewed-by: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
* cmd/compile: add logging for large (>= 128 byte) copiesDavid Chase2020-04-0320-66/+153
| | | | | | | | | | | | | | | | | For 1.15, unless someone really wants it in 1.14. A performance-sensitive user thought this would be useful, though "large" was not well-defined. If 128 is large, there are 139 static instances of "large" copies in the compiler itself. Includes test. Change-Id: I81f20c62da59d37072429f3a22c1809e6fb2946d Reviewed-on: https://go-review.googlesource.com/c/go/+/205066 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
* runtime: eliminate redundant load in Xchg and Xadd on arm64Xiangdong Ji2020-04-031-4/+4
| | | | | | | | | | | Loading arguments of Xchg(64) and Xadd(64) functions to registers could be done only once. Change-Id: Iaf0a695ec9c6a221dfa755855edb68c476978a5b Reviewed-on: https://go-review.googlesource.com/c/go/+/227001 Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
* cmd/link: in stack bound check, don't check a call repetitivelyCherry Zhang2020-04-031-2/+3
| | | | | | | | | | | | | In stack bound check pass, check a call once, not over and over again. Fix an accidental quadratic behavior... In particular, switching to the new linker caused MIPS builders noticeably slower. This CL fixes it. Change-Id: Idd00c79e80af6278652c92a1d9d7bb2d194e9490 Reviewed-on: https://go-review.googlesource.com/c/go/+/227078 Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Austin Clements <austin@google.com>
* cmd/internal/obj/mips: don't emit spurious CALLIND relocationsCherry Zhang2020-04-031-4/+6
| | | | | | | | | | | | | | | Generate a CALLIND relocation only for indirect calls, not for indirect jumps. In particular, the RET instruction is lowered to JMP (LR), an indirect jump, and occurs frequently. The large amount of spurious relocations causes the linker to do a lot of extra work. Change-Id: Ie0edc04609788f5a687fd00c22558c3f83867697 Reviewed-on: https://go-review.googlesource.com/c/go/+/227079 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: David Chase <drchase@google.com>
* cmd/link: write to temp directory in testCherry Zhang2020-04-031-3/+9
| | | | | | | | | | | | | In TestMMap, write to temporary directory, instead of the current directory (which may not be writeable). Fix linux-mips64le-mengzhuo builder. Change-Id: I06dc3266f125523568c543634079c447d91903bb Reviewed-on: https://go-review.googlesource.com/c/go/+/227077 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
* flag: exit 0 when -h or -help invoked but undefinedShang Jian Ding2020-04-032-1/+65
| | | | | | | | | | | | | | | | flag treats -h or -help as a special case to print a nice help message, but exit with a status code of 2. This update makes that status code 0. Fixes #37533 Change-Id: I7e0bd29944ce46607fb7cfc6740734f7444a151a GitHub-Last-Rev: 83f64d757bc3a9957c49caa5de74d05a96724771 GitHub-Pull-Request: golang/go#37530 Reviewed-on: https://go-review.googlesource.com/c/go/+/221427 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* runtime/race: update some .syso filesKeith Randall2020-04-036-5/+5
| | | | | | | | | | | | | | | | | | | | Update race detector syso files for some platforms. There's still 2 more to do, but they might take a while so I'm mailing the ones I have now. Note: some arm64 tests did not complete successfully due to out of memory errors, but I suspect the .syso is correct. Update #14481 Update #37485 (I think?) Update #37355 Change-Id: I7e7e707a1fd7574855a538ba89dc11acc999c760 Reviewed-on: https://go-review.googlesource.com/c/go/+/226981 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net/http: release callbacks after fetch promise completesDmitri Shuralyov2020-04-021-18/+17
| | | | | | | | | | | | | | | | | | | | | | When the request context was canceled, the Transport.RoundTrip method could return before the fetch promise resolved. This would cause the success and failure callback functions to get called after they've been released, which in turn prints a "call to released function" error to the console. Avoid that problem by releasing the callbacks after the fetch promise completes, by moving the release calls into the callbacks themselves. This way we can still return from the Transport.RoundTrip method as soon as the context is canceled, without waiting on the promise to resolve. If the AbortController is unavailable and it's not possible to abort the fetch operation, the promise may take a long time to resolve. For #38003. Change-Id: Ied1475e31dcba101b3326521b0cd653dbb345e1d Reviewed-on: https://go-review.googlesource.com/c/go/+/226204 Reviewed-by: Johan Brandhorst <johan.brandhorst@gmail.com> Reviewed-by: Richard Musiol <neelance@gmail.com>
* testing: add TB.TempDirBrad Fitzpatrick2020-04-026-7/+94
| | | | | | | | | | Fixes #35998 Change-Id: I87c6bf4e34e832be68862ca16ecfa6ea12048d31 Reviewed-on: https://go-review.googlesource.com/c/go/+/226877 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
* net: update ParseIP doc to say IPv4-mapped-IPv6 is supportedBrad Fitzpatrick2020-04-021-2/+2
| | | | | | Change-Id: I49a79c07081cd8f12a3ffef21fd02a9a622a7eb5 Reviewed-on: https://go-review.googlesource.com/c/go/+/226979 Reviewed-by: Ian Lance Taylor <iant@golang.org>
* cmd: merge branch 'dev.link' into masterCherry Zhang2020-04-02153-4318/+40239
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the dev.link branch we continued developing the new object file format support and the linker improvements described in https://golang.org/s/better-linker . The new object file is index-based and provides random access. The linker maps the object files into read-only memory, and accesses symbols on-demand using indices, as opposed to reading all object files sequentially into the heap with the old format. This work is not done yet. Currently we still convert back to the old in-memory representation half way through the link process, but only for symbols that are needed. At this point, we think it is ready to enable the new object files and new linker for early testing. Using the new object files and the new linker, it reduces the linker's memory usage by ~10% and wall-clock run time by ~5%, and more to come. Currently, both the old and new object file formats are supported. The new format and new linker are used by default. For feature gating, as a fallback, the old format and old linker can be used by setting the compiler/assembler/linker's -go115newobj flag to false. Note that the flag needs to be specified consistently to all compilations, i.e. -gcflags=all=-go115newobj=false -asmflags=all=-go115newobj=false -ldflags=all=-go115newobj=false In case we need to revert, we can set the flags default to false. CL 224626 is an example. cmd/oldlink is a full copy of the old linker. It is invoked if the old format is requested. This is a clean merge, as we already merged master branch to dev.link first. Change-Id: I8f081eef8c4621362f03ecbcb850d6262b5d3dc6
| * [dev.link] cmd/oldlink: update with recent changesCherry Zhang2020-04-022-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the old linker to bring in recent changes made on the master branch: CL 225397 and CL 220917. This brings cmd/oldlink to be in sync with commit aa4d92b8aab63c847ab077417b809694a2a6ea81. Change-Id: Ic386736fa30944dcb71c57096915381d3e6be82c Reviewed-on: https://go-review.googlesource.com/c/go/+/227028 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>
| * [dev.link] all: merge branch 'master' into dev.linkCherry Zhang2020-04-0295-6705/+4858
| |\ | | | | | | | | | | | | | | | | | | | | | | | | The only conflict is a modify-deletion conflict in cmd/link/internal/ld/link.go, where the old error reporter is deleted in the new linker. Ported to cmd/link/internal/ld/errors.go. Change-Id: I5c78f398ea95bc1d7e6579c84dd8252c9f2196b7
| * | [dev.link] cmd: support large function alignmentCherry Zhang2020-04-0212-40/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This ports CL 226997 to the dev.link branch. - The assembler part and old object file writing are unchanged. - Changes to cmd/link are applied to cmd/oldlink. - Add alignment field to new object files for the new linker. Change-Id: Id00f323ae5bdd86b2709a702ee28bcaa9ba962f8 Reviewed-on: https://go-review.googlesource.com/c/go/+/227025 Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/link: stop marking DWARF constant symbolsCherry Zhang2020-04-011-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DWARF constant symbols were always marked and converted to sym.Symbols when DWARF generation uses sym.Symbols. Now that the DWARF generation uses the loader, no need to force-mark them. Change-Id: Ia4032430697cfa901fb4b6d106a483973277ea0a Reviewed-on: https://go-review.googlesource.com/c/go/+/226803 Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org>
| * | [dev.link] cmd/internal/goobj2: remove old-style accessorsCherry Zhang2020-04-011-92/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we switched to new style accessors everywhere, remove the old ones. Keep goobj2.Sym, Reloc, and Aux for now, as they are still used on the writer side. Change-Id: I6f3f0d812ff591ea6f12cd0155232f160d53d453 Reviewed-on: https://go-review.googlesource.com/c/go/+/226802 Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/oldlink: remove testsCherry Zhang2020-04-0111-2862/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They are essentially duplicates of cmd/link tests. No need to test twice. Change-Id: I91fdc996f5e160631648ee63341c4e46bb6cc54d Reviewed-on: https://go-review.googlesource.com/c/go/+/226801 Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/oldlink: decouple from goobj2 packageCherry Zhang2020-04-011-746/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new object file support in the old linker should not be used. This is a minimal change that removes stuff from the old linker's loader package, so that it decouples from the goobj2 package, allowing the latter to evolve. Keep the change local in the loader package, so most of the old linker doesn't need to change. At this point I don't think we want to make significant changes to the old linker. Change-Id: I078c4cbb35dc4627c4b82f512a4aceec9b594925 Reviewed-on: https://go-review.googlesource.com/c/go/+/226800 Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/internal/goobj: use new style accessorsCherry Zhang2020-04-011-29/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already move to new style accessors in the linker. This will allow us to get rid of the read side of old style ones. Change-Id: Id0c171c5634a5977fe8a6f764cb0d48203993ab7 Reviewed-on: https://go-review.googlesource.com/c/go/+/226799 Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/internal/goobj2, cmd/link: add and use new Sym accessorsCherry Zhang2020-04-012-62/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Along the line with Reloc and Aux, use new-style accessors for the Sym type. They avoid reading unnecessary fields, and also look nicer (to me). Change-Id: Ie37c5149a6edb2184724b3dfa26952015e74c085 Reviewed-on: https://go-review.googlesource.com/c/go/+/226798 Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/internal/goobj2: change StringRef encoding for better localityCherry Zhang2020-04-011-30/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, StringRef is encoded as an offset pointing to { len, [len]byte }. This CL changes it to { len, offset }, where offset points the bytes. With the new format, reading a string header is just reading two adjacent uint32s, without accessing the string table. This should improve locality of object file reading. Change-Id: Iec30708f9d9adb2f0242db6c4767c0f8e730f4df Reviewed-on: https://go-review.googlesource.com/c/go/+/226797 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/link: fix mmapping OutBuf on windowsJeremy Faller2020-04-012-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We got the permissions wrong on the mmapped region. Change-Id: Ica6372fd9d9a787ab20a763e5785fb9fb34ff623 Reviewed-on: https://go-review.googlesource.com/c/go/+/226366 Run-TryBot: Jeremy Faller <jeremy@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
| * | [dev.link] cmd/link: fix end-of-block padding (again)Cherry Zhang2020-04-011-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure we never overrun the end address. Should fix AIX build. Change-Id: I9926387d4512ec8b4acc32b7f32cee2b2aca25b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/226718 Reviewed-by: Jeremy Faller <jeremy@golang.org>
| * | [dev.link] cmd/link: unify Relocs.Count and len(rs)Cherry Zhang2020-03-319-33/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Count field in Relocs type is always equal to len(rs). Unify them. Change-Id: Ic77288ea58b61a98482b218e051d81047d0ddd88 Reviewed-on: https://go-review.googlesource.com/c/go/+/226717 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
| * | [dev.link] cmd/link: store external relocations in Reloc2 formatCherry Zhang2020-03-316-161/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Store external relocations in (almost) the same format as the Go objects, so we can handle them more uniformly. There is a small speedup: (linking cmd/compile) Deadcode 67.8ms ± 3% 61.1ms ± 3% -9.94% (p=0.008 n=5+5) Dostkcheck 41.2ms ± 2% 38.8ms ± 3% -5.99% (p=0.008 n=5+5) Change-Id: I8616e10b26235904201d6c9465f5ae32a49c9949 Reviewed-on: https://go-review.googlesource.com/c/go/+/226365 Run-TryBot: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
| * | [dev.link] cmd/link: fix end-of-block paddingCherry Zhang2020-03-311-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure we write the entire address range we are asked to write, with no holes between the blocks or at the end. Should fix NetBSD build. Change-Id: I13b1f551377cbc4bcde3650417ac95cba62ff807 Reviewed-on: https://go-review.googlesource.com/c/go/+/226617 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>
| * | [dev.link] cmd/link: set attributes atomicallyCherry Zhang2020-03-311-24/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now concurrent relocsym may access symbols attributes concurrently, causing data race when using the race detector. I think it is still safe as we read/write on different bits, and not write the same symbol's attributes from multiple goroutines, so it will always reads the right value regardless whether the write happens before or after, as long as the memory model is not so insane. Use atomic accesses to appease the race detector. It doesn't seem to cost much, at least on x86. Change-Id: I2bfc3755ee59c87ed237d508f29d6172fa976392 Reviewed-on: https://go-review.googlesource.com/c/go/+/226368 Reviewed-by: Austin Clements <austin@google.com>
| * | [dev.link] cmd/link: make asmb parallel across all platformsJeremy Faller2020-03-3010-121/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Numbers for x86: Asmb 54.8ms ±15% 12.1ms ±28% -78.02% (p=0.000 n=10+10) TotalTime 545ms ± 3% 515ms ± 4% -5.42% (p=0.000 n=10+10) Change-Id: I8fc17f7ccdf83fbd70cf7d27b44f41f9db9c9922 Reviewed-on: https://go-review.googlesource.com/c/go/+/224419 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>
| * | [dev.link] cmd/link: parallelize asmb on amd64Jeremy Faller2020-03-309-59/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduces a parallel OutBuf implementation, and POC on amd64. Due to some of the weird behaviors I saw on MacOS (SIGBUS while calling msync), I will wait for feedback to port to other architectures. On my mac, sped up Asmb by ~78% for cmd/compile (below). Will likely have an appreciable speedup on kubelet benchmark. Asmb 39.1ms ±11% 8.5ms ±10% -78.17% (p=0.000 n=10+9) TotalTime 596ms ± 2% 577ms ± 8% -3.07% (p=0.034 n=8+10) Change-Id: Id2a2577c3f4da155d8dccc862897f43b941877ac Reviewed-on: https://go-review.googlesource.com/c/go/+/223742 Run-TryBot: Jeremy Faller <jeremy@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Than McIntosh <thanm@google.com>
| * | [dev.link] cmd/link: move the wavefront past addexport()Than McIntosh2020-03-303-13/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reorganize the linker phase ordering so that addexport() runs before loadlibfull. In previous CLs addexport() was changed to use loader APIs but then copy back its work into sym.Symbol, so this change removes the copying/shim code in question. Change-Id: I17314a90007909e6242ee00e26393f3e4a02cf25 Reviewed-on: https://go-review.googlesource.com/c/go/+/226362 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
| * | [dev.link] cmd/link: run setArchSyms earlierThan McIntosh2020-03-302-29/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add some new loader.Sym equivalents to the archSyms struct so that we can run setArchSyms earlier in the pipeline, and add a "mode" to setArchSyms to control whether it should create loader.Sym symbols or their *sym.Symbol equivalents. These change needed for a subsequent patch in which addexport() is run earlier as well Change-Id: I0475c9388c39f13e045dd4aa9c90eaec42624810 Reviewed-on: https://go-review.googlesource.com/c/go/+/226361 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>