include: Plan 9: hide any previous definition of Runemax

Runemax is already defined in libc on 64-bit version of
Plan 9, but is not defined on other versions.
To accommodate, we make sure to rename any previous
instance of Runemax and re-define it subsequently.

R=rsc, ality, rminnich
CC=golang-dev
https://codereview.appspot.com/7232059

Committer: Russ Cox <rsc@golang.org>
cmd/vet: detect misuse of atomic.Add*

Re-assigning the return value of an atomic operation to the same variable being operated is a common mistake:

x = atomic.AddUint64(&x, 1)

Add this check to go vet.

Fixes issue 4065.

R=dvyukov, golang-dev, remyoudompheng, rsc
CC=golang-dev
https://codereview.appspot.com/7097048

Committer: Russ Cox <rsc@golang.org>
encoding/xml: add (*Encoder).Indent

Exposing this on the Encoder allows streaming generation of indented XML.

R=golang-dev, rogpeppe
CC=golang-dev
https://codereview.appspot.com/7221075
crypto/rc4: add simple amd64 asm implementation.

(Although it's still half the speed of OpenSSL.)

benchmark           old ns/op    new ns/op    delta
BenchmarkRC4_128         1409          398  -71.75%
BenchmarkRC4_1K         10920         2898  -73.46%
BenchmarkRC4_8K        131323        23083  -82.42%

benchmark            old MB/s     new MB/s  speedup
BenchmarkRC4_128        90.83       321.43    3.54x
BenchmarkRC4_1K         93.77       353.28    3.77x
BenchmarkRC4_8K         61.65       350.73    5.69x

R=rsc, remyoudompheng
CC=golang-dev, jgrahamc
https://codereview.appspot.com/7234055
cmd/cgo: allow for stdcall decorated dynimport names

To allow for stdcall decorated names on Windows, two changes were needed:
1. Change the symbol versioning delimiter '@' in cgo's dynimport output to a '#', and in cmd/ld when it parses dynimports.
2. Remove the "@N" decorator from the first argument of cgo's dynimport output (PE only).

Fixes issue 4607.

R=minux.ma, adg, rsc
CC=golang-dev
https://codereview.appspot.com/7047043

Committer: Russ Cox <rsc@golang.org>
A+C: Elias Naur (individual CLA)

Generated by addca.

R=gobot
CC=golang-dev
https://codereview.appspot.com/7230054
cmd/dist: fix code example in README

Fixes issue 4729.

R=golang-dev, iant
CC=golang-dev
https://codereview.appspot.com/7232060
6l/5l: PIC and shared library support for the linkers.

Added the -shared flag to 5l/6l to output a PIC executable with the required
dynamic relocations and RIP-relative addressing in machine code.
Added dummy support to 8l to avoid compilation errors

See also:
https://codereview.appspot.com/6822078
https://codereview.appspot.com/7064048

and

https://groups.google.com/d/topic/golang-nuts/P05BDjLcQ5k/discussion

R=rsc, iant
CC=golang-dev
https://codereview.appspot.com/6926049

Committer: Russ Cox <rsc@golang.org>
runtime: local allocation in mprof.goc

Binary data in mprof.goc may prevent the garbage collector from freeing
memory blocks. This patch replaces all calls to runtime·mallocgc() with
calls to an allocator private to mprof.goc, thus making the private
memory invisible to the garbage collector. The addrhash variable is
moved outside of the .bss section.

R=golang-dev, dvyukov, rsc, minux.ma
CC=dave, golang-dev, remyoudompheng
https://codereview.appspot.com/7135063

Committer: Russ Cox <rsc@golang.org>
cmd/5l: reestablish uniform union field naming

R=golang-dev, minux.ma
CC=golang-dev
https://codereview.appspot.com/7226063
encoding/json: properly unmarshal empty arrays.

The JSON unmarshaller failed to allocate an array when there
are no values for the input causing the `[]` unmarshalled
to []interface{} to generate []interface{}(nil) rather than
[]interface{}{}. This wasn't caught in the tests because Decode()
works correctly and because jsonBig never generated zero-sized
arrays. The modification to scanner_test.go quickly triggers
the error:

without the change to decoder.go, but with the change to scanner_test.go:

$ go test
--- FAIL: TestUnmarshalMarshal (0.10 seconds)
decode_test.go:446:		Marshal jsonBig
scanner_test.go:206:	diverge at 70: «03c1OL6$":null},{"[=» vs «03c1OL6$":[]},{"[=^\»
FAIL
exit status 1
FAIL	encoding/json	0.266s

Also added a simple regression to decode_test.go.

R=adg, dave, rsc
CC=golang-dev
https://codereview.appspot.com/7196050

Committer: Russ Cox <rsc@golang.org>
doc/go1.1.html: document division by zero change from CL 6710045

I am still not convinced this is a change we should make, but at least
documenting it will keep us from forgetting it as we get closer to Go 1.1.

R=golang-dev, minux.ma
CC=golang-dev
https://codereview.appspot.com/7226064
A+C: Michael Teichgräber (individual CLA)

Generated by addca.

R=gobot
CC=golang-dev
https://codereview.appspot.com/7237057
net: SplitHostPort: adjust error message for missing port in IPv6 addresses

An hostport of "[::1]" now results in the same error message
"missing port in address" as the hostport value "127.0.0.1",
so SplitHostPort won't complain about "too many colons
in address" anymore for an IPv6 address missing a port.

Added tests checking the error values.

Fixes issue 4526.

R=dave, rsc, mikioh.mikioh
CC=golang-dev
https://codereview.appspot.com/7038045

Committer: Russ Cox <rsc@golang.org>
os: don't hold ForkLock across opens on Plan 9

If os.OpenFile holds ForkLock on files that block opens,
then threads that simultaneously try to do fork-exec will
get hung up (until the open succeeds). Blocked opens are
common enough on Plan 9 that protecting against fd leaks
into fork-execs means not being able to do fork-execs
properly in the general case. Thus, we forgo taking the
lock.

R=rsc, ality
CC=golang-dev
https://codereview.appspot.com/7235066

Committer: Russ Cox <rsc@golang.org>
syscall: handle empty address in ReadFrom better

Handle return values from recvfrom correctly when the
kernel decides to not return an address.

Fixes issue 4636.
Fixes issue 4352.

R=rsc, mikioh.mikioh, dave
CC=golang-dev
https://codereview.appspot.com/7058062

Committer: Russ Cox <rsc@golang.org>
cmd/gc: Error out on division by constant zero.

Fixes issue 4264.

R=cldorian, rsc
CC=golang-dev
https://codereview.appspot.com/6845113
cmd/gc: fix export data for aggressive inlining.

Export data was broken after revision 6b602ab487d6
when -l is specified at least 3 times: it makes the compiler
write out func (*T).Method() declarations in export data, which
is not supported.

Also fix the formatting of recover() in export data. It was
not treated like panic() and was rendered as "<node RECOVER>".

R=golang-dev, lvd, minux.ma, rsc
CC=golang-dev
https://codereview.appspot.com/7067051
exp/locale/collate/tools/colcmp: fixes some discrepancies between
ICU and collate package: ICU requires strings to be in FCD form.
Not all NFC strings are in this form, leading to incorrect results.
Change to NFD instead.

R=rsc
CC=golang-dev
https://codereview.appspot.com/7201043