runtime: add Benchmark[Clear|Copy]Fat[8|12]

These correspond to 2 and 3 word fat copies/clears on 8g, which dominate usage in the stdlib. (70% of copies and 46% of clears are for 2 or 3 words.) I missed these in CL 111350043, which added 2 and 3 word benchmarks for 6g. A follow-up CL will optimize these cases.

LGTM=khr
R=khr
CC=golang-codereviews
https://codereview.appspot.com/115160043
cmd/api: ignore internal packages

We might want to add a go/build.IsInternal(pkg string) bool
later, but this works for now.

LGTM=dave, rsc
R=rsc, dave
CC=golang-codereviews
https://codereview.appspot.com/113300044
net/http: create internal pkg, unify two chunked.go files

LGTM=rsc
R=rsc, dan.kortschak
CC=golang-codereviews, r
https://codereview.appspot.com/115840046
runtime: round gohash stack frame to multiple of 8 on amd64p32

Even though pointers are 4 bytes the stack frame should be kept
a multiple of 8 bytes so that return addresses pushed on the stack
are properly aligned.

Fixes issue 8379.

LGTM=dvyukov, minux
R=minux, bradfitz, dvyukov, dave
CC=golang-codereviews
https://codereview.appspot.com/115840048
liblink: remove some gotos + other fixes

Rewrite gotos that violate Go's stricter rules.
Use uchar* instead of char* in a few places that aren't strings.
Remove dead opcross code from asm5.c.
Declare regstr (in both list6 and list8) static.

LGTM=minux, dave
R=minux, dave
CC=golang-codereviews
https://codereview.appspot.com/113230043
runtime: simplify code

LGTM=khr
R=golang-codereviews, dave, khr
CC=golang-codereviews, rsc
https://codereview.appspot.com/116950043
runtime: pass correct size to malloc
In both cases we lie to malloc about the actual size that we need.
In panic we ask for less memory than we are going to use.
In slice we ask for more memory than we are going to use
(potentially asking for a fractional number of elements).
This breaks the new GC.

LGTM=khr
R=golang-codereviews, dave, khr
CC=golang-codereviews, rsc
https://codereview.appspot.com/116940043
crypto/subtle: make ConstantTimeCompare return zero for args of different length.

This is more useful than panicking, since otherwise every caller needs
to do the length check before calling; some will forget, and have a
potential submarine crasher as a result. Other implementations of this
functionality do a length check.

This is backward compatible, except if someone has written code that
relies on this panicking with different length args. However, that was
not the case before Go 1.3 either.

Updates issue 7304.

LGTM=agl
R=agl, minux, hanwen
CC=golang-codereviews
https://codereview.appspot.com/118750043
syscall: fix typo in namei doc comment.

LGTM=dave
R=rsc, dave
CC=golang-codereviews
https://codereview.appspot.com/112420044
runtime: keep build version around in binaries

So we can tell from a binary which version of
Go built it.

LGTM=minux, rsc
R=golang-codereviews, minux, khr, rsc, dave
CC=golang-codereviews
https://codereview.appspot.com/117040043
cmd/gc: in the runtime package, don't promote any decls to the heap.

In the runtime, we want to control where allocations happen.
In particular, we don't want the code implementing malloc to
itself trigger a malloc.  This change prevents the compiler
from inserting mallocs on our behalf (due to escaping declarations).

This check does not trigger on the current runtime code.

Note: Composite literals are still allowed.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/105280047
runtime: make go vet happy

CL 117950044 updates vet to fix LEA* issue.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://codereview.appspot.com/112440043
cmd/ld: mark hostobj sections as containing no pointers
Currently they are scanned conservatively.
But there is no reason to scan them. C world must not contain
pointers into Go heap. Moreover, we don't have enough information
to emit write barriers nor update pointers there in future.
The immediate need is that it breaks the new GC because
these are weird symbols as if with pointers but not necessary
pointer aligned.

LGTM=rsc
R=golang-codereviews, rlh, rsc
CC=golang-codereviews, iant, khr
https://codereview.appspot.com/117000043
runtime: rename throwgo to gothrow

As pointed out by Elias Naur, the convention for Go runtime functions means this function should be named gothrow.

Discussion: https://codereview.appspot.com/115860045/#msg6

LGTM=dvyukov
R=golang-codereviews, dvyukov
CC=golang-codereviews
https://codereview.appspot.com/118120043
syscall: allow for mksyscall_windows.go to be used outside of syscall

Fixes issue 8398.

LGTM=chines
R=golang-codereviews, chines, josharian
CC=golang-codereviews
https://codereview.appspot.com/114140043
testing: add Coverage function

I've found this very useful for generating
good test case lists for -short mode for
the disassemblers.

Fixes issue 7959.

LGTM=r
R=r
CC=golang-codereviews
https://codereview.appspot.com/98150043
doc/go1.4.txt: windows can do symlinks now

R=golang-codereviews
CC=golang-codereviews
https://codereview.appspot.com/111560043
cmd/gc: mark auxiliary symbols as containing no pointers
They do not, but pretend that they do.
The immediate need is that it breaks the new GC because
these are weird symbols as if with pointers but not necessary
pointer aligned.

LGTM=rsc
R=golang-codereviews, dave, josharian, khr, rsc
CC=golang-codereviews, iant, khr, rlh
https://codereview.appspot.com/116060043
lib9: format %#04x, 0 as 0x0000 not 000000.

This matches Go's fmt.Printf instead of ANSI C's dumb rules.
It makes the -S output from C liblink match Go's liblink.

LGTM=minux
R=minux
CC=golang-codereviews
https://codereview.appspot.com/112600043
liblink: more precise literal word comparison on arm

There are fields in the Addr that do not matter for the
purpose of deciding that the same word is already
in the current literal pool. Copy only the fields that
do matter.

This came up when comparing against the Go version
because the way it is invoked doesn't copy a few fields
(like node) that are never directly used by liblink itself.

Also remove a stray print that is not well-defined in
the new liblink. (Cannot use %D outside of %P, because
%D needs the outer Prog*.)

LGTM=minux
R=minux
CC=golang-codereviews
https://codereview.appspot.com/119000043