]> Cypherpunks.ru repositories - gostls13.git/commitdiff
all: REVERSE MERGE dev.boringcrypto (cdcb4b6) into master
authorRuss Cox <rsc@golang.org>
Tue, 3 May 2022 02:12:30 +0000 (22:12 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 3 May 2022 02:12:49 +0000 (22:12 -0400)
This commit is a REVERSE MERGE.
It merges dev.boringcrypto back into its parent branch, master.
This marks the end of development on dev.boringcrypto.

Manual Changes:
- git rm README.boringcrypto.md
- git rm -r misc/boring
- git rm src/cmd/internal/notsha256/sha256block_arm64.s
- git cherry-pick -n 5856aa74  # remove GOEXPERIMENT=boringcrypto forcing in cmd/dist

There are some minor cleanups like merging import statements
that I will apply in a follow-up CL.

Merge List:

+ 2022-04-29 cdcb4b6ef3 [dev.boringcrypto] cmd/compile: remove the awful boringcrypto kludge
+ 2022-04-29 e845f572ec [dev.boringcrypto] crypto/ecdsa, crypto/rsa: use boring.Cache
+ 2022-04-29 a840bf871e [dev.boringcrypto] crypto/internal/boring: add GC-aware cache
+ 2022-04-29 0184fe5ece [dev.boringcrypto] crypto/x509: remove VerifyOptions.IsBoring
+ 2022-04-29 9e9c7a0aec [dev.boringcrypto] crypto/..., go/build: align deps test with standard rules
+ 2022-04-29 0ec08283c8 [dev.boringcrypto] crypto/internal/boring: make SHA calls allocation-free
+ 2022-04-29 3cb10d14b7 [dev.boringcrypto] crypto/internal/boring: avoid allocation in big.Int conversion
+ 2022-04-29 509776be5d [dev.boringcrypto] cmd/dist: default to use of boringcrypto
+ 2022-04-29 f4c0f42f99 [dev.boringcrypto] all: add boringcrypto build tags
+ 2022-04-29 1f0547c4ec [dev.boringcrypto] cmd/go: pass dependency syso to cgo too
+ 2022-04-29 e5407501cb [dev.boringcrypto] cmd: use notsha256 instead of md5, sha1, sha256
+ 2022-04-29 fe006d6410 [dev.boringcrypto] cmd/internal/notsha256: add new package
+ 2022-04-27 ec7f5165dd [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-04-22 ca6fd39cf6 [dev.boringcrypto] misc/boring: skip long tests during build.release
+ 2022-04-21 19e4b10f2f [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-04-20 e07d63964b [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-04-13 1f11660f54 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2022-04-13 bc3e5d0ab7 [dev.boringcrypto] misc/boring: remove -trust and individual reviewers
+ 2022-04-05 4739b353bb [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-03-30 9d6ab825f6 [dev.boringcrypto] make.bash: disable GOEXPERIMENT when using bootstrap toolchain
+ 2022-03-30 d1405d7410 [dev.boringcrypto] crypto/internal/boring: update build instructions to use podman
+ 2022-03-29 50b8f490e1 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-03-15 0af0e19368 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2022-03-07 f492793839 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-03-07 768804dfdd [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2022-02-11 8521d1ea34 [dev.boringcrypto] misc/boring: use go install cmd@latest for installing command
+ 2022-02-11 b75258fdd8 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2022-02-08 74d25c624c [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-02-03 e14fee553a [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2022-01-14 d382493a20 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-12-09 069bbf5434 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-12-06 21fa0b2199 [dev.boringcrypto] crypto/internal/boring: add -pthread linker flag
+ 2021-12-03 a38b43e4ab [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-11-09 16215e5340 [dev.boringcrypto] cmd/compile: disable version test on boringcrypto
+ 2021-11-08 c9858c7bdc [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2021-11-05 ed07c49cb6 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2021-11-05 dc2658558d [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-10-28 69d5e469a4 [dev.boringcrypto] all: convert +build to //go:build lines in boring-specific files
+ 2021-10-08 2840ccbc05 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-10-08 114aa69932 [dev.boringcrypto] misc/boring: fix Docker Hub references
+ 2021-10-08 7d26add6d5 [dev.boringcrypto] misc/boring: publish to Artifact Registry
+ 2021-08-27 5ae200d526 [dev.boringcrypto] crypto/tls: permit P-521 in FIPS mode
+ 2021-08-26 083811d079 [dev.boringcrypto] crypto/tls: use correct config in TestBoringClientHello
+ 2021-08-16 c7e7ce5ec1 [dev.boringcrypto] all: merge commit 57c115e1 into dev.boringcrypto
+ 2021-08-10 1fb58d6cad [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-07-14 934db9f0d6 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-06-08 a890a4de30 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-05-13 ed1f812cef [dev.boringcrypto] all: merge commit 9d0819b27c (CL 314609) into dev.boringcrypto
+ 2021-05-10 ad1b6f3ee0 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-04-21 11061407d6 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-03-23 b397e0c028 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-03-15 128cecc70b [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-03-10 5e2f5a38c4 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-02-26 42089e72fd [dev.boringcrypto] api: add crypto/boring.Enabled
+ 2021-02-24 03cd666173 [dev.boringcrypto] all: merge master (5b76343) into dev.boringcrypto
+ 2021-02-17 0f210b75f9 [dev.boringcrypto] all: merge master (2f0da6d) into dev.boringcrypto
+ 2021-02-12 1aea1b199f [dev.boringcrypto] misc/boring: support codereview.cfg in merge.sh
+ 2021-02-07 0d34d85dee [dev.boringcrypto] crypto/internal/boring: remove .llvm_addrsig section
+ 2021-02-07 325e03a64f [dev.boringcrypto] all: add codereview.cfg
+ 2021-02-05 d4f73546c8 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-01-20 cf8ed7cca4 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2021-01-20 f22137d785 [dev.boringcrypto] misc/boring: add -trust and roland@ to merge.sh and release.sh
+ 2020-12-12 e5c7bd0efa [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-12-02 5934c434c1 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-12-01 dea96ada17 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-11-18 906d6e362b [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-11-18 95ceba18d3 [dev.boringcrypto] crypto/hmac: merge up to 2a206c7 and skip test
+ 2020-11-17 0985c1bd2d [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-11-16 af814af6e7 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-11-05 f42bd50779 [dev.boringcrypto] crypto/internal/boring: update BoringCrypto module to certificate 3678
+ 2020-10-19 ceda58bfd0 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-09-29 af85c47233 [dev.boringcrypto] misc/boring: bump version to b6
+ 2020-09-29 f9b86a6562 [dev.boringcrypto] go/build: satisfy the boringcrypto build tag
+ 2020-09-29 ef2b318974 [dev.boringcrypto] crypto/boring: expose boring.Enabled()
+ 2020-09-14 3782421230 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-08-18 6bbe47ccb6 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-07-21 6e6e0b73d6 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-07-09 d85ef2b979 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-07-09 a91ad4250c [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-06-10 5beb39baf8 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-05-07 dd98c0ca3f [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-05-07 a9d2e3abf7 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-05-07 c19c0a047b [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-05-07 36c94f8421 [dev.boringcrypto] crypto/internal/boring: reject short signatures in VerifyRSAPKCS1v15
+ 2020-05-07 ee159d2f35 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-04-08 e067ce5225 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2020-03-03 79284c2873 [dev.boringcrypto] crypto/internal/boring: make accesses to RSA types with finalizers safer
+ 2020-03-02 6c64b188a5 [dev.boringcrypto] crypto/internal/boring: update BoringCrypto module to certificate 3318
+ 2020-02-28 13355c78ff [dev.boringcrypto] misc/boring: add go1.14b4 to RELEASES file
+ 2020-02-28 4980c6b317 [dev.boringcrypto] misc/boring: x/build/cmd/release doesn't take subrepo flags anymore
+ 2020-02-28 601da81916 [dev.boringcrypto] misc/boring: make merge.sh and release.sh a little more robust
+ 2020-02-14 09bc5e8723 [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2020-02-06 f96dfe6b73 [dev.boringcrypto] misc/boring: add go1.13.7b4 and go1.12.16b4 releases to RELEASES file
+ 2020-02-05 2f9b2e75c4 [dev.boringcrypto] misc/docker: update Dockerfile to match recent Buster based golang images
+ 2020-02-05 527880d05c [dev.boringcrypto] misc/boring: update default CL reviewer to katie@golang.org
+ 2019-11-25 50ada481fb [dev.boringcrypto] misc/boring: add new releases to RELEASES file
+ 2019-11-20 6657395adf [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-11-20 ab0a649d44 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-11-19 62ce702c77 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-10-25 e8f14494a0 [dev.boringcrypto] misc/boring: add go1.13.3b4 and go1.12.12b4 to RELEASES file
+ 2019-10-17 988e4d832e [dev.boringcrypto] misc/boring: add go1.13.2b4 and go1.12.11b4 to RELEASES file
+ 2019-10-11 974fd1301a [dev.boringcrypto] misc/boring: publish to Docker Hub all releases, not only the latest
+ 2019-09-27 62ce8cd3ad [dev.boringcrypto] misc/boring: add go1.13.1b4 and go1.12.10b4 to RELEASES file
+ 2019-09-10 489d268683 [dev.boringcrypto] misc/boring: add Go+BoringCrypto 1.13b4 to RELEASES file
+ 2019-09-04 e0ee09095c [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-09-03 ff197f326f [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-08-21 5a1705286e [dev.boringcrypto] misc/boring: add go1.12.9b4 to RELEASES
+ 2019-08-15 1ebc594b3c [dev.boringcrypto] misc/boring: add go1.12.8b4 and go1.11.13b4 to RELEASES
+ 2019-08-13 9417029290 [dev.boringcrypto] misc/boring: remove download of releaselet.go in build.release
+ 2019-08-05 2691091a4a misc/boring: add Go 1.11.12b4 and 1.12.7b4 to RELEASES
+ 2019-07-19 6eccf6a6cd [dev.boringcrypto] misc/boring: add scripts to automate merges and releases
+ 2019-06-27 98188f3001 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-06-13 5c354e66d1 [dev.boringcrypto] misc/boring: add go1.12.6b4 and go1.11.11b4 releases
+ 2019-06-09 9bf9e7d4b2 [dev.boringcrypto] crypto: move crypto/internal/boring imports to reduce merge conflicts
+ 2019-06-05 324f8365be [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-05-28 e48f228c9b [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-05-14 42e353245c [dev.boringcrypto] misc/boring: add go1.12.5b4 release
+ 2019-03-29 211a13fd44 [dev.boringcrypto] misc/boring: add go1.11.6b4 to RELEASES
+ 2019-03-28 347af7f060 [dev.boringcrypto] misc/boring: add go1.12.1b4 and update build scripts
+ 2019-02-27 a10558f870 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-02-08 4ed8ad4d69 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2019-01-24 14c64dbc4a [dev.boringcrypto] misc/boring: add go1.10.8b4 and go1.11.5b4
+ 2018-12-15 3f9e53f346 [dev.boringcrypto] misc/boring: add go1.10.7b4 and go1.11.4b4 releases
+ 2018-12-14 92d975e906 [dev.boringcrypto] misc/boring: add go1.11.2b4 release
+ 2018-11-14 c524da4917 [dev.boringcrypto] crypto/tls: test for TLS 1.3 to be disabled in FIPS mode
+ 2018-11-14 bfd6d30118 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-14 0007017f96 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-14 3169778c15 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-14 ab37582eb0 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-14 e8b3500d5c [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-14 de153ac2a1 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-14 0cbb11c720 [dev.boringcrypto] cmd/compile: by default accept any language
+ 2018-11-13 11e916773e [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-11-13 af07f7734b [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-10-25 13bf5b80e8 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-10-15 623650b27a [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-10-01 36c789b1fd [dev.boringcrypto] misc/boring: add go1.10.4b4 and go1.11b4 releases
+ 2018-09-07 693875e3f2 [dev.boringcrypto] crypto/internal/boring: avoid an allocation in AES-GCM Seal and Open
+ 2018-09-06 4d1aa482b8 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-08-04 7eb1677c01 [dev.boringcrypto] crypto/internal/boring: fix aesCipher implementation of gcmAble
+ 2018-07-11 eaa3e94eb8 [dev.boringcrypto] misc/boring: add go1.9.7b4 and go1.10.3b4 releases
+ 2018-07-11 5f0402a26b [dev.boringcrypto] misc/boring: support build.release on macOS
+ 2018-07-03 77db076129 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-06-13 b77f5e4c85 [dev.boringcrypto] crypto/rsa: drop random source reading emulation
+ 2018-06-08 a4b7722ffa [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-05-29 18db93d7e6 [dev.boringcrypto] crypto/tls: restore AES-GCM priority when BoringCrypto is enabled
+ 2018-05-25 3d9a6ac709 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-05-18 019a994e32 [dev.boringcrypto] crypto/rsa: fix boringFakeRandomBlind to work with (*big.Int).ModInverse
+ 2018-05-17 a3f9ce3313 [dev.boringcrypto] all: merge master into dev.boringcrypto
+ 2018-02-09 528dad8c72 [dev.cryptoboring] misc/boring: update README for Bazel
+ 2018-02-06 c3d83ee31c [dev.boringcrypto] misc/boring: add go1.9.3b4 to RELEASES
+ 2017-12-13 f62a24349d [dev.boringcrypto] all: merge go1.10beta1 into dev.boringcrypto
+ 2017-12-06 3e52f22ece [dev.boringcrypto] crypto/internal/boring: add MarshalBinary/UnmarshalBinary to hashes
+ 2017-12-06 5379f7847f [dev.boringcrypto] all: merge master (more nearly Go 1.10 beta 1) into dev.boringcrypto
+ 2017-12-06 185e6094fd [dev.boringcrypto] all: merge master (nearly Go 1.10 beta 1) into dev.boringcrypto
+ 2017-11-20 c36033a379 [dev.boringcrypto] misc/boring: add go1.9.2b4 release
+ 2017-11-20 cda3c6f91d [dev.boringcrypto] all: merge go1.9.2 into dev.boringcrypto
+ 2017-10-25 2ea7d3461b [release-branch.go1.9] go1.9.2
+ 2017-10-25 d93cb46280 [release-branch.go1.9] runtime: use simple, more robust fastrandn
+ 2017-10-25 78952c06c5 [release-branch.go1.9] cmd/compile: fix sign-extension merging rules
+ 2017-10-25 79996e4a1d [release-branch.go1.9] cmd/compile: avoid generating large offsets
+ 2017-10-25 f36b12657c [release-branch.go1.9] runtime: in cpuProfile.addExtra, set p.lostExtra to 0 after flush
+ 2017-10-25 dffc9319f1 [release-branch.go1.9] cmd/cgo: support large unsigned macro again
+ 2017-10-25 33ce1682c7 [release-branch.go1.9] cmd/cgo: avoid using common names for sniffing
+ 2017-10-25 f69668e1d0 [release-branch.go1.9] os: skip TestPipeThreads as flaky for 1.9
+ 2017-10-25 9be38a15e4 [release-branch.go1.9] runtime: avoid monotonic time zero on systems with low-res timers
+ 2017-10-25 8bb333a9c0 [release-branch.go1.9] doc: document Go 1.9.2
+ 2017-10-25 0758d2b9da [release-branch.go1.9] cmd/go: clean up x.exe properly in TestImportMain
+ 2017-10-25 d487b15a61 [release-branch.go1.9] cmd/compile: omit ICE diagnostics after normal error messages
+ 2017-10-25 fd17253587 [release-branch.go1.9] database/sql: prevent race in driver by locking dc in Next
+ 2017-10-25 7e7cb30475 [release-branch.go1.9] internal/poll: only call SetFileCompletionNotificationModes for sockets
+ 2017-10-25 f259aed082 [release-branch.go1.9] internal/poll: do not call SetFileCompletionNotificationModes if it is broken
+ 2017-10-25 39d4bb9c0f [release-branch.go1.9] cmd/go: correct directory used in checkNestedVCS test
+ 2017-10-25 bfc22319aa [release-branch.go1.9] crypto/x509: reject intermediates with unknown critical extensions.
+ 2017-10-25 a1e34abfb3 [release-branch.go1.9] net/smtp: NewClient: set tls field to true when already using a TLS connection
+ 2017-10-25 7dadd8d517 [release-branch.go1.9] net: increase expected time to dial a closed port on all Darwin ports
+ 2017-10-25 d80889341c [release-branch.go1.9] cmd/compile: fix merge rules for panic calls
+ 2017-10-25 87b3a27839 [release-branch.go1.9] net: bump TestDialerDualStackFDLeak timeout on iOS
+ 2017-10-25 ebfcdef901 [release-branch.go1.9] runtime: make runtime.GC() trigger GC even if GOGC=off
+ 2017-10-25 0ab99b396d [release-branch.go1.9] cmd/compile: fix regression in PPC64.rules move zero
+ 2017-10-25 8d4279c111 [release-branch.go1.9] internal/poll: be explicit when using runtime netpoller
+ 2017-10-25 1ded8334f7 [release-branch.go1.9] cmd/compile/internal/syntax: fix source buffer refilling
+ 2017-10-25 ff8289f879 [release-branch.go1.9] reflect: fix pointer past-the-end in Call with zero-sized return value
+ 2017-10-25 bd34e74134 [release-branch.go1.9] log: fix data race on log.Output
+ 2017-10-25 0b55d8dbfc [release-branch.go1.9] cmd/compile: replace GOROOT in //line directives
+ 2017-10-25 5c48811aec [release-branch.go1.9] cmd/compile: limit the number of simultaneously opened files to avoid EMFILE/ENFILE errors
+ 2017-10-25 8c7fa95ad3 [release-branch.go1.9] expvar: make (*Map).Init clear existing keys
+ 2017-10-25 ccd5abc105 [release-branch.go1.9] cmd/compile: simplify "missing function body" error message
+ 2017-10-25 2e4358c960 [release-branch.go1.9] time: fix documentation of Round, Truncate behavior for d <= 0
+ 2017-10-25 c6388d381e [release-branch.go1.9] runtime: capture runtimeInitTime after nanotime is initialized
+ 2017-10-25 724638c9d8 [release-branch.go1.9] crypto/x509: skip TestSystemRoots
+ 2017-10-25 ed3b0d63b7 [release-branch.go1.9] internal/poll: add tests for Windows file and serial ports
+ 2017-10-04 93322a5b3d [release-branch.go1.9] doc: add missing "Minor revisions" header for 1.9
+ 2017-10-04 7f40c1214d [release-branch.go1.9] go1.9.1
+ 2017-10-04 598433b17a [release-branch.go1.9] doc: document go1.9.1 and go1.8.4
+ 2017-10-04 815cad3ed0 [release-branch.go1.9] doc/1.9: add mention of net/http.LocalAddrContextKey
+ 2017-10-04 1900d34a10 [release-branch.go1.9] net/smtp: fix PlainAuth to refuse to send passwords to non-TLS servers
+ 2017-10-04 a39bcecea6 [release-branch.go1.9] cmd/go: reject update of VCS inside VCS
+ 2017-10-04 d9e64910af [release-branch.go1.9] runtime: deflake TestPeriodicGC
+ 2017-09-28 adc1f587ac [dev.boringcrypto] misc/boring: add src releases
+ 2017-09-25 4038503543 [dev.boringcrypto] misc/boring: add go1.8.3b4
+ 2017-09-25 d724c60b4d [dev.boringcrypto] misc/boring: update README
+ 2017-09-22 70bada9db3 [dev.boringcrypto] misc/boring: add go1.9b4 release
+ 2017-09-22 e6ad24cde7 [dev.boringcrypto] all: merge go1.9 into dev.boringcrypto
+ 2017-09-22 431e071eed [dev.boringcrypto] misc/boring: add go1.9rc2b4 release
+ 2017-09-22 cc6e26b2e1 [dev.boringcrypto] api: add crypto/x509.VerifyOptions.IsBoring to make release builder happy
+ 2017-09-22 bac02b14b5 [dev.boringcrypto] misc/boring: update VERSION
+ 2017-09-22 3ed08db261 [dev.boringcrypto] crypto/tls/fipsonly: new package to force FIPS-allowed TLS settings
+ 2017-09-20 2ba76155cd [dev.boringcrypto] crypto/internal/boring: fix finalizer-induced crashes
+ 2017-09-18 32dc9b247f [dev.boringcrypto] cmd/go: exclude SysoFiles when using -msan
+ 2017-09-18 9f025cbdeb [dev.boringcrypto] crypto/internal/boring: fall back to standard crypto when using -msan
+ 2017-09-18 89ba9e3541 [dev.boringcrypto] crypto/aes: panic on invalid dst, src overlap
+ 2017-09-18 a929f3a04d [dev.boringcrypto] crypto/rsa: fix boring GenerateKey to set non-nil Precomputed.CRTValues
+ 2017-09-18 aa4a4a80ff [dev.boringcrypto] crypto/internal/boring: fix detection of tests to allow *.test and *_test
+ 2017-09-18 c9e2d9eb06 [dev.boringcrypto] crypto/rsa: add test for, fix observable reads from custom randomness
+ 2017-09-18 e773ea9aa3 [dev.boringcrypto] crypto/hmac: add test for Write/Sum after Sum
+ 2017-09-18 8fa8f42cb3 [dev.boringcrypto] crypto/internal/boring: allow hmac operations after Sum
+ 2017-09-18 07f6ce9d39 [dev.boringcrypto] crypto/internal/boring: handle RSA verification of short signatures
+ 2017-09-14 e8eec3fbdb [dev.boringcrypto] cmd/compile: refine BoringCrypto kludge
+ 2017-08-30 7b49445d0f [dev.boringcrypto] cmd/compile: hide new boring fields from reflection
+ 2017-08-30 81b9d733b0 [dev.boringcrypto] crypto/hmac: test empty key
+ 2017-08-30 f6358bdb6c [dev.boringcrypto] crypto/internal/boring: fix NewHMAC with empty key
+ 2017-08-30 9c307d8039 [dev.boringcrypto] crypto/internal/cipherhw: fix AESGCMSupport for BoringCrypto
+ 2017-08-26 f48a9fb815 [dev.boringcrypto] misc/boring: release packaging
+ 2017-08-25 94fb8224b2 [dev.boringcrypto] crypto/internal/boring: disable for android & non-cgo builds
+ 2017-08-25 7ff9fcafbd [dev.boringcrypto] crypto/internal/boring: clear "executable stack" bit from syso
+ 2017-08-24 c8aec4095e [release-branch.go1.9] go1.9
+ 2017-08-24 b8c9ef9f09 [release-branch.go1.9] doc: add go1.9 to golang.org/project
+ 2017-08-24 136f4a6b2a [release-branch.go1.9] doc: document go1.9
+ 2017-08-24 867be4c60c [release-branch.go1.9] doc/go1.9: fix typo in Moved GOROOT
+ 2017-08-24 d1351fbc31 [dev.boringcrypto] cmd/link: allow internal linking for crypto/internal/boring
+ 2017-08-24 991652dcf0 [dev.boringcrypto] cmd/link: work around DWARF symbol bug
+ 2017-08-22 9a4e7942ea [release-branch.go1.9] cmd/compile: remove gc.Sysfunc calls from 387 backend
+ 2017-08-22 ff38035a62 [release-branch.go1.9] doc/go1.9: fix typo in crypto/x509 of "Minor changes to the library".
+ 2017-08-19 7e9e3a06cb [dev.boringcrypto] crypto/rsa: use BoringCrypto
+ 2017-08-19 bc38fda367 [dev.boringcrypto] crypto/ecdsa: use unsafe.Pointer instead of atomic.Value
+ 2017-08-18 42046e8989 [release-branch.go1.9] runtime: fix false positive race in profile label reading
+ 2017-08-18 fbf7e1f295 [release-branch.go1.9] testing: don't fail all tests after racy test failure
+ 2017-08-18 21312a4b5e [release-branch.go1.9] cmd/dist: update deps.go for current dependencies
+ 2017-08-18 5927854f7d [release-branch.go1.9] cmd/compile: add rules handling unsigned div/mod by constant 1<<63
+ 2017-08-18 65717b2dca [release-branch.go1.9] runtime: fix usleep by correctly setting nanoseconds parameter for pselect6
+ 2017-08-17 b1f201e951 [dev.boringcrypto] crypto/ecdsa: use BoringCrypto
+ 2017-08-17 2efded1cd2 [dev.boringcrypto] crypto/tls: use TLS-specific AES-GCM mode if available
+ 2017-08-17 335a0f87bf [dev.boringcrypto] crypto/aes: implement TLS-specific AES-GCM mode from BoringCrypto
+ 2017-08-17 8d05ec9e58 [dev.boringcrypto] crypto/aes: use BoringCrypto
+ 2017-08-17 74e33c43e9 [dev.boringcrypto] crypto/hmac: use BoringCrypto
+ 2017-08-17 96d6718e4f [dev.boringcrypto] crypto/sha1,sha256,sha512: use BoringCrypto
+ 2017-08-17 e0e2bbdd00 [dev.boringcrypto] runtime/race: move TestRaceIssue5567 from sha1 to crc32
+ 2017-08-17 fe02ba30f1 [dev.boringcrypto] crypto/rand: use BoringCrypto
+ 2017-08-17 6e70f88f84 [dev.boringcrypto] crypto/internal/boring: add initial BoringCrypto access
+ 2017-08-16 dcdcc38440 [dev.boringcrypto] add README.boringcrypto.md, update VERSION
+ 2017-08-16 19b89a22df [dev.boringcrypto] cmd/link: implement R_X86_64_PC64 relocations
+ 2017-08-07 048c9cfaac [release-branch.go1.9] go1.9rc2
+ 2017-08-07 cff0de3da3 [release-branch.go1.9] all: merge master into release-branch.go1.9
+ 2017-07-31 196492a299 [release-branch.go1.9] runtime: map bitmap and spans during heap initialization
+ 2017-07-31 1a6d87d4bf [release-branch.go1.9] runtime: fall back to small mmaps if we fail to grow reservation
+ 2017-07-27 7320506bc5 [release-branch.go1.9] cmd/dist: skip moved GOROOT on Go's Windows builders when not sharding tests
+ 2017-07-24 65c6c88a94 [release-branch.go1.9] go1.9rc1
+ 2017-07-24 fbc9b49790 [release-branch.go1.9] cmd/compile: consider exported flag in namedata

Change-Id: I5344e8e4813a9a0900f6633499a3ddf22895a4d5

1  2 
src/cmd/cgo/main.go
src/cmd/compile/internal/typecheck/iexport.go
src/cmd/dist/buildtool.go
src/cmd/go/internal/work/exec.go
src/cmd/link/internal/ld/lib.go
src/go/build/build.go
src/go/build/deps_test.go

diff --combined src/cmd/cgo/main.go
index 21d895be26ac3969a248cb39de76cbaae6dd9efe,75d48c2ede20473603df71ba5ac2f0cb540dfdea..e3434598b2eb09f44d60c88b08337598917d96bf
@@@ -11,7 -11,6 +11,6 @@@
  package main
  
  import (
-       "crypto/md5"
        "flag"
        "fmt"
        "go/ast"
@@@ -28,6 -27,7 +27,7 @@@
        "strings"
  
        "cmd/internal/edit"
+       "cmd/internal/notsha256"
        "cmd/internal/objabi"
  )
  
@@@ -175,7 -175,6 +175,7 @@@ var ptrSizeMap = map[string]int64
        "amd64":    8,
        "arm":      4,
        "arm64":    8,
 +      "loong64":  8,
        "m68k":     4,
        "mips":     4,
        "mipsle":   4,
@@@ -201,7 -200,6 +201,7 @@@ var intSizeMap = map[string]int64
        "amd64":    8,
        "arm":      4,
        "arm64":    8,
 +      "loong64":  8,
        "m68k":     4,
        "mips":     4,
        "mipsle":   4,
@@@ -331,8 -329,8 +331,8 @@@ func main() 
        // we use to coordinate between gcc and ourselves.
        // We already put _cgo_ at the beginning, so the main
        // concern is other cgo wrappers for the same functions.
-       // Use the beginning of the md5 of the input to disambiguate.
-       h := md5.New()
+       // Use the beginning of the notsha256 of the input to disambiguate.
+       h := notsha256.New()
        io.WriteString(h, *importPath)
        fs := make([]*File, len(goFiles))
        for i, input := range goFiles {
index f273d26fb0d4ff19af0248c0ac17d4272a6c9fe1,9436aa55047a8c84c3c6b82daf69a5e876f7dfb6..bf721d6495e3a8cd044134aac08632dfa37b9b47
@@@ -236,7 -236,6 +236,6 @@@ package typechec
  
  import (
        "bytes"
-       "crypto/md5"
        "encoding/binary"
        "fmt"
        "go/constant"
        "cmd/compile/internal/ir"
        "cmd/compile/internal/types"
        "cmd/internal/goobj"
+       "cmd/internal/notsha256"
        "cmd/internal/src"
  )
  
@@@ -353,7 -353,7 +353,7 @@@ func WriteExports(out io.Writer, extens
        hdr.uint64(dataLen)
  
        // Flush output.
-       h := md5.New()
+       h := notsha256.New()
        wr := io.MultiWriter(out, h)
        io.Copy(wr, &hdr)
        io.Copy(wr, &p.strings)
@@@ -1590,7 -1590,11 +1590,7 @@@ func (w *exportWriter) stmt(n ir.Node) 
  
        case ir.OAS2, ir.OAS2DOTTYPE, ir.OAS2FUNC, ir.OAS2MAPR, ir.OAS2RECV:
                n := n.(*ir.AssignListStmt)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OAS2)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.stmtList(n.Init())
                w.exprList(n.Lhs)
@@@ -1755,7 -1759,9 +1755,7 @@@ func (w *exportWriter) expr(n ir.Node) 
                        // Indicate that this is not an OKEY entry.
                        w.bool(false)
                        w.qualifiedIdent(n)
 -                      if go117ExportTypes {
 -                              w.typ(n.Type())
 -                      }
 +                      w.typ(n.Type())
                        break
                }
  
                s := n.Sym()
                w.string(s.Name)
                w.pkg(s.Pkg)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        // case OPACK:
        //      should have been resolved by typechecking - handled by default case
  
        case ir.OPTRLIT:
                n := n.(*ir.AddrExpr)
 -              if go117ExportTypes {
 -                      w.op(ir.OPTRLIT)
 -              } else {
 -                      w.op(ir.OADDR)
 -              }
 +              w.op(ir.OPTRLIT)
                w.pos(n.Pos())
                w.expr(n.X)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OSTRUCTLIT:
                n := n.(*ir.CompLitExpr)
  
        case ir.OCOMPLIT, ir.OARRAYLIT, ir.OSLICELIT, ir.OMAPLIT:
                n := n.(*ir.CompLitExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OCOMPLIT)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.typ(n.Type())
                w.exprList(n.List)
 -              if go117ExportTypes && n.Op() == ir.OSLICELIT {
 +              if n.Op() == ir.OSLICELIT {
                        w.uint64(uint64(n.Len))
                }
        case ir.OKEY:
  
        case ir.OXDOT, ir.ODOT, ir.ODOTPTR, ir.ODOTINTER, ir.ODOTMETH, ir.OMETHVALUE, ir.OMETHEXPR:
                n := n.(*ir.SelectorExpr)
 -              if go117ExportTypes {
 -                      // For go117ExportTypes, we usually see all ops except
 -                      // OXDOT, but we can see OXDOT for generic functions.
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OXDOT)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
                w.exoticSelector(n.Sel)
 -              if go117ExportTypes {
 -                      w.exoticType(n.Type())
 -                      if n.Op() == ir.OXDOT {
 -                              // n.Selection for method references will be
 -                              // reconstructed during import.
 -                              w.bool(n.Selection != nil)
 -                      } else if n.Op() == ir.ODOT || n.Op() == ir.ODOTPTR || n.Op() == ir.ODOTINTER {
 -                              w.exoticField(n.Selection)
 -                      }
 -                      // n.Selection is not required for OMETHEXPR, ODOTMETH, and OMETHVALUE. It will
 -                      // be reconstructed during import.  n.Selection is computed during
 -                      // transformDot() for OXDOT.
 -              }
 +              w.exoticType(n.Type())
 +              if n.Op() == ir.OXDOT {
 +                      // n.Selection for method references will be
 +                      // reconstructed during import.
 +                      w.bool(n.Selection != nil)
 +              } else if n.Op() == ir.ODOT || n.Op() == ir.ODOTPTR || n.Op() == ir.ODOTINTER {
 +                      w.exoticField(n.Selection)
 +              }
 +              // n.Selection is not required for OMETHEXPR, ODOTMETH, and OMETHVALUE. It will
 +              // be reconstructed during import.  n.Selection is computed during
 +              // transformDot() for OXDOT.
  
        case ir.ODOTTYPE, ir.ODOTTYPE2:
                n := n.(*ir.TypeAssertExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.ODOTTYPE)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
                w.typ(n.Type())
  
        case ir.OINDEX, ir.OINDEXMAP:
                n := n.(*ir.IndexExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OINDEX)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
                w.expr(n.Index)
 -              if go117ExportTypes {
 -                      w.exoticType(n.Type())
 -                      if n.Op() == ir.OINDEXMAP {
 -                              w.bool(n.Assigned)
 -                      }
 +              w.exoticType(n.Type())
 +              if n.Op() == ir.OINDEXMAP {
 +                      w.bool(n.Assigned)
                }
  
        case ir.OSLICE, ir.OSLICESTR, ir.OSLICEARR:
                n := n.(*ir.SliceExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OSLICE)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
                w.exprsOrNil(n.Low, n.High)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OSLICE3, ir.OSLICE3ARR:
                n := n.(*ir.SliceExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OSLICE3)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
                w.exprsOrNil(n.Low, n.High)
                w.expr(n.Max)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OCOPY, ir.OCOMPLEX, ir.OUNSAFEADD, ir.OUNSAFESLICE:
                // treated like other builtin calls (see e.g., OREAL)
                n := n.(*ir.BinaryExpr)
                w.op(n.Op())
                w.pos(n.Pos())
 +              w.stmtList(n.Init())
                w.expr(n.X)
                w.expr(n.Y)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              } else {
 -                      w.op(ir.OEND)
 -              }
 +              w.typ(n.Type())
  
        case ir.OCONV, ir.OCONVIFACE, ir.OCONVIDATA, ir.OCONVNOP, ir.OBYTES2STR, ir.ORUNES2STR, ir.OSTR2BYTES, ir.OSTR2RUNES, ir.ORUNESTR, ir.OSLICE2ARRPTR:
                n := n.(*ir.ConvExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OCONV)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.typ(n.Type())
                w.expr(n.X)
                w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
 -              if go117ExportTypes {
 -                      if n.Op() != ir.OPANIC {
 -                              w.typ(n.Type())
 -                      }
 -              } else {
 -                      w.op(ir.OEND)
 +              if n.Op() != ir.OPANIC {
 +                      w.typ(n.Type())
                }
  
        case ir.OAPPEND, ir.ODELETE, ir.ORECOVER, ir.OPRINT, ir.OPRINTN:
                n := n.(*ir.CallExpr)
                w.op(n.Op())
                w.pos(n.Pos())
 +              w.stmtList(n.Init())
                w.exprList(n.Args) // emits terminating OEND
                // only append() calls may contain '...' arguments
                if n.Op() == ir.OAPPEND {
                } else if n.IsDDD {
                        base.Fatalf("exporter: unexpected '...' with %v call", n.Op())
                }
 -              if go117ExportTypes {
 -                      if n.Op() != ir.ODELETE && n.Op() != ir.OPRINT && n.Op() != ir.OPRINTN {
 -                              w.typ(n.Type())
 -                      }
 +              if n.Op() != ir.ODELETE && n.Op() != ir.OPRINT && n.Op() != ir.OPRINTN {
 +                      w.typ(n.Type())
                }
  
        case ir.OCALL, ir.OCALLFUNC, ir.OCALLMETH, ir.OCALLINTER, ir.OGETG:
                n := n.(*ir.CallExpr)
 -              if go117ExportTypes {
 -                      w.op(n.Op())
 -              } else {
 -                      w.op(ir.OCALL)
 -              }
 +              w.op(n.Op())
                w.pos(n.Pos())
                w.stmtList(n.Init())
                w.expr(n.X)
                w.exprList(n.Args)
                w.bool(n.IsDDD)
 -              if go117ExportTypes {
 -                      w.exoticType(n.Type())
 -              }
 +              w.exoticType(n.Type())
  
        case ir.OMAKEMAP, ir.OMAKECHAN, ir.OMAKESLICE:
                n := n.(*ir.MakeExpr)
                        // an argument. Don't serialize that argument here.
                        w.expr(n.Len)
                        w.op(ir.OEND)
 -              case n.Len != nil && go117ExportTypes:
 +              case n.Len != nil:
                        w.expr(n.Len)
                        w.op(ir.OEND)
                }
                w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OADDR:
                n := n.(*ir.AddrExpr)
                w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.ODEREF:
                n := n.(*ir.StarExpr)
                w.op(n.Op())
                w.pos(n.Pos())
                w.expr(n.X)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OSEND:
                n := n.(*ir.SendStmt)
                w.pos(n.Pos())
                w.expr(n.X)
                w.expr(n.Y)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OANDAND, ir.OOROR:
                n := n.(*ir.LogicalExpr)
                w.pos(n.Pos())
                w.expr(n.X)
                w.expr(n.Y)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OADDSTR:
                n := n.(*ir.AddStringExpr)
                w.op(ir.OADDSTR)
                w.pos(n.Pos())
                w.exprList(n.List)
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.ODCLCONST:
                // if exporting, DCLCONST should just be removed as its usage
                for _, targ := range n.Targs {
                        w.typ(targ.Type())
                }
 -              if go117ExportTypes {
 -                      w.typ(n.Type())
 -              }
 +              w.typ(n.Type())
  
        case ir.OSELRECV2:
                n := n.(*ir.AssignListStmt)
@@@ -2215,5 -2295,15 +2215,5 @@@ func (w *intWriter) uint64(x uint64) 
        w.Write(buf[:n])
  }
  
 -// If go117ExportTypes is true, then we write type information when
 -// exporting function bodies, so those function bodies don't need to
 -// be re-typechecked on import.
 -// This flag adds some other info to the serialized stream as well
 -// which was previously recomputed during typechecking, like
 -// specializing opcodes (e.g. OXDOT to ODOTPTR) and ancillary
 -// information (e.g. length field for OSLICELIT).
 -const go117ExportTypes = true
 -const Go117ExportTypes = go117ExportTypes
 -
  // The name used for dictionary parameters or local variables.
  const LocalDictName = ".dict"
index 8afa7f7867e80e48d16e4fb6cde189eaede3e488,3161e3fa75736cb7f3838208b09f2da54399abce..f1f3d50b6f073b3f1d5984ce28bfb70bc5563bfc
@@@ -44,6 -44,7 +44,7 @@@ var bootstrapDirs = []string
        "cmd/internal/edit",
        "cmd/internal/gcprog",
        "cmd/internal/goobj",
+       "cmd/internal/notsha256",
        "cmd/internal/obj/...",
        "cmd/internal/objabi",
        "cmd/internal/pkgpath",
@@@ -87,8 -88,6 +88,8 @@@ var ignorePrefixes = []string
  var ignoreSuffixes = []string{
        "_arm64.s",
        "_arm64.go",
 +      "_loong64.s",
 +      "_loong64.go",
        "_riscv64.s",
        "_riscv64.go",
        "_wasm.s",
@@@ -310,6 -309,8 +311,6 @@@ func bootstrapFixImports(srcFile string
                if strings.HasPrefix(line, `import "`) || strings.HasPrefix(line, `import . "`) ||
                        inBlock && (strings.HasPrefix(line, "\t\"") || strings.HasPrefix(line, "\t. \"") || strings.HasPrefix(line, "\texec \"")) {
                        line = strings.Replace(line, `"cmd/`, `"bootstrap/cmd/`, -1)
 -                      // During bootstrap, must use plain os/exec.
 -                      line = strings.Replace(line, `exec "internal/execabs"`, `"os/exec"`, -1)
                        for _, dir := range bootstrapDirs {
                                if strings.HasPrefix(dir, "cmd/") {
                                        continue
index 7f5fb774ea049fb860aa6a9d497c6271d893b853,6ecd4dcf2cf60a0f5173b9d7c683d82deb9499f7..15b9e1ef45ca41391d7d2196193e904312f45d5e
@@@ -12,16 -12,17 +12,17 @@@ import 
        "encoding/json"
        "errors"
        "fmt"
 -      exec "internal/execabs"
        "internal/lazyregexp"
        "io"
        "io/fs"
        "log"
        "math/rand"
        "os"
 +      "os/exec"
        "path/filepath"
        "regexp"
        "runtime"
+       "sort"
        "strconv"
        "strings"
        "sync"
@@@ -2654,8 -2655,6 +2655,8 @@@ func (b *Builder) gccArchArgs() []strin
                } else if cfg.GOMIPS == "softfloat" {
                        return append(args, "-msoft-float")
                }
 +      case "loong64":
 +              return []string{"-mabi=lp64d"}
        case "ppc64":
                if cfg.Goos == "aix" {
                        return []string{"-maix64"}
@@@ -2993,7 -2992,26 +2994,26 @@@ func (b *Builder) dynimport(a *Action, 
                return err
        }
  
-       linkobj := str.StringList(ofile, outObj, mkAbsFiles(p.Dir, p.SysoFiles))
+       // Gather .syso files from this package and all (transitive) dependencies.
+       var syso []string
+       seen := make(map[*Action]bool)
+       var gatherSyso func(*Action)
+       gatherSyso = func(a1 *Action) {
+               if seen[a1] {
+                       return
+               }
+               seen[a1] = true
+               if p1 := a1.Package; p1 != nil {
+                       syso = append(syso, mkAbsFiles(p1.Dir, p1.SysoFiles)...)
+               }
+               for _, a2 := range a1.Deps {
+                       gatherSyso(a2)
+               }
+       }
+       gatherSyso(a)
+       sort.Strings(syso)
+       str.Uniq(&syso)
+       linkobj := str.StringList(ofile, outObj, syso)
        dynobj := objdir + "_cgo_.o"
  
        ldflags := cgoLDFLAGS
index 4aefa9991dfc2a738341006fdd9e93f0d152eab8,680f509ec57ac06305fc066459312ed82c00cf90..04b2556ea1ecb6ef76d95ea37530c5a8ab336232
@@@ -34,6 -34,7 +34,7 @@@ import 
        "bytes"
        "cmd/internal/bio"
        "cmd/internal/goobj"
+       "cmd/internal/notsha256"
        "cmd/internal/objabi"
        "cmd/internal/sys"
        "cmd/link/internal/loadelf"
        "cmd/link/internal/loadpe"
        "cmd/link/internal/loadxcoff"
        "cmd/link/internal/sym"
-       "crypto/sha1"
        "debug/elf"
        "debug/macho"
        "encoding/base64"
        "encoding/binary"
        "fmt"
        "internal/buildcfg"
 -      exec "internal/execabs"
        "io"
        "io/ioutil"
        "log"
        "os"
 +      "os/exec"
        "path/filepath"
        "runtime"
        "strings"
@@@ -929,7 -929,7 +929,7 @@@ func typeSymbolMangle(name string) stri
        if len(name) <= 14 && !strings.Contains(name, "@") { // Issue 19529
                return name
        }
-       hash := sha1.Sum([]byte(name))
+       hash := notsha256.Sum256([]byte(name))
        prefix := "type."
        if name[5] == '.' {
                prefix = "type.."
@@@ -1059,6 -1059,8 +1059,8 @@@ var hostobj []Hostob
  // These packages can use internal linking mode.
  // Others trigger external mode.
  var internalpkg = []string{
+       "crypto/internal/boring",
+       "crypto/internal/boring/syso",
        "crypto/x509",
        "net",
        "os/user",
diff --combined src/go/build/build.go
index cf8886c7871e0e2fe36d359282b5bce5d8caf0b1,b373feab3316b6d938c2665ccdb113cd9bee692a..836e279d924f2798bf46080eeda104a34380e955
@@@ -13,13 -13,13 +13,13 @@@ import 
        "go/doc"
        "go/token"
        "internal/buildcfg"
 -      exec "internal/execabs"
        "internal/goroot"
        "internal/goversion"
        "io"
        "io/fs"
        "io/ioutil"
        "os"
 +      "os/exec"
        pathpkg "path"
        "path/filepath"
        "runtime"
@@@ -1876,6 -1876,7 +1876,7 @@@ func (ctxt *Context) eval(x constraint.
  //    cgo (if cgo is enabled)
  //    $GOOS
  //    $GOARCH
+ //    boringcrypto
  //    ctxt.Compiler
  //    linux (if GOOS = android)
  //    solaris (if GOOS = illumos)
@@@ -1906,6 -1907,9 +1907,9 @@@ func (ctxt *Context) matchTag(name stri
        if name == "unix" && unixOS[ctxt.GOOS] {
                return true
        }
+       if name == "boringcrypto" {
+               name = "goexperiment.boringcrypto" // boringcrypto is an old name for goexperiment.boringcrypto
+       }
  
        // other tags
        for _, tag := range ctxt.BuildTags {
index 8e24ca937b43ab3ee21117b4163645209942b4f0,91220a88bbad45164b6d280c81a4eb9269d7cc88..8519b82059274b1e0e85e5e2fedffee2db9288c6
@@@ -203,10 -203,15 +203,10 @@@ var depsRules = 
  
        log !< FMT;
  
 -      OS, FMT
 -      < internal/execabs;
 -
 -      OS, internal/execabs
 -      < internal/goroot;
 -
        # Misc packages needing only FMT.
        FMT
        < html,
 +        internal/goroot,
          mime/quotedprintable,
          net/internal/socktest,
          net/url,
        NET, log
        < net/mail;
  
+       NONE < crypto/internal/boring/sig, crypto/internal/boring/syso;
+       sync/atomic < crypto/internal/boring/fipstls;
+       crypto/internal/boring/sig, crypto/internal/boring/fipstls < crypto/tls/fipsonly;
        # CRYPTO is core crypto algorithms - no cgo, fmt, net.
        # Unfortunately, stuck with reflect via encoding/binary.
-       encoding/binary, golang.org/x/sys/cpu, hash
+       crypto/internal/boring/sig,
+       crypto/internal/boring/syso,
+       encoding/binary,
+       golang.org/x/sys/cpu,
+       hash
        < crypto
        < crypto/subtle
        < crypto/internal/subtle
        < crypto/ed25519/internal/edwards25519/field, golang.org/x/crypto/curve25519/internal/field
        < crypto/ed25519/internal/edwards25519
        < crypto/cipher
+       < crypto/internal/boring
+       < crypto/boring
        < crypto/aes, crypto/des, crypto/hmac, crypto/md5, crypto/rc4,
          crypto/sha1, crypto/sha256, crypto/sha512
        < CRYPTO;
  
        # CRYPTO-MATH is core bignum-based crypto - no cgo, net; fmt now ok.
        CRYPTO, FMT, math/big, embed
+       < crypto/internal/boring/bbig
        < crypto/internal/randutil
        < crypto/rand
        < crypto/ed25519
        < golang.org/x/crypto/chacha20poly1305
        < golang.org/x/crypto/hkdf
        < crypto/x509/internal/macos
-       < crypto/x509/pkix
+       < crypto/x509/pkix;
+       crypto/internal/boring/fipstls, crypto/x509/pkix
        < crypto/x509
        < crypto/tls;
  
        # crypto-aware packages
  
-       CRYPTO, DEBUG, go/build, go/types, text/scanner
+       DEBUG, go/build, go/types, text/scanner, crypto/md5
        < internal/pkgbits
        < go/internal/gcimporter, go/internal/gccgoimporter, go/internal/srcimporter
        < go/importer;
@@@ -636,6 -654,9 +649,9 @@@ func findImports(pkg string) ([]string
        }
        var imports []string
        var haveImport = map[string]bool{}
+       if pkg == "crypto/internal/boring" {
+               haveImport["C"] = true // kludge: prevent C from appearing in crypto/internal/boring imports
+       }
        fset := token.NewFileSet()
        for _, file := range files {
                name := file.Name()