]> Cypherpunks repositories - gostls13.git/log
gostls13.git
11 years agomath/big: use RunParallel in benchmarks
Dmitriy Vyukov [Mon, 24 Feb 2014 16:46:56 +0000 (20:46 +0400)]
math/big: use RunParallel in benchmarks

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/67830044

11 years agofmt: use RunParallel in benchmarks
Dmitriy Vyukov [Mon, 24 Feb 2014 16:46:25 +0000 (20:46 +0400)]
fmt: use RunParallel in benchmarks

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/67910046

11 years agosyscall: regenerate Flock_t to make it compliant with EABI
Mikio Hara [Mon, 24 Feb 2014 16:36:56 +0000 (08:36 -0800)]
syscall: regenerate Flock_t to make it compliant with EABI

Note that current z-files for linux/amd64,386,arm are based on 3.2 kernel.

LGTM=iant
R=golang-codereviews, dave, bradfitz, gobot, iant
CC=golang-codereviews
https://golang.org/cl/59160044

11 years agotesting: diagnose a potential misuse of RunParallel
Dmitriy Vyukov [Mon, 24 Feb 2014 16:32:28 +0000 (20:32 +0400)]
testing: diagnose a potential misuse of RunParallel

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/68030043

11 years agonet/http: use RunParallel in benchmarks
Dmitriy Vyukov [Mon, 24 Feb 2014 16:28:14 +0000 (20:28 +0400)]
net/http: use RunParallel in benchmarks

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/68070043

11 years agonet/rpc: use RunParallel in benchmarks
Dmitriy Vyukov [Mon, 24 Feb 2014 16:23:35 +0000 (20:23 +0400)]
net/rpc: use RunParallel in benchmarks

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/68040044

11 years agoruntime: fix double symbol definition
Dmitriy Vyukov [Mon, 24 Feb 2014 16:23:03 +0000 (20:23 +0400)]
runtime: fix double symbol definition
runfinqv is already defined the same way on line 271.
There may also be something to fix in compiler/linker wrt diagnostics.
Fixes #7375.

LGTM=bradfitz
R=golang-codereviews, dave, bradfitz
CC=golang-codereviews
https://golang.org/cl/67850044

11 years agoruntime: stack allocate Panic structure during runtime.panic
Dave Cheney [Mon, 24 Feb 2014 16:09:19 +0000 (11:09 -0500)]
runtime: stack allocate Panic structure during runtime.panic

Update #7347

When runtime.panic is called the *Panic is malloced from the heap. This can lead to a gc cycle while panicing which can make a bad situation worse.

It appears to be possible to stack allocate the Panic and avoid malloc'ing during a panic.

Ref: https://groups.google.com/d/topic/golang-dev/OfxqpklGkh0/discussion

LGTM=minux.ma, dvyukov, rsc
R=r, minux.ma, gobot, rsc, dvyukov
CC=golang-codereviews
https://golang.org/cl/66830043

11 years agoruntime: use monotonic clock for timers (linux/386, linux/amd64)
Jay Weisskopf [Mon, 24 Feb 2014 15:57:46 +0000 (10:57 -0500)]
runtime: use monotonic clock for timers (linux/386, linux/amd64)

This lays the groundwork for making Go robust when the system's
calendar time jumps around. All input values to the runtimeTimer
struct now use the runtime clock as a common reference point.
This affects net.Conn.Set[Read|Write]Deadline(), time.Sleep(),
time.Timer, etc. Under normal conditions, behavior is unchanged.

Each platform and architecture's implementation of runtime·nanotime()
should be modified to use a monotonic system clock when possible.

Platforms/architectures modified and tested with monotonic clock:
  linux/x86     - clock_gettime(CLOCK_MONOTONIC)

Update #6007

LGTM=dvyukov, rsc
R=golang-codereviews, dvyukov, alex.brainman, stephen.gutekanst, dave, rsc, mikioh.mikioh
CC=golang-codereviews
https://golang.org/cl/53010043

11 years agotime: explicitely mention Tickers have to be stopped
Patrick Mézard [Mon, 24 Feb 2014 15:18:40 +0000 (10:18 -0500)]
time: explicitely mention Tickers have to be stopped

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/64770043

11 years agogdb: Add partial python3 + go1.2 support to runtime-gdb.py
Shane Hansen [Mon, 24 Feb 2014 15:13:27 +0000 (10:13 -0500)]
gdb: Add partial python3 + go1.2 support to runtime-gdb.py

Update #6963 Fixes pretty printing maps and updates
functions for interacting with $len(). goroutine $n bt
remains not working. Tested on gdb using python 2 and 3.
Fixes #7052
Update #6963
Fixes #6698

LGTM=rsc
R=golang-codereviews, josharian, rsc
CC=golang-codereviews
https://golang.org/cl/53590043

11 years agocodereview: remove unused upload_options.revision
Patrick Mézard [Mon, 24 Feb 2014 15:11:37 +0000 (10:11 -0500)]
codereview: remove unused upload_options.revision

LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://golang.org/cl/60640052

11 years agonet/http: don't pile up defers in b.N loop
Robert Daniel Kortschak [Mon, 24 Feb 2014 14:17:07 +0000 (18:17 +0400)]
net/http: don't pile up defers in b.N loop

One defer was not removed in CL61150043.

LGTM=dvyukov
R=bradfitz, dvyukov
CC=golang-codereviews
https://golang.org/cl/64600044

11 years agoruntime/race: fix finalizer tests
Dmitriy Vyukov [Mon, 24 Feb 2014 14:12:46 +0000 (18:12 +0400)]
runtime/race: fix finalizer tests
After "runtime: combine small NoScan allocations" finalizers
for small objects run more non deterministically.
TestRaceFin episodically fails on my darwin/amd64.

LGTM=khr
R=golang-codereviews, khr, dave
CC=golang-codereviews
https://golang.org/cl/56970043

11 years agosyscall: add fcntl test
Mikio Hara [Mon, 24 Feb 2014 11:35:01 +0000 (20:35 +0900)]
syscall: add fcntl test

Also updates documentation.

LGTM=minux.ma
R=iant, bradfitz, nightlyone, minux.ma
CC=golang-codereviews
https://golang.org/cl/58660044

11 years agosyscall: make mkerrors.sh work with clang
Mikio Hara [Mon, 24 Feb 2014 07:34:51 +0000 (16:34 +0900)]
syscall: make mkerrors.sh work with clang

LGTM=iant
R=golang-codereviews, minux.ma, gobot, iant
CC=golang-codereviews
https://golang.org/cl/67170043

11 years agosyscall: consolidate test cases for Unix-like systems
Mikio Hara [Mon, 24 Feb 2014 05:41:10 +0000 (14:41 +0900)]
syscall: consolidate test cases for Unix-like systems

As per request from minux in CL 61520049, this CL consolidates
existing test cases for Unix-like systems into one file except
Linux-specific credential test.

LGTM=bradfitz
R=iant, minux.ma, bradfitz
CC=golang-codereviews
https://golang.org/cl/67800044

11 years agonet/http: fix comment in connectMethod's key format
Anfernee Yongkun Gui [Mon, 24 Feb 2014 05:18:41 +0000 (21:18 -0800)]
net/http: fix comment in connectMethod's key format

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/66990045

11 years agomisc/cgo/testso: don't use TLS variables on Darwin and OpenBSD.
Shenghou Ma [Mon, 24 Feb 2014 01:37:43 +0000 (20:37 -0500)]
misc/cgo/testso: don't use TLS variables on Darwin and OpenBSD.
Fix build for 10.6 Darwin builders and OpenBSD builers.

LGTM=jsing
R=golang-codereviews, dave, jsing
CC=golang-codereviews
https://golang.org/cl/67710043

11 years agocmd/gc: diagnose "make([]T, non-integer)" correctly.
Shenghou Ma [Sun, 23 Feb 2014 21:31:48 +0000 (16:31 -0500)]
cmd/gc: diagnose "make([]T, non-integer)" correctly.
Fixes #7223.

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/63040043

11 years agocmd/ld: don't emit unreachable dynimport symbols in ELF symtab.
Shenghou Ma [Sun, 23 Feb 2014 21:20:40 +0000 (16:20 -0500)]
cmd/ld: don't emit unreachable dynimport symbols in ELF symtab.
Fix build for Dragonfly BSD.
Fixes #7318.
Fixes #7367.

LGTM=jsing, iant
R=jsing, iant, mikioh.mikioh
CC=golang-codereviews
https://golang.org/cl/64340043

11 years agoos/exec: explicitly mention Cmd.Wait() has to be called eventually
Patrick Mézard [Sun, 23 Feb 2014 20:53:02 +0000 (12:53 -0800)]
os/exec: explicitly mention Cmd.Wait() has to be called eventually

LGTM=minux.ma, r
R=golang-codereviews, minux.ma, r
CC=golang-codereviews
https://golang.org/cl/67280043

11 years agoA+C: Patrick Mézard (individual CLA)
Rob Pike [Sun, 23 Feb 2014 20:52:23 +0000 (12:52 -0800)]
A+C: Patrick Mézard (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/64100047

11 years agotesting: improve introduction to package comment
Rob Pike [Fri, 21 Feb 2014 22:35:54 +0000 (14:35 -0800)]
testing: improve introduction to package comment
Fixes #7361.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/66910045

11 years agocrypto/tls: enforce that either ServerName or InsecureSkipVerify be given.
Adam Langley [Fri, 21 Feb 2014 20:56:41 +0000 (15:56 -0500)]
crypto/tls: enforce that either ServerName or InsecureSkipVerify be given.

crypto/tls has two functions for creating a client connection: Dial,
which most users are expected to use, and Client, which is the
lower-level API.

Dial does what you expect: it gives you a secure connection to the host
that you specify and the majority of users of crypto/tls appear to work
fine with it.

Client gives more control but needs more care. Specifically, if it
wasn't given a server name in the tls.Config then it didn't check that
the server's certificates match any hostname - because it doesn't have
one to check against. It was assumed that users of the low-level API
call VerifyHostname on the certificate themselves if they didn't supply
a hostname.

A review of the uses of Client both within Google and in a couple of
external libraries has shown that nearly all of them got this wrong.

Thus, this change enforces that either a ServerName or
InsecureSkipVerify is given. This does not affect tls.Dial.

See discussion at https://groups.google.com/d/msg/golang-nuts/4vnt7NdLvVU/b1SJ4u0ikb0J.

Fixes #7342.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/67010043

11 years agoA+C: Jay Weisskopf (individual CLA)
Russ Cox [Fri, 21 Feb 2014 20:28:44 +0000 (15:28 -0500)]
A+C: Jay Weisskopf (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/67010044

11 years agoreflect: better error for walking through nil embedded struct pointer
Russ Cox [Fri, 21 Feb 2014 18:51:22 +0000 (13:51 -0500)]
reflect: better error for walking through nil embedded struct pointer

The old error was "call of reflect.Value.Field on ptr Value".

http://play.golang.org/p/Zm-ZbQaPeR

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/67020043

11 years agoA+C: Apisak Darakananda (individual CLA)
Brad Fitzpatrick [Fri, 21 Feb 2014 18:22:56 +0000 (10:22 -0800)]
A+C: Apisak Darakananda (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/65340044

11 years agoruntime/debug: add SetPanicOnFault
Russ Cox [Thu, 20 Feb 2014 21:18:05 +0000 (16:18 -0500)]
runtime/debug: add SetPanicOnFault

SetPanicOnFault allows recovery from unexpected memory faults.
This can be useful if you are using a memory-mapped file
or probing the address space of the current program.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/66590044

11 years agoruntime: use goc2c as much as possible
Russ Cox [Thu, 20 Feb 2014 20:58:47 +0000 (15:58 -0500)]
runtime: use goc2c as much as possible

Package runtime's C functions written to be called from Go
started out written in C using carefully constructed argument
lists and the FLUSH macro to write a result back to memory.

For some functions, the appropriate parameter list ended up
being architecture-dependent due to differences in alignment,
so we added 'goc2c', which takes a .goc file containing Go func
declarations but C bodies, rewrites the Go func declaration to
equivalent C declarations for the target architecture, adds the
needed FLUSH statements, and writes out an equivalent C file.
That C file is compiled as part of package runtime.

Native Client's x86-64 support introduces the most complex
alignment rules yet, breaking many functions that could until
now be portably written in C. Using goc2c for those avoids the
breakage.

Separately, Keith's work on emitting stack information from
the C compiler would require the hand-written functions
to add #pragmas specifying how many arguments are result
parameters. Using goc2c for those avoids maintaining #pragmas.

For both reasons, use goc2c for as many Go-called C functions
as possible.

This CL is a replay of the bulk of CL 15400047 and CL 15790043,
both of which were reviewed as part of the NaCl port and are
checked in to the NaCl branch. This CL is part of bringing the
NaCl code into the main tree.

No new code here, just reformatting and occasional movement
into .h files.

LGTM=r
R=dave, alex.brainman, r
CC=golang-codereviews
https://golang.org/cl/65220044

11 years agocmd/pack: fix match
Russ Cox [Thu, 20 Feb 2014 20:50:30 +0000 (15:50 -0500)]
cmd/pack: fix match

Match used len(ar.files) == 0 to mean "match everything"
but it also deleted matched things from the list, so once you
had matched everything you asked for, match returned true
for whatever was left in the archive too.

Concretely, if you have an archive containing f1, f2, then
        pack t foo.a f1
would match f1 and then, because len(ar.files) == 0 after
deleting f1 from the match list, also match f2.

Avoid the problem by recording explicitly whether match
matches everything.

LGTM=r, dsymonds
R=r, dsymonds
CC=golang-codereviews
https://golang.org/cl/65630046

11 years agocmd/gc: explain 'nointerface' method failure
Russ Cox [Thu, 20 Feb 2014 20:42:08 +0000 (15:42 -0500)]
cmd/gc: explain 'nointerface' method failure

The message used to say that there was a type
mismatch, which is not necessarily true.

TBR=ken2
CC=golang-codereviews
https://golang.org/cl/66600044

11 years agocmd/gc: make embedded, unexported fields read-only.
Chris Manghane [Thu, 20 Feb 2014 19:32:55 +0000 (11:32 -0800)]
cmd/gc: make embedded, unexported fields read-only.

Fixes #7363.

LGTM=gri
R=gri, rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/66510044

11 years agocmd/ld: fix off-by-one error in DWARF .debug_line transcription
Josh Bleecher Snyder [Thu, 20 Feb 2014 17:06:32 +0000 (09:06 -0800)]
cmd/ld: fix off-by-one error in DWARF .debug_line transcription

The liblink refactor changed the DWARF .debug_line flow control. The mapping was off by one pcline entry. The fix here preserves pc until it can be compared to pcline.pc.

Sample dwarfdump .debug_line output for main.main from the program in issue 7351, before liblink (correct):

0x0000003c: 00 Extended: <9> 02 DW_LNE_set_address( 0x0000000000002000 )
0x00000047: 03 DW_LNS_advance_line( 6 )
0x00000049: 01 DW_LNS_copy
            0x0000000000002000      1      7      0 is_stmt

0x0000004a: 8b address += 21,  line += 1
            0x0000000000002021      1      8      0 is_stmt

0x0000004b: 02 DW_LNS_advance_pc( 153 )
0x0000004e: 03 DW_LNS_advance_line( 1 )
0x00000050: 01 DW_LNS_copy
            0x00000000000020ba      1      9      0 is_stmt

After liblink (off by one entry):

0x00001bbf: 00 Extended: <9> 02 DW_LNE_set_address( 0x0000000000002000 )
0x00001bca: 02 DW_LNS_advance_pc( 33 )
0x00001bcc: 03 DW_LNS_advance_line( 6 )
0x00001bce: 01 DW_LNS_copy
            0x0000000000002021      1      7      0 is_stmt

0x00001bcf: 02 DW_LNS_advance_pc( 153 )
0x00001bd2: 03 DW_LNS_advance_line( 1 )
0x00001bd4: 01 DW_LNS_copy
            0x00000000000020ba      1      8      0 is_stmt

0x00001bd5: 02 DW_LNS_advance_pc( 153 )
0x00001bd8: 03 DW_LNS_advance_line( 1 )
0x00001bda: 01 DW_LNS_copy
            0x0000000000002153      1      9      0 is_stmt

After this CL (the line 9 pc offset changed due to intervening compiler changes):

0x00001d07: 00 Extended: <9> 02 DW_LNE_set_address( 0x0000000000002000 )
0x00001d12: 03 DW_LNS_advance_line( 6 )
0x00001d14: 01 DW_LNS_copy
            0x0000000000002000      1      7      0 is_stmt

0x00001d15: 8b address += 21,  line += 1
            0x0000000000002021      1      8      0 is_stmt

0x00001d16: 02 DW_LNS_advance_pc( 189 )
0x00001d19: 03 DW_LNS_advance_line( 1 )
0x00001d1b: 01 DW_LNS_copy
            0x00000000000020de      1      9      0 is_stmt

Fixes #7351.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/66290043

11 years agoos: fix Rename on Plan 9
David du Colombier [Thu, 20 Feb 2014 06:59:38 +0000 (07:59 +0100)]
os: fix Rename on Plan 9

Rename should fail when the directory doesn't match.
It will fix the newly introduced test from cmd/pack
on Plan 9.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/65270044

11 years agonet/http: remove tmp file created in TestMultipartReaderOrder
Alex Brainman [Thu, 20 Feb 2014 06:24:25 +0000 (17:24 +1100)]
net/http: remove tmp file created in TestMultipartReaderOrder

LGTM=minux.ma
R=golang-codereviews, minux.ma
CC=golang-codereviews
https://golang.org/cl/66470043

11 years agosyscall: terminate error string in exec package on Plan 9
Rob Pike [Thu, 20 Feb 2014 01:17:36 +0000 (17:17 -0800)]
syscall: terminate error string in exec package on Plan 9
Try to prevent messages like this:
        './pack' file does not exist����������������������������������������������������������������������������������������������������
TBR=adonovan

LGTM=adonovan
R=adonovan
CC=golang-codereviews
https://golang.org/cl/66270043

11 years agocmd/pack: provide executable name in TestHello
Alex Brainman [Thu, 20 Feb 2014 00:29:37 +0000 (11:29 +1100)]
cmd/pack: provide executable name in TestHello

otherwise go build command adds .exe suffix

Fixes #7362

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/66250043

11 years agocmd/pack: another attempt to fix the build for TestHello
Rob Pike [Thu, 20 Feb 2014 00:12:05 +0000 (16:12 -0800)]
cmd/pack: another attempt to fix the build for TestHello
Plan 9 uses single quotes, not double quotes. I should have known.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://golang.org/cl/66240043

11 years agocmd/pack: don't look for " in output from go env
Rob Pike [Wed, 19 Feb 2014 23:33:47 +0000 (15:33 -0800)]
cmd/pack: don't look for " in output from go env
Windows at least doesn't emit one.
Maybe fix Windows build.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://golang.org/cl/66120046

11 years agocmd/pack: dump output of command of "go env" command in test
Rob Pike [Wed, 19 Feb 2014 23:01:50 +0000 (15:01 -0800)]
cmd/pack: dump output of command of "go env" command in test
Get more information to help understand build failure on Plan 9.
Also Windows.
(TestHello is failing because GOCHAR does not appear in output.
What does?)

Update #7362

LGTM=bradfitz
R=rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/66070044

11 years agocmd/gc, runtime: enable precisestack by default
Russ Cox [Wed, 19 Feb 2014 22:09:08 +0000 (17:09 -0500)]
cmd/gc, runtime: enable precisestack by default

[Repeat of CL 64100044, after 32-bit fix in CL 66170043.]

Precisestack makes stack collection completely precise,
in the sense that there are no "used and not set" errors
in the collection of stack frames, no times where the collector
reads a pointer from a stack word that has not actually been
initialized with a pointer (possibly a nil pointer) in that function.

The most important part is interfaces: precisestack means
that if reading an interface value, the interface value is guaranteed
to be initialized, meaning that the type word can be relied
upon to be either nil or a valid interface type word describing
the data word.

This requires additional zeroing of certain values on the stack
on entry, which right now costs about 5% overall execution
time in all.bash. That cost will come down before Go 1.3
(issue 7345).

There are at least two known garbage collector bugs right now,
issues 7343 and 7344. The first happens even without precisestack.
The second I have only seen with precisestack, but that does not
mean that precisestack is what causes it. In fact it is very difficult
to explain by what precisestack does directly. Precisestack may
be exacerbating an existing problem. Both of those issues are
marked for Go 1.3 as well.

The reasons for enabling precisestack now are to give it more
time to soak and because the copying stack work depends on it.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/65820044

11 years agocmd/5g, cmd/8g: zero ambiguously live values on entry
Russ Cox [Wed, 19 Feb 2014 22:08:55 +0000 (17:08 -0500)]
cmd/5g, cmd/8g: zero ambiguously live values on entry

The code here is being restored after its deletion in CL 14430048.

I restored the copy in cmd/6g in CL 56430043 but neglected the
other two.

This is the reason that enabling precisestack only worked on amd64.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/66170043

11 years agocmd/pack: add 'c' command to create archive
Russ Cox [Wed, 19 Feb 2014 22:08:44 +0000 (17:08 -0500)]
cmd/pack: add 'c' command to create archive

When Go 1.3 is released, this will keep existing
Go 1.2 build scripts that use 'go tool pack grc' working.
For efficiency, such scripts should be changed to
use 6g -pack instead, but keeping the old behavior
available enables a more graceful transition.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/66130043

11 years agoapi: update next.txt
Russ Cox [Wed, 19 Feb 2014 20:56:42 +0000 (15:56 -0500)]
api: update next.txt

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://golang.org/cl/66160043

11 years agocmd/gc: fix printf format in typecheck.c
Rob Pike [Wed, 19 Feb 2014 20:50:50 +0000 (15:50 -0500)]
cmd/gc: fix printf format in typecheck.c
There are probably more of these, but bound and len are 64 bits so use %lld
in message about array index out of bounds.
Fixes the 386 build.

LGTM=bradfitz, rsc
R=rsc, bradfitz
CC=golang-codereviews, rickarnoldjr
https://golang.org/cl/66110043

11 years agocmd/pack: use log.SetPrefix to make log calls more compact and consistent
Rob Pike [Wed, 19 Feb 2014 19:42:34 +0000 (11:42 -0800)]
cmd/pack: use log.SetPrefix to make log calls more compact and consistent
Taking my own advice from a review of addr2line.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/65950044

11 years agocmd/addr2line: reimplement in Go
Russ Cox [Wed, 19 Feb 2014 19:33:11 +0000 (14:33 -0500)]
cmd/addr2line: reimplement in Go

We never updated libmach for the new object file format,
so it the existing 'go tool addr2line' is broken.
Reimplement in Go to fix.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/66020043

11 years agocmd/gc: fix array index out of bounds error message
Rick Arnold [Wed, 19 Feb 2014 19:29:36 +0000 (11:29 -0800)]
cmd/gc: fix array index out of bounds error message

The error message was previously off by one in all cases.

Fixes #7150.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/65850043

11 years agocrypto/x509: add example of using a custom root list.
Adam Langley [Wed, 19 Feb 2014 16:18:35 +0000 (11:18 -0500)]
crypto/x509: add example of using a custom root list.

Fixes #6267.

LGTM=r, josharian
R=golang-codereviews, josharian, r
CC=golang-codereviews
https://golang.org/cl/61020043

11 years agocrypto/tls: improve documentation for ServerName.
Adam Langley [Wed, 19 Feb 2014 16:17:09 +0000 (11:17 -0500)]
crypto/tls: improve documentation for ServerName.

Users of the low-level, Client function are frequenctly missing the
fact that, unless they pass a ServerName to the TLS connection then it
cannot verify the certificates against any name.

This change makes it clear that at least one of InsecureSkipVerify and
ServerName should always be set.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/65440043

11 years agocmd/go: skip writing dwarf debug info for ephemeral binaries
Russ Cox [Wed, 19 Feb 2014 15:01:15 +0000 (10:01 -0500)]
cmd/go: skip writing dwarf debug info for ephemeral binaries

Update #6853

For an ephemeral binary - one created, run, and then deleted -
there is no need to write dwarf debug information, since the
binary will not be used with gdb. In this case, instruct the linker
not to spend time and disk space generating the debug information
by passing the -w flag to the linker.

Omitting dwarf information reduces the size of most binaries by 25%.
We may be more aggressive about this in the future.

LGTM=bradfitz, r
R=r, bradfitz
CC=golang-codereviews
https://golang.org/cl/65890043

11 years agocmd/ld: drop gcargs, gclocals symbols from symbol table
Russ Cox [Wed, 19 Feb 2014 15:00:44 +0000 (10:00 -0500)]
cmd/ld: drop gcargs, gclocals symbols from symbol table

Update #6853

Every function now has a gcargs and gclocals symbol
holding associated garbage collection information.
Put them all in the same meta-symbol as the go.func data
and then drop individual entries from symbol table.

Removing gcargs and gclocals reduces the size of a
typical binary by 10%.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/65870044

11 years agocmd/gc: fix handling of append with -race.
Rémy Oudompheng [Wed, 19 Feb 2014 07:19:27 +0000 (08:19 +0100)]
cmd/gc: fix handling of append with -race.

Also re-enable race tests in run.bash.

Fixes #7334.

LGTM=rsc
R=rsc, dvyukov, iant, bradfitz, dave
CC=golang-codereviews
https://golang.org/cl/65740043

11 years agocmd/gc: reject incorrect use of fallthrough.
Rémy Oudompheng [Wed, 19 Feb 2014 06:55:03 +0000 (07:55 +0100)]
cmd/gc: reject incorrect use of fallthrough.

Fixes #6500.

LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://golang.org/cl/14920053

11 years agoreflect: improve documentation of IsNil
Rob Pike [Wed, 19 Feb 2014 06:33:59 +0000 (22:33 -0800)]
reflect: improve documentation of IsNil
IsNil isn't quite the same as == nil, as this snippet shows:

// http://play.golang.org/p/huomslDZgw
package main

import "fmt"
import "reflect"

func main() {
        var i interface{}
        v := reflect.ValueOf(i)
        fmt.Println(v.IsValid(), i == nil)
        fmt.Println(v.IsNil())
}

The fact that IsNil panics if you call it with an untyped nil
was not apparent. Verbiage added for clarity.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/65480043

11 years agocmd/ld: remove Plan 9 symbol table
Russ Cox [Wed, 19 Feb 2014 04:41:15 +0000 (23:41 -0500)]
cmd/ld: remove Plan 9 symbol table

Update #6853

Nothing reads the Plan 9 symbol table anymore.
The last holdout was 'go tool nm', but since being rewritten in Go
it uses the standard symbol table for the binary format
(ELF, Mach-O, PE) instead.

Removing the Plan 9 symbol table saves ~15% disk space
on most binaries.

Two supporting changes included in this CL:

debug/gosym: use Go 1.2 pclntab to synthesize func-only
symbol table when there is no Plan 9 symbol table

debug/elf, debug/macho, debug/pe: ignore final EOF from ReadAt

LGTM=r
R=r, bradfitz
CC=golang-codereviews
https://golang.org/cl/65740045

11 years agomisc/emacs: add support for ff-find-other-file
Dominik Honnef [Wed, 19 Feb 2014 03:23:55 +0000 (22:23 -0500)]
misc/emacs: add support for ff-find-other-file

c-mode classically uses ff-find-other-file to toggle between headers
and implementation. For Go it seemingly makes sense to jump between
implementation and test.

While there's no enforced mapping of file names for tests, the mapping
in this CL seems to be very common at least throughout the standard
library, and ff-find-other-file fails gracefully when the mapping
doesn't apply.

LGTM=adonovan
R=adonovan
CC=golang-codereviews
https://golang.org/cl/65750044

11 years agomisc/emacs: actually use point argument that is passed to godef--call
Dominik Honnef [Wed, 19 Feb 2014 02:51:47 +0000 (21:51 -0500)]
misc/emacs: actually use point argument that is passed to godef--call

LGTM=adonovan
R=adonovan
CC=golang-codereviews
https://golang.org/cl/62600043

11 years agocmd/link: change cloneProg to return the cloned value
Rick Arnold [Wed, 19 Feb 2014 01:59:44 +0000 (17:59 -0800)]
cmd/link: change cloneProg to return the cloned value

The code was returning the original value rather than the cloned value
resulting in the tests not being repeatable.

Fixes #7111.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/65720045

11 years agocrypto/rc4: test the portable version too
Brad Fitzpatrick [Tue, 18 Feb 2014 23:16:07 +0000 (15:16 -0800)]
crypto/rc4: test the portable version too

Prevent bitrot. (similar to the previous sha1 and md5 CLs)

Fixes #6642

LGTM=agl
R=agl, dave
CC=golang-codereviews
https://golang.org/cl/65690043

11 years agoapi: whitelist change to unicode.Version
Brad Fitzpatrick [Tue, 18 Feb 2014 21:38:47 +0000 (13:38 -0800)]
api: whitelist change to unicode.Version

Unbreaks the build.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/65650043

11 years agodoc/go1.3.txt: unicode upgrade to 6.3.0
Rob Pike [Tue, 18 Feb 2014 19:50:38 +0000 (11:50 -0800)]
doc/go1.3.txt: unicode upgrade to 6.3.0

LGTM=mpvl
R=mpvl
CC=golang-codereviews
https://golang.org/cl/65550044

11 years agounicode: upgrade to Unicode 6.3.0
Marcel van Lohuizen [Tue, 18 Feb 2014 19:12:59 +0000 (20:12 +0100)]
unicode: upgrade to Unicode 6.3.0

This is a relatively minor change.

This does not result in changes to go.text/unicode/norm. The go.text
packages will therefore be relatively unaffected. It does make the
way for an upgrade to CLDR 24, though.

The tests of all.bash pass, as well as the tests in go.text after
this update.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/65400044

11 years agorun.bat: use double-colon to comment text
Alex Brainman [Tue, 18 Feb 2014 05:48:34 +0000 (16:48 +1100)]
run.bat: use double-colon to comment text

LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://golang.org/cl/64980043

11 years agogo/doc: document the conditions where examples are "playable"
Andrew Gerrand [Tue, 18 Feb 2014 04:53:22 +0000 (15:53 +1100)]
go/doc: document the conditions where examples are "playable"

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/64910043

11 years agoundo CL 64100044 / 04d062c2e81c
Russ Cox [Tue, 18 Feb 2014 02:34:58 +0000 (21:34 -0500)]
undo CL 64100044 / 04d062c2e81c

broke 32-bit builds

««« original CL description
cmd/gc, runtime: enable precisestack by default

Precisestack makes stack collection completely precise,
in the sense that there are no "used and not set" errors
in the collection of stack frames, no times where the collector
reads a pointer from a stack word that has not actually been
initialized with a pointer (possibly a nil pointer) in that function.

The most important part is interfaces: precisestack means
that if reading an interface value, the interface value is guaranteed
to be initialized, meaning that the type word can be relied
upon to be either nil or a valid interface type word describing
the data word.

This requires additional zeroing of certain values on the stack
on entry, which right now costs about 5% overall execution
time in all.bash. That cost will come down before Go 1.3
(issue 7345).

There are at least two known garbage collector bugs right now,
issues 7343 and 7344. The first happens even without precisestack.
The second I have only seen with precisestack, but that does not
mean that precisestack is what causes it. In fact it is very difficult
to explain by what precisestack does directly. Precisestack may
be exacerbating an existing problem. Both of those issues are
marked for Go 1.3 as well.

The reasons for enabling precisestack now are to give it more
time to soak and because the copying stack work depends on it.

LGTM=r
R=r
CC=golang-codereviews, iant, khr
https://golang.org/cl/64100044
»»»

TBR=r
CC=golang-codereviews
https://golang.org/cl/65230043

11 years agocmd/link: fix comment typo.
Nigel Tao [Tue, 18 Feb 2014 02:04:59 +0000 (13:04 +1100)]
cmd/link: fix comment typo.

LGTM=dsymonds
R=dsymonds
CC=golang-codereviews
https://golang.org/cl/64100045

11 years agocmd/gc, runtime: enable precisestack by default
Russ Cox [Tue, 18 Feb 2014 01:12:40 +0000 (20:12 -0500)]
cmd/gc, runtime: enable precisestack by default

Precisestack makes stack collection completely precise,
in the sense that there are no "used and not set" errors
in the collection of stack frames, no times where the collector
reads a pointer from a stack word that has not actually been
initialized with a pointer (possibly a nil pointer) in that function.

The most important part is interfaces: precisestack means
that if reading an interface value, the interface value is guaranteed
to be initialized, meaning that the type word can be relied
upon to be either nil or a valid interface type word describing
the data word.

This requires additional zeroing of certain values on the stack
on entry, which right now costs about 5% overall execution
time in all.bash. That cost will come down before Go 1.3
(issue 7345).

There are at least two known garbage collector bugs right now,
issues 7343 and 7344. The first happens even without precisestack.
The second I have only seen with precisestack, but that does not
mean that precisestack is what causes it. In fact it is very difficult
to explain by what precisestack does directly. Precisestack may
be exacerbating an existing problem. Both of those issues are
marked for Go 1.3 as well.

The reasons for enabling precisestack now are to give it more
time to soak and because the copying stack work depends on it.

LGTM=r
R=r
CC=golang-codereviews, iant, khr
https://golang.org/cl/64100044

11 years agoruntime: clear f, arg to avoid leak in timerproc
Russ Cox [Tue, 18 Feb 2014 01:11:53 +0000 (20:11 -0500)]
runtime: clear f, arg to avoid leak in timerproc

I have seen this cause leaks where not all objects in a sync.Pool
would be reclaimed during the sync package tests.
I found it while debugging the '0 of 100 finalized' failure we are
seeing on arm, but it seems not to be the root cause for that one.

LGTM=dave, dvyukov
R=golang-codereviews, dave, dvyukov
CC=golang-codereviews
https://golang.org/cl/64920044

11 years agoundo CL 64820044 / 4f9dee8402af
Dave Cheney [Mon, 17 Feb 2014 21:04:01 +0000 (08:04 +1100)]
undo CL 64820044 / 4f9dee8402af

Callers of md5.Sum should do so to avoid allocations, the example did not demonstate this property.

««« original CL description
crypto/md5: add example for Sum

LGTM=dave
R=golang-codereviews, dave
CC=golang-codereviews
https://golang.org/cl/64820044

»»»

LGTM=minux.ma
R=r, minux.ma
CC=golang-codereviews
https://golang.org/cl/65180043

11 years agocrypto/md5: add example for Sum
ChaiShushan [Mon, 17 Feb 2014 03:33:00 +0000 (14:33 +1100)]
crypto/md5: add example for Sum

LGTM=dave
R=golang-codereviews, dave
CC=golang-codereviews
https://golang.org/cl/64820044

11 years agocmd/gc: correct function name in internal error messages
Ian Lance Taylor [Mon, 17 Feb 2014 03:14:06 +0000 (19:14 -0800)]
cmd/gc: correct function name in internal error messages

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/64090043

11 years agotesting: ease writing parallel benchmarks
Dmitriy Vyukov [Mon, 17 Feb 2014 02:29:56 +0000 (06:29 +0400)]
testing: ease writing parallel benchmarks
Add b.RunParallel function that captures parallel benchmark boilerplate:
creates worker goroutines, joins worker goroutines, distributes work
among them in an efficient way, auto-tunes grain size.
Fixes #7090.

R=bradfitz, iant, josharian, tracey.brendan, r, rsc, gobot
CC=golang-codereviews
https://golang.org/cl/57270043

11 years agonet/http: close body in benchmarks
Dmitriy Vyukov [Mon, 17 Feb 2014 02:04:31 +0000 (06:04 +0400)]
net/http: close body in benchmarks
Is it required? Why don't we do it?

R=bradfitz
CC=golang-codereviews
https://golang.org/cl/61150043

11 years agogo/build: temporarily disable cgo for freebsd/arm
Dave Cheney [Sun, 16 Feb 2014 09:46:03 +0000 (20:46 +1100)]
go/build: temporarily disable cgo for freebsd/arm

Update #7331

cgo is currently broken on freebsd/arm.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/63900043

11 years agobuild: disable race detector test in run.bat on windows
Russ Cox [Sun, 16 Feb 2014 01:03:41 +0000 (20:03 -0500)]
build: disable race detector test in run.bat on windows

CL 64170043 disabled it in run.bash for Unix systems.
I did not realize Windows systems also ran the race detector test.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/64480043

11 years agocmd/gc: record &x[0] as taking address of x, if x is an array
Russ Cox [Sun, 16 Feb 2014 01:01:15 +0000 (20:01 -0500)]
cmd/gc: record &x[0] as taking address of x, if x is an array

Not recording the address being taken was causing
the liveness analysis not to preserve x in the absence
of direct references to x, which in turn was making the
net test fail with GOGC=0.

In addition to the test, this fixes a bug wherein
        GOGC=0 go test -short net
crashed if liveness analysis was in use (like at tip, not like Go 1.2).

TBR=ken2
CC=golang-codereviews
https://golang.org/cl/64470043

11 years agocmd/gc: avoid pointer beyond array in range loop
Russ Cox [Sun, 16 Feb 2014 01:00:57 +0000 (20:00 -0500)]
cmd/gc: avoid pointer beyond array in range loop

This problem was discovered by reading the code.
I have not seen it in practice, nor do I have any ideas
on how to trigger it reliably in a test. But it's still worth
fixing.

TBR=ken2
CC=golang-codereviews
https://golang.org/cl/64370046

11 years agodebug/elf: correct test failure print
Russ Cox [Sun, 16 Feb 2014 01:00:15 +0000 (20:00 -0500)]
debug/elf: correct test failure print

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/64380043

11 years agocmd/gc: correct liveness for fat variables
Russ Cox [Sat, 15 Feb 2014 15:58:55 +0000 (10:58 -0500)]
cmd/gc: correct liveness for fat variables

The VARDEF placement must be before the initialization
but after any final use. If you have something like s = ... using s ...
the rhs must be evaluated, then the VARDEF, then the lhs
assigned.

There is a large comment in pgen.c on gvardef explaining
this in more detail.

This CL also includes Ian's suggestions from earlier CLs,
namely commenting the use of mode in link.h and fixing
the precedence of the ~r check in dcl.c.

This CL enables the check that if liveness analysis decides
a variable is live on entry to the function, that variable must
be a function parameter (not a result, and not a local variable).
If this check fails, it indicates a bug in the liveness analysis or
in the generated code being analyzed.

The race detector generates invalid code for append(x, y...).
The code declares a temporary t and then uses cap(t) before
initializing t. The new liveness check catches this bug and
stops the compiler from writing out the buggy code.
Consequently, this CL disables the race detector tests in
run.bash until the race detector bug can be fixed
(golang.org/issue/7334).

Except for the race detector bug, the liveness analysis check
does not detect any problems (this CL and the previous CLs
fixed all the detected problems).

The net test still fails with GOGC=0 but the rest of the tests
now pass or time out (because GOGC=0 is so slow).

TBR=iant
CC=golang-codereviews
https://golang.org/cl/64170043

11 years agocmd/gc: do not lower copy to a value node in go/defer.
Rémy Oudompheng [Sat, 15 Feb 2014 15:39:04 +0000 (16:39 +0100)]
cmd/gc: do not lower copy to a value node in go/defer.

The existing tests issue4463.go and issue4654.go had failures at
typechecking and did not test walking the AST.

Fixes #7272.

LGTM=khr
R=khr, rsc, iant
CC=golang-codereviews
https://golang.org/cl/60550044

11 years agotext/template: don't panic when function call evaluates a nil pointer
Rob Pike [Sat, 15 Feb 2014 00:26:47 +0000 (16:26 -0800)]
text/template: don't panic when function call evaluates a nil pointer
Catch the error instead and return it to the user. Before this fix,
the template package panicked. Now you get:
        template: bug11:1:14: executing "bug11" at <.PS>: dereference of nil pointer of type *string
Extended example at http://play.golang.org/p/uP6pCW3qKT

Fixes #7333.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/64150043

11 years agocodereview: fix for Mercurial 2.9
Anthony Martin [Fri, 14 Feb 2014 23:56:58 +0000 (15:56 -0800)]
codereview: fix for Mercurial 2.9

The branchtags method was removed but we should've
been using branchmap all along.

http://selenic.com/hg/rev/4274eda143cb

LGTM=franciscossouza, r
R=golang-codereviews, franciscossouza, r
CC=golang-codereviews
https://golang.org/cl/57500045

11 years agocompress/bzip2: support superfluous Huffman levels.
Adam Langley [Fri, 14 Feb 2014 22:17:19 +0000 (17:17 -0500)]
compress/bzip2: support superfluous Huffman levels.

These should never be found in a bzip2 file but it does appear that
there's a buggy encoder that is producing them. Since the official
bzip2 handles this case, this change makes the Go code do likewise.

With this change, the code produces the same output as the official
bzip2 code on the invalid example given in the bug.

Fixes #7279.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/64010043

11 years agoruntime: fix "invalid address in sys call" on Plan 9
David du Colombier [Fri, 14 Feb 2014 21:27:47 +0000 (22:27 +0100)]
runtime: fix "invalid address in sys call" on Plan 9

Rfork is not splitting the stack when creating a new thread,
so the parent and child are executing on the same stack.
However, if the parent returns and keeps executing before
the child can read the arguments from the parent stack,
the child will not see the right arguments. The solution
is to load the needed pieces from the parent stack into
register before INT $64.

Thanks to Russ Cox for the explanation.

LGTM=rsc
R=rsc
CC=ality, golang-codereviews
https://golang.org/cl/64140043

11 years agomath/big: Add text marshaller interface to Int
Michael T. Jones [Fri, 14 Feb 2014 20:57:03 +0000 (12:57 -0800)]
math/big: Add text marshaller interface to Int

Fixes #7329

LGTM=gri
R=gri, bradfitz, mtj
CC=golang-codereviews
https://golang.org/cl/63710043

11 years agocmd/go: remove cross compiling restriction on cgo
Elias Naur [Fri, 14 Feb 2014 19:36:52 +0000 (11:36 -0800)]
cmd/go: remove cross compiling restriction on cgo

A previous CL added support for cross compiling with cgo, but
missed the GOOS check in cmd/go. Remove it.

Update #4714

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/57210046

11 years agoruntime: if traceback sees a breakpoint, don't change the PC
Ian Lance Taylor [Fri, 14 Feb 2014 19:06:53 +0000 (11:06 -0800)]
runtime: if traceback sees a breakpoint, don't change the PC

Changing the PC confuses gdb, because execution does not
continue where gdb expects it.  Not changing the PC has the
potential to confuse a stack dump, but when running under gdb
it seems better to confuse a stack dump than to confuse gdb.

Fixes #6776.

LGTM=rsc
R=golang-codereviews, dvyukov, rsc
CC=golang-codereviews
https://golang.org/cl/49580044

11 years agonet: handle IP interface stack correctly on linux
Mikio Hara [Fri, 14 Feb 2014 16:07:51 +0000 (01:07 +0900)]
net: handle IP interface stack correctly on linux

A configuration like the following:

7: tun6rd: <NOARP,UP,LOWER_UP> mtu 1280
        link/sit 10.11.12.13 brd 0.0.0.0
        inet 1.2.3.4/24 scope global tun6rd
        inet6 2014:1001:a0b:c0d::1/32 scope global
        inet6 ::10.11.12.13/128 scope global
9: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1496
        link/ppp
        inet 192.168.101.234 peer 192.168.102.234/32 scope global ppp0
        inet 10.20.30.40/24 scope global ppp0
        inet6 2014:1002::1/64 scope global
11: tun0@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480
        link/ipip 192.168.202.34 peer 192.168.202.69
        inet 192.168.10.1/24 scope global tunnel0
        inet6 2014:1003::1/64 scope global

will be handled like below.

"tun6rd": flags "up", ifindex 7, mtu 1280
        hardware address ""
        interface address "1.2.3.4/24"
        interface address "2014:1001:a0b:c0d::1/32"
        interface address "::a0b:c0d/128"
"ppp0": flags "up|pointtopoint|multicast", ifindex 9, mtu 1496
        hardware address ""
        interface address "192.168.101.234/32"
        interface address "10.20.30.40/24"
        interface address "2014:1002::1/64"
"tun0": flags "up|pointtopoint", ifindex 11, mtu 1480
        hardware address ""
        interface address "192.168.10.1/24"
        interface address "2014:1003::1/64"

Fixes #6433.
Update #4839

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/57700043

11 years agosyscall: make use of include/linux when generating system constants
Mikio Hara [Fri, 14 Feb 2014 15:47:28 +0000 (00:47 +0900)]
syscall: make use of include/linux when generating system constants

On Linux include/net directory is just to help porting applications
from BSDs and files under net keep less information than include/linux.
Making use of files under include/linux instead of include/net prevents
lack of information.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/63930043

11 years agoruntime: remove misleading message during crash
Dmitriy Vyukov [Fri, 14 Feb 2014 09:24:48 +0000 (13:24 +0400)]
runtime: remove misleading message during crash
The following checkdead message is false positive:

$ go test -race -c runtime
$ ./runtime.test -test.cpu=2 -test.run=TestSmhasherWindowed -test.v
=== RUN TestSmhasherWindowed-2
checkdead: find g 18 in status 1
SIGABRT: abort
PC=0x42bff1

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews, iant, khr
https://golang.org/cl/59490046

11 years agoruntime: fix mem profile when both large and small objects are allocated at the same...
Dmitriy Vyukov [Fri, 14 Feb 2014 09:20:41 +0000 (13:20 +0400)]
runtime: fix mem profile when both large and small objects are allocated at the same stack
Currently small and large (size>rate) objects are merged into a single entry.
But rate adjusting is required only for small objects.
As a result pprof either incorrectly adjusts large objects
or does not adjust small objects.
With this change objects of different sizes are stored in different buckets.

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/59220049

11 years agocmd/gc: fix build for 'default unsigned char' compilers
Russ Cox [Fri, 14 Feb 2014 05:43:43 +0000 (00:43 -0500)]
cmd/gc: fix build for 'default unsigned char' compilers

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63680045

11 years agocmd/go: hide the "TERM" environment variable from "go env"
Shenghou Ma [Fri, 14 Feb 2014 05:38:55 +0000 (00:38 -0500)]
cmd/go: hide the "TERM" environment variable from "go env"
It's implementation detail.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/63690043

11 years agocmd/gc: correct liveness for various non-returning functions
Russ Cox [Fri, 14 Feb 2014 05:38:24 +0000 (00:38 -0500)]
cmd/gc: correct liveness for various non-returning functions

When the liveness code doesn't know a function doesn't return
(but the generated code understands that), the liveness analysis
invents a control flow edge that is not really there, which can cause
variables to seem spuriously live. This is particularly bad when the
variables are uninitialized.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63720043

11 years agoruntime: fix windows cpu profiler
Dmitriy Vyukov [Fri, 14 Feb 2014 05:20:51 +0000 (09:20 +0400)]
runtime: fix windows cpu profiler
Currently it periodically fails with the following message.
The immediate cause is the wrong base register when obtaining g
in sys_windows_amd64/386.s.
But there are several secondary problems as well.

runtime: unknown pc 0x0 after stack split
panic: invalid memory address or nil pointer dereference
fatal error: panic during malloc
[signal 0xc0000005 code=0x0 addr=0x60 pc=0x42267a]

runtime stack:
runtime.panic(0x7914c0, 0xc862af)
        c:/src/perfer/work/windows-amd64-a15f344a9efa/go/src/pkg/runtime/panic.c:217 +0x2c
runtime: unexpected return pc for runtime.externalthreadhandler called from 0x0

R=rsc, alex.brainman
CC=golang-codereviews
https://golang.org/cl/63310043

11 years agocmd/gc: correct liveness for func ending in panic
Russ Cox [Fri, 14 Feb 2014 04:56:53 +0000 (23:56 -0500)]
cmd/gc: correct liveness for func ending in panic

The registerization code needs the function to end in a RET,
even if that RET is actually unreachable.

The liveness code needs to avoid such unreachable RETs.
It had a special case for final RET after JMP, but no case
for final RET after UNDEF. Instead of expanding the special
cases, let fixjmp - which already knows what is and is not
reachable definitively - mark the unreachable RET so that
the liveness code can identify it.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63680043

11 years agocmd/gc: correct liveness for wrappers containing tail jumps
Russ Cox [Fri, 14 Feb 2014 04:33:20 +0000 (23:33 -0500)]
cmd/gc: correct liveness for wrappers containing tail jumps

A normal RET is treated as using the return values,
but a tail jump RET does not - it is jumping to the
function that is going to fill in the return values.
If a tail jump RET is recorded as using the return values,
since nothing initializes them they will be marked as
live on entry to the function, which is clearly wrong.

Found and tested by the new code in plive.c that looks
for variables that are incorrectly live on entry.
That code is disabled for now because there are other
cases remaining to be fixed. But once it is enabled,
test/live1.go becomes a real test of this CL.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63570045

11 years agocmd/gc: handle variable initialization by block move in liveness
Russ Cox [Fri, 14 Feb 2014 03:45:16 +0000 (22:45 -0500)]
cmd/gc: handle variable initialization by block move in liveness

Any initialization of a variable by a block copy or block zeroing
or by multiple assignments (componentwise copying or zeroing
of a multiword variable) needs to emit a VARDEF. These cases were not.

Fixes #7205.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63650044