Brad Fitzpatrick [Wed, 14 Jun 2017 18:06:32 +0000 (18:06 +0000)]
A+C: automated update
Add Adam Bender (corporate CLA for Google Inc.)
Add Ahmet Alp Balkan (corporate CLA for Google Inc.)
Add Aishraj Dahal (individual CLA)
Add Alexey Neganov (individual CLA)
Add Andrew Benton (individual CLA)
Add Bartosz Grzybowski (individual CLA)
Add Ben Shi (individual CLA)
Add Brandon Bennett (corporate CLA for Facebook, Inc.)
Add Brian Starke (individual CLA)
Add Bulat Gaifullin (individual CLA)
Add Carl Henrik Lunde (individual CLA)
Add Carlisia Campos (individual CLA)
Add Carlo Alberto Ferraris (individual CLA)
Add Carolyn Van Slyck (individual CLA)
Add Chew Choon Keat (individual CLA)
Add Chris Biscardi (individual CLA)
Add Damien Lespiau (corporate CLA for Intel Corporation)
Add David NewHamlet (individual CLA)
Add Dieter Plaetinck (corporate CLA for RainTank)
Add Dominic Green (individual CLA)
Add Eitan Adler (individual CLA)
Add Evgeniy Polyakov (individual CLA)
Add Ewan Valentine (individual CLA)
Add Fangming Fang (corporate CLA for ARM Ltd.)
Add Felipe Oliveira (individual CLA)
Add Filip Gruszczyński (individual CLA)
Add Gengliang Wang (individual CLA)
Add George Gkirtsou (individual CLA)
Add Gregory Man (individual CLA)
Add Hauke Löffler (individual CLA)
Add Heschi Kreinick (corporate CLA for Google Inc.)
Add Hongfei Tan (individual CLA)
Add Hugues Bruant (individual CLA)
Add Ibrahim AshShohail (individual CLA)
Add James Neve (individual CLA)
Add James Smith (individual CLA)
Add Jamie Stackhouse (individual CLA)
Add Jan Berktold (individual CLA)
Add Jeff Johnson (corporate CLA for Google Inc.)
Add Joe Richey (corporate CLA for Google Inc.)
Add Johan Brandhorst (individual CLA)
Add Jonathan Stacks (individual CLA)
Add Jordan Krage (individual CLA)
Add Josselin Costanzi (individual CLA)
Add Joël Stemmer (corporate CLA for Google Inc.)
Add Julio Montes (corporate CLA for Intel Corporation)
Add Kamil Chmielewski (individual CLA)
Add Karoly Negyesi (individual CLA)
Add Keiji Yoshida (individual CLA)
Add Kirill Smelkov (corporate CLA for Nexedi)
Add Koichi Shiraishi (individual CLA)
Add Kris Nova (individual CLA)
Add Kyrylo Silin (individual CLA)
Add Lars Jeppesen (individual CLA)
Add Lars Wiegman (individual CLA)
Add Laurie Clark-Michalek (individual CLA)
Add Lion Yang (individual CLA)
Add Lorenzo Masini (individual CLA)
Add Lucas Clemente (corporate CLA for Google Inc.)
Add Marcelo E. Magallon (individual CLA)
Add Mark Adams (individual CLA)
Add Mark Harrison (corporate CLA for Google Inc.)
Add Mark Ryan (corporate CLA for Intel Corporation)
Add Martin Lindhe (individual CLA)
Add Marwan Sulaiman (individual CLA)
Add Matt Blair (individual CLA)
Add Matt Harden (individual CLA)
Add Matt Strong (individual CLA)
Add Mike Wiacek (corporate CLA for Google Inc.)
Add Milutin Jovanović (individual CLA)
Add Monis Khan (corporate CLA for Red Hat, Inc.)
Add Mostyn Bramley-Moore (individual CLA)
Add Mura Li (individual CLA)
Add Máté Gulyás (individual CLA)
Add Nathan Caza (individual CLA)
Add Nicholas Maniscalco (individual CLA)
Add Nick Kubala (corporate CLA for Google Inc.)
Add Nick Miyake (individual CLA)
Add Niklas Schnelle (individual CLA)
Add Patrick Pelletier (individual CLA)
Add Paul Jolly (individual CLA)
Add Paulo Flabiano Smorigo (corporate CLA for IBM)
Add Peter Nguyen (individual CLA)
Add Pravendra Singh (individual CLA)
Add Raymond Kazlauskas (individual CLA)
Add Remi Gillig (individual CLA)
Add Sam Boyer (individual CLA)
Add Sean Chittenden (corporate CLA for Joyent, Inc.)
Add Sean Christopherson (corporate CLA for Intel Corporation)
Add Shintaro Kaneko (individual CLA)
Add Takuto Ikuta (corporate CLA for Google Inc.)
Add Thomas Bonfort (individual CLA)
Add Toshiki Shima (individual CLA)
Add Trey Roessig (individual CLA)
Add Wade Simmons (individual CLA)
Add Wei Xiao (corporate CLA for ARM Ltd.)
Add Weichao Tang (individual CLA)
Add Will Storey (individual CLA)
Add Wu Yunzhou (individual CLA)
Add Xu Fee (individual CLA)
Add Zach Bintliff (individual CLA)
Add Zak (individual CLA)
Add Zellyn Hunter (corporate CLA for Square, Inc.)
Add Максим Федосеев (individual CLA)
Add 张嵩 (individual CLA)
Updates #12042
Change-Id: I43922a9489828e519e480f8fc1abc92863e0abcc
Reviewed-on: https://go-review.googlesource.com/45770 Reviewed-by: Ian Lance Taylor <iant@golang.org>
thoeni [Thu, 1 Dec 2016 21:57:39 +0000 (21:57 +0000)]
encoding/json: don't marshal unexported embedded fields of non struct type
Marshal must process unexported embedded fields of struct type,
looking for exported fields in those structs. However, it must
not process unexported embedded fields of non-struct type.
For example, consider:
type t1 struct {
X int
}
type t2 int
type T struct {
t1
t2
}
When considering T, Marshal must process t1 to find t1.X.
Marshal must not process t2, but it was. Fix that.
Brad Fitzpatrick [Wed, 14 Jun 2017 06:16:49 +0000 (06:16 +0000)]
sync: make another attempt at clarifying RWMutex double RLock rules
Updates #15418 (the original bug, fixed by https://golang.org/cl/23570)
Fixes #19460 (round two)
Change-Id: Iac4447daabb56e3b470046c489c22d588c20163e
Reviewed-on: https://go-review.googlesource.com/45697 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Brad Fitzpatrick [Wed, 14 Jun 2017 06:37:55 +0000 (06:37 +0000)]
time: unify the Time.Equals vs == pitfall documentation
Fixes #19510 (good details therein)
Change-Id: Id28b66d91435d839fd79eeed486527cc77257c12
Reviewed-on: https://go-review.googlesource.com/45698 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Ian Lance Taylor [Thu, 25 May 2017 22:12:54 +0000 (15:12 -0700)]
cmd/cgo: match note following error in compiler errors
With current GCC a macro that refers to another macro can report an
error on the macro definition line, with a note on the use.
When cgo is trying to decide which line an error refers to,
it is looking at the uses. So if we see an error on a line that we
don't recognize followed by a note on a line that we do recognize,
treat the note as an error.
Fixes #20125.
Change-Id: I389cd0eb7d56ad2d54bef70e278d9f76c4d36448
Reviewed-on: https://go-review.googlesource.com/44290
Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Hiroshi Ioka <hirochachacha@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Samuel Tan [Thu, 11 May 2017 23:56:14 +0000 (16:56 -0700)]
html/template: only search identifier nodes for predefined escapers
Predefined escapers (i.e. "html" and "urlquery") should only occur in
Identifier nodes, and never in Field or Chain nodes, since these are
global functions that return string values (see inline comments for more
details). Therefore, skip Chain and Field nodes when searching for
predefined escapers in template pipelines.
Also, make a non-functional change two existing test cases to avoid
giving the impression that it is valid to reference a field of a
predefined escaper.
Fixes #20323
Change-Id: I34f722f443c778699fcdd575dc3e0fd1fd6f2eb3
Reviewed-on: https://go-review.googlesource.com/43296 Reviewed-by: Samuel Tan <samueltan@google.com> Reviewed-by: Mike Samuel <mikesamuel@gmail.com> Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Austin Clements [Wed, 14 Jun 2017 15:07:24 +0000 (11:07 -0400)]
runtime: record mutex event before readying
Currently, semrelease1 readies the next waiter before recording a
mutex event. However, if the next waiter is expecting to look at the
mutex profile, as is the case in TestMutexProfile, this may delay
recording the event too much.
Swap the order of these operations so semrelease1 records the mutex
event before readying the next waiter. This also means readying the
next waiter is the very last thing semrelease1 does, which seems
appropriate.
Lynn Boger [Thu, 8 Jun 2017 12:26:19 +0000 (08:26 -0400)]
cmd/link: implement trampolines for ppc64le with ext linking
When using golang on ppc64le there have been issues
when building executables that generate extremely large text
sections. This is due to the call instruction and the limitation
on the offset field, which is smaller than most platforms. If the
size of the call target offset is too big for the offset field in
the call instruction, then link errors can occur.
The original solution to this problem in golang was to split the
text section when it became too large, allowing the external (GNU)
linker to insert the necessary stub to handle the long call. That
worked fine until the another size limit for the program size was hit,
where a plt_branch was created instead of a long branch. In that case
the plt_branch code sequence expects r2 to contain the address of the
TOC, but when golang creates dynamic executables by default
(-buildmode=exe) r2 does not always contain the address of the TOC
and as a result when building programs that reach this extremely
large size, a runtime SEGV or SIGILL can occur due to branching to a bad
address.
When using internal linking, trampolines are generated to handle the
long calls but the text sections are not split. With this change,
text sections will still be split approrpriately with external linking
but if the buildmode being used does not maintain r2 as the TOC
addresses, then trampolines will be created for those calls.
Ian Lance Taylor [Tue, 13 Jun 2017 05:36:03 +0000 (22:36 -0700)]
runtime, syscall: reset signal handlers to default in child
Block all signals during a fork. In the parent process, after the
fork, restore the signal mask. In the child process, reset all
currently handled signals to the default handler, and then restore the
signal mask.
The effect of this is that the child will be operating using the same
signal regime as the program it is about to exec, as exec resets all
non-ignored signals to the default, and preserves the signal mask.
We do this so that in the case of a signal sent to the process group,
the child process will not try to run a signal handler while in the
precarious state after a fork.
Fixes #18600.
Change-Id: I9f39aaa3884035908d687ee323c975f349d5faaa
Reviewed-on: https://go-review.googlesource.com/45471
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
Alan Donovan [Fri, 16 Dec 2016 18:44:14 +0000 (13:44 -0500)]
go/token: use fine-grained locking in FileSet
Before, all accesses to the lines and infos tables of each File were
serialized by the lock of the owning FileSet, causing parsers running
in parallel to contend. Now, each File has its own mutex.
This fixes a data race in (*File).PositionFor, which used to call
f.position then f.unpack without holding the mutex's lock.
Brad Fitzpatrick [Tue, 13 Jun 2017 20:24:43 +0000 (20:24 +0000)]
doc: add more Go 1.9 notes
Updates #20587
Change-Id: I7effe922242db45f3ce74882d07511aaaac2f634
Reviewed-on: https://go-review.googlesource.com/45613 Reviewed-by: Ian Lance Taylor <iant@golang.org>
I was surprised to see readvarint show up in a cpu profile.
Use a few simple optimizations to speed up stack copying:
* Avoid making a copy of the cache.entries array or any of its elements.
* Use a shift instead of a signed division in stackmapdata.
* Change readvarint to return the number of bytes consumed
rather than an updated slice.
* Make some minor optimizations to readvarint to help the compiler.
* Avoid called readvarint when the value fits in a single byte.
The first and last optimizations are the most significant,
although they all contribute a little.
Add a benchmark for stack copying that includes lots of different
functions in a recursive loop, to bust the cache.
This might speed up other runtime operations as well;
I only benchmarked stack copying.
name old time/op new time/op delta
StackCopy-8 96.4ms ± 2% 82.7ms ± 1% -14.24% (p=0.000 n=20+19)
StackCopyNoCache-8 167ms ± 1% 131ms ± 1% -21.58% (p=0.000 n=20+20)
Austin Clements [Tue, 13 Jun 2017 15:14:43 +0000 (11:14 -0400)]
runtime: move pdesc into p
There are currently two arrays indexed by P ID: allp and pdesc.
Consolidate these by moving the pdesc fields into type p so they can
be indexed off allp along with all other per-P state.
Austin Clements [Tue, 13 Jun 2017 20:19:16 +0000 (16:19 -0400)]
runtime: increase MaxGomaxprocs to 1024
Currently MaxGomaxprocs is 256. The previous CL saved enough per-P
static space that we can quadruple MaxGomaxprocs (and hence the static
size of allp) and still come out ahead.
This is safe for Go 1.9. In Go 1.10 we'll eliminate the hard-coded
limit entirely.
Pravendra Singh [Tue, 13 Jun 2017 16:43:07 +0000 (22:13 +0530)]
reflect: prevent structs with invalid field name
According to the language spec, a struct field name should
be an identifier.
identifier = letter { letter | unicode_digit } .
letter = unicode_letter | "_" .
Implements a function 'isValidFieldName(fieldName string) bool'.
To check if the field name is a valid identifier or not.
It will panic if the field name is invalid.
It uses the non-exported function implementation 'isLetter'
from the package 'scanner', used to parse an identifier.
Emmanuel Odeke [Sun, 28 May 2017 00:25:31 +0000 (18:25 -0600)]
net/http: fix application/ogg sniff signature
I accidentally set the wrong pattern mask as
* []byte("\x4F\x67\x67\x53\x00") --> "OggS", the byte pattern itself.
instead of
* []byte("\xFF\xFF\xFF\xFF\xFF")
which was a copy-paste error.
The correct pattern is described at
https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern
which I was using as a reference but I mistyped.
Robert Griesemer [Tue, 13 Jun 2017 20:05:33 +0000 (13:05 -0700)]
cmd/go: adjust regexp that cleans cgo-related errors
The compiler now also prints column information - make sure we use
the correct regexp for compiler error cleanups. Accept both, error
positions with columns and without, since column printing may be
disabled with -gcflags=-C.
Fixes #20628.
Change-Id: I46dc921dd5c29d7b8172cd19a3df57951f60d889
Reviewed-on: https://go-review.googlesource.com/45612
Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Brad Fitzpatrick [Tue, 13 Jun 2017 18:46:28 +0000 (18:46 +0000)]
doc: flesh out some more Go 1.9 package notes
Change-Id: Ib6e2b858fcb15ea95fa8cfcba3bfac4e210605fe
Reviewed-on: https://go-review.googlesource.com/45610 Reviewed-by: Alberto Donizetti <alb.donizetti@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Ben Shi [Mon, 12 Jun 2017 03:42:55 +0000 (03:42 +0000)]
cmd/internal/obj/arm: fix MOVW to/from FPSR
"MOVW FPSR, g" should be assembled to 0xeef1aa10, but actually
0xee30a110 (RFS). "MOVW g, FPSR" should be 0xeee1aa10, but actually
0xee20a110 (WFS). They should be updated to VFP forms, since the ARM
back end doesn't support non-VFP floating points.
The patch fixes them and adds more assembly encoding tests.
Daniel Theophanes [Sun, 11 Jun 2017 05:02:53 +0000 (22:02 -0700)]
database/sql: prevent race on Rows close with Tx Rollback
In addition to adding a guard to the Rows close, add a var
in the fakeConn that gets read and written to on each
operation, simulating writing or reading from the server.
TestConcurrency/TxStmt* tests have been commented out
as they now fail after checking for races on the fakeConn.
See issue #20646 for more information.
Austin Clements [Fri, 9 Jun 2017 19:46:08 +0000 (15:46 -0400)]
runtime: YIELD in procyield on ARM
ARM currently does not use a hardware yield instruction in the spin
loop in procyield because the YIELD instruction was only added in
ARMv6K. However, it appears earlier ARM chips will interpret the YIELD
encoding as an effective NOP (specifically an MSR instruction that
ultimately has no effect on the CPSR register).
Hence, use YIELD in procyield on ARM since it should be, at worst,
harmless.
Meir Fischer [Sun, 4 Jun 2017 04:29:40 +0000 (00:29 -0400)]
testing: show in-progress tests upon SIGINT
Because of parallel tests, which have stalled executions, the RUN
output of a test can be much earlier than its completion output resulting
in hard-to-read verbose output.
The tests are displayed in the order in which the output shows
that they began, to make it easy to line up with the "RUN" output.
Similarly, the definitions of when tests begin and complete is
determined by when RUN and FAIL/SKIP/PASS are output since the
focus of this code is on enhancing readability.
Fixes #19397
Change-Id: I4d0ca3fd268b620484e7a190117f79a33b3dc461
Reviewed-on: https://go-review.googlesource.com/44352
Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Brad Fitzpatrick [Thu, 8 Jun 2017 21:43:54 +0000 (21:43 +0000)]
net/http: remove invalid checks of Request.Proto* for outgoing requests
The net/http package has long documented that Request.ProtoMajor and
Request.ProtoMinor are ignored for outgoing requests (HTTP/1.1 or
HTTP/2 is always used, never HTTP/1.0). There was one part in the code
that was actually checking 1.0 vs 1.1, but it appears to have been
harmless. Remove it.
Fixes #18407
Change-Id: I362ed6c47ca2de7a2fbca917ed3e866273cfe41f
Reviewed-on: https://go-review.googlesource.com/45155
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Alex Brainman [Thu, 8 Jun 2017 05:56:53 +0000 (15:56 +1000)]
syscall: make windows Exit call runtime.exit
Both runtime.exit and syscall.Exit call Windows ExitProcess.
But recently (CL 34616) runtime.exit was changed to ignore
Windows CreateThread errors if ExitProcess is called.
Brad Fitzpatrick [Wed, 7 Jun 2017 21:01:48 +0000 (21:01 +0000)]
net: make Dial("tcp", ln.Addr().String()) work even with bad IPv6 config
Some machines can be configured (or came/come configured) in such a
state that IPv6 only half works: you can bind on [::]:n but not
connect back to it.
This implements a fallback such that it's guaranteed that this pattern
works:
Ben Burkert [Thu, 8 Jun 2017 20:19:28 +0000 (13:19 -0700)]
net: support all PacketConn and Conn returned by Resolver.Dial
Allow the Resolver.Dial func to return instances of Conn other than
*TCPConn and *UDPConn. If the Conn is also a PacketConn, assume DNS
messages transmitted over the Conn adhere to section 4.2.1. "UDP usage".
Otherwise, follow section 4.2.2. "TCP usage".
Provides a hook mechanism so that DNS queries generated by the net
package may be answered or modified before being sent to over the
network.
Brad Fitzpatrick [Thu, 8 Jun 2017 17:44:03 +0000 (17:44 +0000)]
log/syslog: expand docs a bit to reduce confusion
Fixes #15731
Change-Id: I6f4da0cbb3b6c93e175f5e384ffa118f383b7c3b
Reviewed-on: https://go-review.googlesource.com/45089 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Niklas Schnelle [Mon, 13 Mar 2017 02:13:16 +0000 (07:43 +0530)]
net/http: add Server.ServeTLS method
Server.ServeTLS wraps Server.Serve with added TLS support. This is
particularly useful for serving on manually initialized listeners.
Example use-case includes ability to serve with TLS on listener
provided by systemd's socket activation.
A matching test heavily based on TestAutomaticHTTP2_ListenAndServe
is also included.
Original code by Gurpartap Singh as
https://go-review.googlesource.com/c/38114/
Sam Whited [Mon, 5 Jun 2017 14:21:10 +0000 (09:21 -0500)]
bufio: clarify WriteTo docs
Fixes #19092
Change-Id: I7c0fde6a4cf460017619dbcce1c1ddaa7af1022a
Reviewed-on: https://go-review.googlesource.com/44811 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Robert Griesemer [Wed, 7 Jun 2017 18:06:00 +0000 (11:06 -0700)]
spec: clarify restrictions on RHS of non-constant shifts
For non-constant shifts with an untyped constant shift count, the
spec only said that it must "be converted to unsigned integer type".
go/types accepts any (arbitrarily large) integer value. Both cmd/compile
and gccgo require that the shift count be representable as a uint value
in that case (if the shift count is typed, it may be any unsigned integer
type).
This change adjusts the spec to state what the compilers have been doing
all along. The new wording matches similar rules elsewhere (e.g., for
untyped array and slice indices). Also, while technically this is a
restriction (we could permit arbitrarily large shift counts), in practice
this is irrelevant.
Fixes #14822.
Change-Id: Ia75834c67483cf761c10025c8df758f225ef67c2
Reviewed-on: https://go-review.googlesource.com/45072 Reviewed-by: Ian Lance Taylor <iant@golang.org>
Austin Clements [Wed, 7 Jun 2017 14:30:49 +0000 (10:30 -0400)]
runtime: fix GDB goroutine N command when N is running
The current implementation of "goroutine N cmd" assumes it can get
goroutine N's state from the goroutine's sched buffer. But this only
works if the goroutine is blocked. Extend find_goroutine so that, if
there is no saved scheduler state for a goorutine, it tries to find
the thread the goroutine is running on and use the thread's current
register state. We also extend find_goroutine to understand saved
syscall register state.
Fixes #13887.
Change-Id: I739008a8987471deaa4a9da918655e4042cf969b
Reviewed-on: https://go-review.googlesource.com/45031
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Wei Xiao [Tue, 6 Jun 2017 02:03:55 +0000 (02:03 +0000)]
cmd/go: fix TestBuildIDContainsArchModeEnv fail on arm64
TestBuildIDContainsArchModeEnv fails on arm64 because defaultGO386 has
different value from x86 (amd64/386). On arm64 defaultGO386 = '387' but
on x86 defaultGO386 = 'sse2'. The difference will make the test succeed
on x86 while fail on arm64 since it generates the same build ID.
Fix it by explicitly setting GO386 instead of using default value
Joonas Kuorilehto [Wed, 24 May 2017 17:37:53 +0000 (20:37 +0300)]
sync: remove note about creating with structures
Remove note that sync.Cond, sync.Mutex, sync.RWMutex and atomic.Value
can be created as part of other data structures. Structs can be embedded
by default, and default should not be repeated.
Alberto Donizetti [Mon, 5 Jun 2017 08:20:00 +0000 (10:20 +0200)]
time: vendor tzdata-2017b and update test
This change updates the vendored tzdata database to version 2017b
(released 2017-03-20).
The TestFirstZone test (which always uses the vendored database) is
updated to make it work with the new timezones database. (The Tokelau
abbreviation was changed from 'TKT' to the numeric abbreviation in
tzdata-2017a)
Bulat Gaifullin [Tue, 6 Jun 2017 17:20:06 +0000 (20:20 +0300)]
database/sql: Use Tx.ctx in Tx non-context methods
The Tx methods Query and Exec uses context.Background()
even Tx was created by context.
This patch enables using Tx.ctx in all Tx methods
which do not has context arg.
Backward compatibility:
- If Tx has created without context, nothing changes.
- If Tx has created with context and non-context method is called:
- If context is expired, the execution fails,
but it can fail on Commit or Rollback as well,
so in terms of whole transaction - nothing changes.
- If context is not expired, nothing changes too.
Cherry Zhang [Wed, 7 Jun 2017 14:00:58 +0000 (10:00 -0400)]
cmd/internal/obj/arm: don't split instructions on NaCl
We insert guard instructions after each "dangerous" instruction
to make NaCl's validator happy. This happens before asmout. If
in asmout an instruction is split to two dangerous instructions,
but only one guard instruction is inserted, the validation fails.
Therefore don't split instructions on NaCl.
Austin Clements [Tue, 6 Jun 2017 22:37:59 +0000 (18:37 -0400)]
runtime: mark extra M's G as dead when not in use
Currently the extra Ms created for cgo callbacks have a corresponding
G that's kept in syscall state with only a call to goexit on its
stack. This leads to confusing output from runtime.NumGoroutines and
in tracebacks:
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
.../src/runtime/asm_amd64.s:2197 +0x1
Fix this by putting this goroutine into state _Gdead when it's not in
use instead of _Gsyscall. To keep the goroutine counts correct, we
also add one to sched.ngsys while the goroutine is in _Gdead. The
effect of this is as if the goroutine simply doesn't exist when it's
not in use.
Fixes #16631.
Fixes #16714.
Change-Id: Ieae08a2febd4b3d00bef5c23fd6ca88fb2bb0087
Reviewed-on: https://go-review.googlesource.com/45030
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
> The language specification already defines byte as an alias for
> uint8 and similarly rune as an alias for int32, using the word alias
> as an informal term. It is a goal that the new type declaration
> semantics not introduce a different meaning for alias. That is, it
> should be possible to describe the existing meanings of byte and
> uint8 by saying that they behave as if predefined by:
>
> type byte = uint8
> type rune = int32
So, do that. Seems to work.
Updates #18130
Change-Id: I0740bab3f8fb23e946f3542fdbe819007a99465a
Reviewed-on: https://go-review.googlesource.com/45017 Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Ian Lance Taylor [Tue, 6 Jun 2017 22:08:59 +0000 (15:08 -0700)]
runtime: intercept munmap as we do mmap
For cgo programs on linux-amd64 we call the C function mmap.
This supports programs such as the C memory sanitizer that need to
intercept all calls to mmap. It turns out that there are programs that
intercept both mmap and munmap, or that at least expect that if they
intercept mmap, they also intercept munmap. So, if we permit mmap
to be intercepted, also permit munmap to be intercepted.
No test, as it requires two odd things: a C program that intercepts
mmap and munmap, and a Go program that calls munmap.
Brad Fitzpatrick [Tue, 6 Jun 2017 22:05:34 +0000 (22:05 +0000)]
doc: delete go1.8.txt
Fixes #20591
Change-Id: I2a4674a3430c5a4d3c569f3ea654c6ff4d9bf7ee
Reviewed-on: https://go-review.googlesource.com/45015 Reviewed-by: Ian Lance Taylor <iant@golang.org>