1
0
mirror of https://github.com/golang/go synced 2024-11-06 08:36:14 -07:00
Commit Graph

42498 Commits

Author SHA1 Message Date
Cherry Zhang
8e2b5d3e71 [dev.link] cmd/link: make symbol's global index unique
Currently, when mapping symbol's local index to global index, for
duplicated and overwriting/overwritten symbols, each appearance
of the symbol gets a global index, with one being the "primary",
and others "redirect" to it through the overwrite map. Basically,
the local-global index mapping is one to one, with overwrite/
dedup happening in global index level.

This has a few drawbacks:
- All symbol accesses effectively need to query the overwrite
  map. This may hurt performance.
- For multi-level overwrites, (Y overwrites X, Z overwrites Y),
  this can get quite complicated, and we have to follow the
  redirection recursively.
- Failed to follow or to update the overwrite map leads to bugs.

In this CL, we change the index mapping mechanism so that each
symbol get a unique global index. Multiple appearances of the
same symbol get the same index. Now the local-global index
mapping is N to one. Overwrite/dedup happens directly in the
local-global mapping.

We keep both mapping directions in arrays. Each object carries
an array for its local-global mapping. The loader carries an
array mapping global index to the "primary" local index, which is
the one we should load from. This way, we can get rid of the
overwrite map, and index conversions are simply array accesses.

TODO: we still make reservation of the index space upfront, and
leave holes for dup symbols. Maybe get rid of the reservation and
holes.

Change-Id: Ia251489d5f2ff16a0b3156a71d141a70cdf03a4e
Reviewed-on: https://go-review.googlesource.com/c/go/+/217064
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-31 23:08:46 +00:00
Cherry Zhang
ee04d45b8f [dev.link] all: merge branch 'master' into dev.link
It has been a while we have not done this.

Merge conflict resolution:
- deleted/rewritten code modified on master
  - CL 214286, ported in CL 217317
    (cmd/internal/obj/objfile.go)
  - CL 210678, it already includes a fix to new code
    (cmd/link/internal/ld/deadcode.go)
  - CL 209317, applied in this CL
    (cmd/link/internal/loadelf/ldelf.go)

Change-Id: Ie927ea6a1d69ce49e8d03e56148cb2725e377876
2020-01-31 14:45:52 -05:00
Cherry Zhang
23c96e9bbd [dev.link] cmd/internal/obj: emit only '/' in DWARF file names
Port CL 214286 to new object files. This is in preparation of
merging master branch to dev.link.

Change-Id: I8cd93908a795c03b8c44df47f66728017c542f4a
Reviewed-on: https://go-review.googlesource.com/c/go/+/217317
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-31 19:38:01 +00:00
Cherry Zhang
b1f9f47982 [dev.link] cmd/link: fix payload pointer liveness
Currently, the symbol updater uses a pointer pointing to the
loader's payloads array. If the payloads slice grows (and moves),
the pointer may become stale and no longer point to the symbol's
actual payload. Specifically, consider

	sb, sym := l.MakeSymbolUpdater(...)
	// add a bunch of external symbols, which grows payload slice
	sb.SetType(t)
	l.SymType(sym) // may not return t

sb.SetType on line 3 may not have the desired effect, as
sb.extSymPayload may no longer point to the right payload. As a
result, the type we get on line 4 may be not the one we set.

Fix this by making the payload's address permanent. Once it is
allocated it will never move.

Change-Id: Iab190ea5aceb5c37f91d09ad4ffd458e881b03f4
Reviewed-on: https://go-review.googlesource.com/c/go/+/217063
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-31 17:41:52 +00:00
Cherry Zhang
af98efc545 [dev.link] cmd/link: correct overwrite logic
This was mistakenly changed during the refactor in  CL 201728.
Restore the old behavior.

Change-Id: I9991859e7587f5f567bbe86ae19dede904b3a399
Reviewed-on: https://go-review.googlesource.com/c/go/+/217062
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
2020-01-31 17:40:47 +00:00
Jean de Klerk
96002cd25c doc/go1.14: fix id attribute of Testing heading
Some tweaks based on comments from CL 216917.

Change-Id: I538ea0dfa947b53d5c4a7135c1aec912b0357083
Reviewed-on: https://go-review.googlesource.com/c/go/+/217121
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
2020-01-31 15:09:17 +00:00
Ian Lance Taylor
6c0545ab83 doc/go1.14: mention new method strconv.NumError.Unwrap
Updates #30322
Updates #36878

Change-Id: I8b33eb6a8fb7c0ecf365940a1c3ae88dc807ebcd
Reviewed-on: https://go-review.googlesource.com/c/go/+/217132
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2020-01-31 15:05:11 +00:00
Ian Lance Taylor
f2a4ab32b1 doc/go1.14: mention new field go/build.Context.Dir
Updates #34860
Updates #36168
Updates #36878

Change-Id: I484d7fea5d77d6dcd451d4fdffe0c450eed73636
Reviewed-on: https://go-review.googlesource.com/c/go/+/217124
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2020-01-31 15:04:07 +00:00
Robert Griesemer
6e592c2b6d go/types: unexport Checker.LookupFieldOrMethod
Implementation changes in go/types for #6977 required that internal
LookupFieldOrMethod calls had access to the current *Checker. In
order to make quick progress, I added a *Checker receiver to the
function LookupFieldOrMethod (thus making it a method), and added
a new function LookupFieldOrMethod. The plan was always to rename
that function (Checker.LookupFieldOrMethod) such that it wouldn't
be exported; with the obvious name being Checker.lookupFieldOrMethod.
But that name was already in use which is why I postponed the rename.
Eventually I forgot to clean it up. This CL fixes that with the
following renames:

Checker.lookupFieldOrMethod => Checker.rawLookupFieldOrMethod
Checker.LookupFieldOrMethod => Checker.lookupFieldOrMethod

Updates #6977.
Fixes #36916.

Change-Id: Icfafd0de9a19841ba5bd87142730fe7323204491
Reviewed-on: https://go-review.googlesource.com/c/go/+/217134
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-31 14:46:05 +00:00
Ian Lance Taylor
b7689f5aa3 doc/go1.14: mention new log.Lmsgprefix flag
Updates #32062
Updates #36878

Change-Id: I06c7c9a9d253177155a6d46d58231ce26e659757
Reviewed-on: https://go-review.googlesource.com/c/go/+/217126
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 06:02:00 +00:00
Ian Lance Taylor
0eb49f67d4 doc/go1.14: mime: .js files now text/javascript
Updates #32351
Updates #36878

Change-Id: I19f87430f4344dcc6664d8dd1b8adfc67660f099
Reviewed-on: https://go-review.googlesource.com/c/go/+/217122
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 06:00:05 +00:00
Ian Lance Taylor
6dc0e977d0 doc/go1.14: mention new math/bits functions Rem, Rem32, Rem64
Updates #28970
Updates #36878

Change-Id: I9676f50516dd5b32bd4e44be136fcb9f43776edd
Reviewed-on: https://go-review.googlesource.com/c/go/+/217127
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 05:56:18 +00:00
Ian Lance Taylor
400a5af19b doc/go1.14: mention new method mime/multipart.(*Reader).NextRawPart
Updates #29090
Updates #36878

Change-Id: I63f0eb583285d5c12f591cb704097cdf6a67b64f
Reviewed-on: https://go-review.googlesource.com/c/go/+/217128
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 05:53:58 +00:00
Ian Lance Taylor
862a57df5a doc/go1.14: mention update to Unicode 12
Updates #36878

Change-Id: Ia8441de8a04fead1f76c72f662bcb877e2265c3e
Reviewed-on: https://go-review.googlesource.com/c/go/+/217133
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 05:52:03 +00:00
Ian Lance Taylor
4fda21bce1 doc/go1.14: mention new field Transport.DialTLSContext
Updates #21526
Updates #36878

Change-Id: Ic3ae18d31eddb9df01241cbddcc3b7b750cfaa44
Reviewed-on: https://go-review.googlesource.com/c/go/+/217130
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 05:49:33 +00:00
Ian Lance Taylor
debc52038b doc/go1.14: mention net/http.Header.Values, net/textproto.MIMEHeader.Values
These methods are new in Go 1.14.

Updates #34799
Updates #36878

Change-Id: I063f5cb4638d7e0716e6ce2a8c3fffced51bbd34
Reviewed-on: https://go-review.googlesource.com/c/go/+/217129
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 05:49:11 +00:00
Ian Lance Taylor
f68577f294 doc/go1.14: mention new field net/http/httptest/Server.EnableHTTP2
Updates #34939
Updates #36878

Change-Id: Ifa9a17b5b16bfcfbfe1d113a2b66a63ea3a6b59c
Reviewed-on: https://go-review.googlesource.com/c/go/+/217131
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-31 05:44:03 +00:00
Ian Lance Taylor
817c5c4517 doc/go1.14: mention go/doc.NewFromFiles and associated new data fields
Updates #23864
Updates #36878

Change-Id: I6efdaafbe5207c625643f201a5931ad735941365
Reviewed-on: https://go-review.googlesource.com/c/go/+/217125
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
2020-01-31 02:45:04 +00:00
Keith Randall
25d0ffe603 doc: document new hash/maphash package
Update #36878
Update #28322

Change-Id: I793c7c4dbdd23fdecd715500e90b7cc0cbe4cea5
Reviewed-on: https://go-review.googlesource.com/c/go/+/217099
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-31 00:36:45 +00:00
Filippo Valsorda
b8dd33b2f6 cmd/go.mod: sync x/crypto with std
go get golang.org/x/crypto@v0.0.0-20200128174031-69ecbb4d6d5d
    go mod vendor
    git checkout -- vendor/golang.org/x/sys/unix/asm_linux_riscv64.s \
        vendor/golang.org/x/tools/go/analysis/passes/asmdecl/asmdecl.go

Updates #36851

Change-Id: I95c0584ede599f600da927a04f135fe64a85037e
Reviewed-on: https://go-review.googlesource.com/c/go/+/217118
Run-TryBot: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-30 22:33:02 +00:00
Robert Griesemer
9bb40ed8ec math/big: update comment on Int.GCD
Per the suggestion https://golang.org/cl/216200/2/doc/go1.14.html#423.

Updates #28878.

Change-Id: I654d2d114409624219a0041916f0a4030efc7573
Reviewed-on: https://go-review.googlesource.com/c/go/+/217104
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-30 20:37:01 +00:00
Robert Griesemer
68b55ab513 doc/go1.14: fix minor typo (update release notes)
Follow-up on https://golang.org/cl/216200/2/doc/go1.14.html#423 .

Updates #36878.

Change-Id: I693a9eb05c6f1f42721a92fda46a4f3449defa24
Reviewed-on: https://go-review.googlesource.com/c/go/+/217100
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-30 20:16:52 +00:00
Robert Griesemer
9d5ea44bec doc/go1.14: document overlapping interfaces change (update release notes)
Updates #6977.
Updates #36878.

Change-Id: I40594be85ee0a0d4b35bacc90104568d2b8a4761
Reviewed-on: https://go-review.googlesource.com/c/go/+/216997
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-30 19:31:23 +00:00
Jay Conrod
845a91dc49 doc/go1.14: edit "Go command" section, move zone CPU cap note
Minor edits to text on go command changes.

Also, moved a note about runtime respecting zone CPU caps from
Native Client section to Runtime section.

Change-Id: Ic21e59d7ffecb4b5676a841e7f3743203a82d266
Reviewed-on: https://go-review.googlesource.com/c/go/+/216878
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2020-01-30 17:38:38 +00:00
Hana Kim
0d34f5f09b doc/go1.14.html: describe the runtime/pprof change
golang.org/cl/204636
golang.org/cl/205097

Updates #36874

Change-Id: I773868fd027e9cc2187f0a738900f0fcb7711635
Reviewed-on: https://go-review.googlesource.com/c/go/+/216877
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-30 02:33:27 +00:00
Jean de Klerk
07957b794c doc/go1.14: edit "Go command" section, adding note about go test -v streaming
Change-Id: Ie88fe441521d60a4ba54ebb418860d0f71073387
Reviewed-on: https://go-review.googlesource.com/c/go/+/216917
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2020-01-29 23:17:30 +00:00
Bryan C. Mills
67fee6005d go/build: update TestImportDirNotExist to accept more detailed error strings
In CL 203820, we switched go/build to use the caller's working
directory for the main module (rather than srcDir), so that go/build
resolution now respects the requirements and replacements of the main
module. When the passed-in srcDir is empty, as of that CL we use "go
list" instead of falling back to in-process (GOPATH-mode) path lookup.

Unfortunately, that broke go/build.TestImportDirNotExist when
GO111MODULE=on: the test was looking for the specific error message
produced by the in-process lookup.

This change relaxes the test to accept the error message produced by
"go list" when srcDir is empty.

Updates #34769
Updates #34860
Updates #35734
Fixes #36867

Change-Id: Id0f7814a4b7dabe8917216eb013bb4eaee283648
Reviewed-on: https://go-review.googlesource.com/c/go/+/216817
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-29 19:54:12 +00:00
Joel Sing
a50c3ffbd4 cmd/internal/obj/riscv,cmd/link: shorten the riscv64 call sequence
Now that the other dependent offset has been identified, we can remove the
unnecessary ADDI instruction from the riscv64 call sequence (reducing it
to AUIPC+JALR, rather than the previous AUIPC+ADDI+JALR).

Change-Id: I348c4efb686f9f71ed1dd1d25fb9142a41230b0d
Reviewed-on: https://go-review.googlesource.com/c/go/+/216798
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-29 16:35:37 +00:00
Joel Sing
2e4f490b31 cmd/compile,cmd/link: fix and re-enable open-coded defers on riscv64
The R_CALLRISCV relocation marker is on the JALR instruction, however the actual
relocation is currently two instructions previous for the AUIPC+ADDI sequence.
Adjust the platform dependent offset accordingly and re-enable open-coded defers.

Fixes #36786.

Change-Id: I71597c193c447930fbe94ce44b7355e89ae877bb
Reviewed-on: https://go-review.googlesource.com/c/go/+/216797
Run-TryBot: Joel Sing <joel@sing.id.au>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-29 16:34:44 +00:00
Daniel Martí
1319bb959c doc: add the change to json.Compact in the 1.14 changelog
Fixes #36690.

Change-Id: Id4234ab9467270d51f0411375b71ece7f41269b2
Reviewed-on: https://go-review.googlesource.com/c/go/+/215817
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
2020-01-29 14:58:15 +00:00
Brad Fitzpatrick
566ebbc3ae doc/go1.14: document RISC-V support
Fixes #36708
Updates #27532

Change-Id: I9e3bb92d15825e2c4a505e1aea41b2897f18e0ff
Reviewed-on: https://go-review.googlesource.com/c/go/+/216757
Reviewed-by: Joel Sing <joel@sing.id.au>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2020-01-29 14:46:51 +00:00
Ian Lance Taylor
c436eadbc3 net/http: don't treat an alternate protocol as a known round tripper
As of CL 175857, the client code checks for known round tripper
implementations, and uses simpler cancellation code when it finds one.
However, this code was not considering the case of a request that uses
a user-defined protocol, where the user-defined protocol was
registered with the transport to use a different round tripper.
The effect was that round trippers that worked with earlier
releases would not see the expected cancellation semantics with tip.

Fixes #36820

Change-Id: I60e75b5d0badcfb9fde9d73a966ba1d3f7aa42b1
Reviewed-on: https://go-review.googlesource.com/c/go/+/216618
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-29 04:04:52 +00:00
Brad Fitzpatrick
a6701d81a0 cmd/dist: remove riscv64 from set of incomplete ports
Fixes #27532
Fixes #36853
Updates #28944

Change-Id: I4d0f212deb361c941ce7e5999e237a951c89a296
Reviewed-on: https://go-review.googlesource.com/c/go/+/216758
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Joel Sing <joel@sing.id.au>
2020-01-29 02:43:46 +00:00
Joel Sing
212c0bf24c test: disable the live test on riscv64
This test expects that open-coded defers are enabled, which is not currently
the case on riscv64.

Updates issue #27532 and #36786.

Change-Id: I94bb558c5b0734b4cfe5ae12873be81026009bcf
Reviewed-on: https://go-review.googlesource.com/c/go/+/216777
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-29 02:43:35 +00:00
Michael Anthony Knyszek
e7f9e17b79 runtime: ensure that searchAddr always refers to inUse memory
This change formalizes an assumption made by the page allocator, which
is that (*pageAlloc).searchAddr should never refer to memory that is not
represented by (*pageAlloc).inUse. The portion of address space covered
by (*pageAlloc).inUse reflects the parts of the summary arrays which are
guaranteed to mapped, and so looking at any summary which is not
reflected there may cause a segfault.

In fact, this can happen today. This change thus also removes a
micro-optimization which is the only case which may cause
(*pageAlloc).searchAddr to point outside of any region covered by
(*pageAlloc).inUse, and adds a test verifying that the current segfault
can no longer occur.

Change-Id: I98b534f0ffba8656d3bd6d782f6fc22549ddf1c2
Reviewed-on: https://go-review.googlesource.com/c/go/+/216697
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-28 22:08:43 +00:00
Dmitri Shuralyov
b13ce14c4a src/go.mod: import x/crypto/cryptobyte security fix for 32-bit archs
cryptobyte: fix panic due to malformed ASN.1 inputs on 32-bit archs

	When int is 32 bits wide (on 32-bit architectures like 386 and arm), an
	overflow could occur, causing a panic, due to malformed ASN.1 being
	passed to any of the ASN1 methods of String.

	Tested on linux/386 and darwin/amd64.

	This fixes CVE-2020-7919 and was found thanks to the Project Wycheproof
	test vectors.

	Change-Id: I8c9696a8bfad1b40ec877cd740dba3467d66ab54
	Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/645211
	Reviewed-by: Katie Hockman <katiehockman@google.com>
	Reviewed-by: Adam Langley <agl@google.com>
	Reviewed-on: https://go-review.googlesource.com/c/crypto/+/216677
	Run-TryBot: Katie Hockman <katie@golang.org>
	Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
	Reviewed-by: Filippo Valsorda <filippo@golang.org>
	TryBot-Result: Gobot Gobot <gobot@golang.org>

x/crypto/cryptobyte is used in crypto/x509 for parsing certificates.
Malformed certificates might cause a panic during parsing on 32-bit
architectures (like arm and 386).

Change-Id: I840feb54eba880dbb96780ef7adcade073c4c4e3
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/647741
Reviewed-by: Katie Hockman <katiehockman@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/216680
Reviewed-by: Katie Hockman <katie@golang.org>
2020-01-28 20:26:36 +00:00
Jeremy Faller
8896a6b8aa [dev.link] cmd/link: port xcoff to new loader syntax
Change-Id: I074dd726640f2bcf7aa50b5e10e0b3a278489cd7
Reviewed-on: https://go-review.googlesource.com/c/go/+/216038
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-28 18:26:28 +00:00
Jeremy Faller
76d0977745 [dev.link] cmd/link: remove flag FlagNewLdElf
No real reason to keep the old code around as the new stuff is working
just fine.

Change-Id: I5e886f8274344738663a0ead181c5d58d9f5a45f
Reviewed-on: https://go-review.googlesource.com/c/go/+/215997
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-28 16:26:14 +00:00
Jeremy Faller
4ad94a5db9 [dev.link] cmd/link: use new sym builders in macho loader
Change-Id: Ia055559d1eb12736d0bdd5a30103cd4b9788d36e
Reviewed-on: https://go-review.googlesource.com/c/go/+/215917
Run-TryBot: Jeremy Faller <jeremy@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-28 16:26:01 +00:00
Joel Sing
a858d15f11 cmd/compile: disable open-coded defers on riscv64
Open-coded defers are currently broken on riscv64 - disable them for the
time being. All of the standard package tests now pass on linux/riscv64.

Updates issue #27532 and #36786

Change-Id: I20fc25ce91dfad48be32409ba5c64ca9a6acef1d
Reviewed-on: https://go-review.googlesource.com/c/go/+/216517
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Dan Scales <danscales@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-28 02:40:44 +00:00
Joel Sing
d8e052667f cmd/internal/obj/riscv: use signed immediates for U-instructions
On RISCV64, the U-instructions (AUIPC and LUI) take 20 bits, append 12 bits
of zeros and sign extend to 64-bits. As such, the 20 bit immediate value is
signed not unsigned.

Updates #27532

Change-Id: I725215a1dc500106dbfdc0a4425f3c0b2a6f411e
Reviewed-on: https://go-review.googlesource.com/c/go/+/216257
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-28 02:39:28 +00:00
Joel Sing
8f14f33f96 cmd/compile/internal/ssa/gen: avoid importing internal riscv64 packages
Duplicate the register definitions and names to avoid importing the
cmd/internal/obj/riscv64 package. This makes it possible to build compiler rules
with a stable Go tool chain.

Fixes #36663

Change-Id: I09116a97bb037ca1bc00073306a82bb88862b1e9
Reviewed-on: https://go-review.googlesource.com/c/go/+/216518
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2020-01-28 02:21:26 +00:00
Jay Conrod
22f09ced52 doc/go1.14: remove TODO from Tools section of release notes
Change-Id: I682193eb06b55eb3e9392146579f57a928c728d0
Reviewed-on: https://go-review.googlesource.com/c/go/+/216598
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2020-01-27 23:23:00 +00:00
Jay Conrod
74d366f484 doc/go1.14: go command behavior with GO111MODULE=on outside modules
Hopefully this won't affect many people, but it's a substantial change
in behavior for a specific case, so it's probably worth mentioning.

Updates #32027

Change-Id: I61cd50e93d0199e94b011cc90150e072b6bb10ca
Reviewed-on: https://go-review.googlesource.com/c/go/+/216597
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-01-27 20:45:39 +00:00
Cherry Zhang
6fbdfe4804 cmd/compile: on PPC64, fold offset into some loads/stores only when offset is 4-aligned
On PPC64, MOVWload, MOVDload, and MOVDstore are assembled to a
"DS from" instruction which requiers the offset is a multiple of
4. Only fold offset to such instructions if it is a multiple of 4.

Fixes #36723.

"GOARCH=ppc64 GOOS=linux go build -gcflags=all=-d=ssa/check/on std cmd"
passes now.

Change-Id: I67f2a6ac02f0d33d470f68ff54936c289a4c765b
Reviewed-on: https://go-review.googlesource.com/c/go/+/216379
Reviewed-by: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
2020-01-27 16:13:58 +00:00
Bryan C. Mills
4615b39514 doc/go1.14: note that module support is ready for production use
The public proxy and checksum database launched with Go 1.13 have been
running smoothly, pkg.go.dev is serving module-aware documentation,
and in 1.14 we have improved the vendoring workflow and finished
Subversion support to reach parity with GOPATH mode for users of those
features, updated documentation (including the “How to Write Go Code”
intro document) and published blog posts describing common modes of
usage, and improved the migration path for existing v2+ modules by
making version resolution less aggressive about "+incompatible" major
versions.

We (always) have more fit-and-finish work to do, but at this point we
believe that module mode will provide a better user experience than
GOPATH mode for most users, including in production use.

Change-Id: I897e0a43e3aebe4c90553c414337a46bfc9c2bef
Reviewed-on: https://go-review.googlesource.com/c/go/+/216317
Reviewed-by: Jay Conrod <jayconrod@google.com>
Reviewed-by: Katie Hockman <katie@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
2020-01-27 14:34:16 +00:00
Bryan C. Mills
f652015a0a doc/go1.14: document the new GOINSECURE variable
Fixes #36746

Change-Id: Iab9eaceb743ee52c82e7645216a671362189a021
Reviewed-on: https://go-review.googlesource.com/c/go/+/216380
Reviewed-by: witchard <ben.witchard@gmail.com>
Reviewed-by: Russ Cox <rsc@golang.org>
2020-01-27 14:32:54 +00:00
Ian Lance Taylor
c333d07ebe strconv: stop describing Unicode graphic characters as non-ASCII
Fixes #36778

Change-Id: I3c4ce100fc219bda0ff1d7a086c2309ed695691d
Reviewed-on: https://go-review.googlesource.com/c/go/+/216478
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
2020-01-26 20:38:34 +00:00
Joel Sing
73d213708e cmd/vendor: provide riscv64 support in tools/go/analysis/passes/asmdecl
Manually add riscv64 support.

Currently being added via https://go-review.googlesource.com/c/tools/+/216337.

Updates #27532

Change-Id: I0e1f7c0eeca4e85ae588f427eff818bb7946a851
Reviewed-on: https://go-review.googlesource.com/c/go/+/216262
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-25 16:34:18 +00:00
Joel Sing
bcd50e4cd0 vendor: provide golang.org/x/sys/cpu/cpu_riscv64.go
Manually provide golang.org/x/sys/cpu/cpu_riscv64.go until such time
as this code can be updated, post release.

This already exists in x/sys/cpu via:

  https://go-review.googlesource.com/c/sys/+/206860

Update #27532

Change-Id: I57d598ef737642f9c3aa7b280c6c680477ae7633
Reviewed-on: https://go-review.googlesource.com/c/go/+/216261
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-01-25 16:31:46 +00:00