summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* [dev.cc] all: merge default (8d42099cdc23) into dev.ccdev.ccRuss Cox2014-12-0516-58/+268
|\ | | | | | | | | | | TBR=austin CC=golang-codereviews https://codereview.appspot.com/178700044
| * cmd/go: fix buildRob Pike2014-12-052-2/+2
| | | | | | | | | | | | | | | | | | | | The new semantics of split require the newline be present. The test was stale. LGTM=adg R=golang-codereviews, adg CC=golang-codereviews https://codereview.appspot.com/182480043
| * cmd/go: avoid use of bufio.Scanner in generateRob Pike2014-12-052-22/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Scanner can't handle stupid long lines and there are reports of stupid long lines in production. Note the issue isn't long "//go:generate" lines, but any long line in any Go source file. To be fair, if you're going to have a stupid long line it's not a bad bet you'll want to run it through go generate, because it's some embeddable asset that has been machine generated. (One could ask why that generation process didn't add a newline or two, but we should cope anyway.) Rewrite the file scanner in "go generate" so it can handle arbitrarily long lines, and only stores in memory those lines that start "//go:generate". Also: Adjust the documentation to make clear that it does not parse the file. Fixes issue 9143. Fixes issue 9196. LGTM=rsc, dominik.honnef R=rsc, cespare, minux, dominik.honnef CC=golang-codereviews https://codereview.appspot.com/182970043
| * cmd/pprof/internal/commands: add command to open browser on windowsShenghou Ma2014-12-041-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | While we're at there, also add a message to prompt the user to install Graphviz if "dot" command is not found. Fixes issue 9178. LGTM=adg, alex.brainman, cookieo9, rsc R=rsc, adg, bradfitz, alex.brainman, cookieo9, smyrman CC=golang-codereviews https://codereview.appspot.com/180380043 Committer: Russ Cox <rsc@golang.org>
| * lib/time: update to ICANN time zone database 2014jRob Pike2014-12-032-2/+2
| | | | | | | | | | | | | | | | | | Fixes issue 9189. LGTM=dsymonds R=golang-codereviews, dsymonds CC=golang-codereviews https://codereview.appspot.com/178660043
| * spec: add comment marker for consistency.David Symonds2014-12-041-1/+1
| | | | | | | | | | | | | | LGTM=r R=gri, r CC=golang-codereviews https://codereview.appspot.com/185830043
| * cmd/pprof: fix symbol resolution for remote profilesRuss Cox2014-12-031-0/+4
| | | | | | | | | | | | | | | | | | Fixes issue 9199. LGTM=iant R=golang-codereviews, iant CC=austin, golang-codereviews, minux https://codereview.appspot.com/183080043
| * cmd/go: regenerate doc.goDominik Honnef2014-12-032-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | Move change from CL 170770043 to correct file and regenerate docs for changes from CL 164120043. LGTM=adg R=golang-codereviews, adg, bradfitz CC=golang-codereviews https://codereview.appspot.com/183000043 Committer: Andrew Gerrand <adg@golang.org>
| * tag go1.4rc2Andrew Gerrand2014-12-020-0/+0
| | | | | | | | | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/178600043
| * runtime: fix hang in GC due to shrinkstack vs netpoll raceRuss Cox2014-12-013-6/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During garbage collection, after scanning a stack, we think about shrinking it to reclaim some memory. The shrinking code (called while the world is stopped) checked that the status was Gwaiting or Grunnable and then changed the state to Gcopystack, to essentially lock the stack so that no other GC thread is scanning it. The same locking happens for stack growth (and is more necessary there). oldstatus = runtime?readgstatus(gp); oldstatus &= ~Gscan; if(oldstatus == Gwaiting || oldstatus == Grunnable) runtime?casgstatus(gp, oldstatus, Gcopystack); // oldstatus is Gwaiting or Grunnable else runtime?throw("copystack: bad status, not Gwaiting or Grunnable"); Unfortunately, "stop the world" doesn't stop everything. It stops all normal goroutine execution, but the network polling thread is still blocked in epoll and may wake up. If it does, and it chooses a goroutine to mark runnable, and that goroutine is the one whose stack is shrinking, then it can happen that between readgstatus and casgstatus, the status changes from Gwaiting to Grunnable. casgstatus assumes that if the status is not what is expected, it is a transient change (like from Gwaiting to Gscanwaiting and back, or like from Gwaiting to Gcopystack and back), and it loops until the status has been restored to the expected value. In this case, the status has changed semi-permanently from Gwaiting to Grunnable - it won't change again until the GC is done and the world can continue, but the GC is waiting for the status to change back. This wedges the program. To fix, call a special variant of casgstatus that accepts either Gwaiting or Grunnable as valid statuses. Without the fix bug with the extra check+throw in casgstatus, the program below dies in a few seconds (2-10) with GOMAXPROCS=8 on a 2012 Retina MacBook Pro. With the fix, it runs for minutes and minutes. package main import ( "io" "log" "net" "runtime" ) func main() { const N = 100 for i := 0; i < N; i++ { l, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { log.Fatal(err) } ch := make(chan net.Conn, 1) go func() { var err error c1, err := net.Dial("tcp", l.Addr().String()) if err != nil { log.Fatal(err) } ch <- c1 }() c2, err := l.Accept() if err != nil { log.Fatal(err) } c1 := <-ch l.Close() go netguy(c1, c2) go netguy(c2, c1) c1.Write(make([]byte, 100)) } for { runtime.GC() } } func netguy(r, w net.Conn) { buf := make([]byte, 100) for { bigstack(1000) _, err := io.ReadFull(r, buf) if err != nil { log.Fatal(err) } w.Write(buf) } } var g int func bigstack(n int) { var buf [100]byte if n > 0 { bigstack(n - 1) } g = int(buf[0]) + int(buf[99]) } Fixes issue 9186. LGTM=rlh R=austin, rlh CC=dvyukov, golang-codereviews, iant, khr, r https://codereview.appspot.com/179680043
| * reflect: Fix reflect.funcLayout. The GC bitmap has two bits perKeith Randall2014-12-013-2/+122
| | | | | | | | | | | | | | | | | | | | | | pointer, not one. Fixes issue 9179 LGTM=iant, rsc R=golang-codereviews, iant, rsc CC=golang-codereviews https://codereview.appspot.com/182160043
| * doc: tidy up "Projects" page; add Go 1.4Andrew Gerrand2014-11-251-13/+8
| | | | | | | | | | | | | | LGTM=r R=r CC=golang-codereviews https://codereview.appspot.com/182750043
| * go/build: build $GOOS_test.go alwaysRuss Cox2014-11-242-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | We decided to build $GOOS.go always but forgot to test $GOOS_test.go. Fixes issue 9159. LGTM=r R=r CC=golang-codereviews https://codereview.appspot.com/176290043
* | [dev.cc] liblink: don't patch jumps to jumps to symbolsAustin Clements2014-12-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When liblink sees something like JMP x ... x: JMP y it rewrites the first jump to jump directly to y. This is fine if y is a resolved label. However, it *also* does this if y is a function symbol, but fails to carry over the relocation that would later patch in that symbol's value. As a result, the original jump becomes either a self-jump (if relative) or a jump to PC 0 (if absolute). Fix this by disabling this optimization if the jump being patched in is a jump to a symbol. LGTM=minux R=rsc, minux CC=golang-codereviews https://codereview.appspot.com/185890044
* | [dev.cc] cmd/ld: finalize linkmode before determining whether to import ↵Shenghou Ma2014-12-051-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | runtime/cgo Frankly, I don't understand how the current code could possibly work except when every android program is using cgo. Discovered this while working on the iOS port. LGTM=crawshaw, rsc R=rsc, crawshaw CC=golang-codereviews https://codereview.appspot.com/177470043
* | [dev.cc] 9l: make R_CALLPOWER like ELF's R_PPC64_REL24Austin Clements2014-11-252-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These accomplished the same thing, but R_CALLPOWER expected the whole instruction to be in the addend (and completely overwrote what was in the text section), while R_PPC64_REL24 overwrites only bits 6 through 24 of whatever was in the text section. Make R_CALLPOWER work like R_PPC64_REL24 to ease the implementation of dynamic linking. LGTM=rsc R=rsc CC=golang-codereviews, minux https://codereview.appspot.com/177430043
* | [dev.cc] cmd/5g,cmd/6g,cmd/9g: fix warnings on Plan 9David du Colombier2014-11-253-3/+3
| | | | | | | | | | | | | | | | | | | | | | warning: src/cmd/5g/reg.c:461 format mismatch d VLONG, arg 5 warning: src/cmd/6g/reg.c:396 format mismatch d VLONG, arg 5 warning: src/cmd/9g/reg.c:440 format mismatch d VLONG, arg 5 LGTM=minux R=rsc, minux CC=golang-codereviews https://codereview.appspot.com/179300043
* | [dev.cc] 9g: peephole optimizerAustin Clements2014-11-241-4/+892
| | | | | | | | | | | | | | | | | | | | | | This was based on the 9c peephole optimizer, modified to work with code generated by gc and use the proginfo infrastructure in gc. LGTM=rsc R=rsc, bradfitz, minux CC=golang-codereviews https://codereview.appspot.com/179190043
* | [dev.cc] 9g: fill progtable for CC, V, and VCC instruction variantsAustin Clements2014-11-242-0/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds some utilities for converting between the CC, V, and VCC variants of operations and uses these to derive the ProgInfo entries for these variants (which are identical to the ProgInfo for the base operations). The 9g peephole optimizer will also use these conversion utilities. LGTM=minux, rsc R=rsc, dave, minux CC=golang-codereviews https://codereview.appspot.com/180110044
* | [dev.cc] runtime: convert dragonfly/386 port to GoJoel Sing2014-11-253-59/+78
| | | | | | | | | | | | | | LGTM=rsc R=rsc, bradfitz CC=golang-codereviews https://codereview.appspot.com/178210043
* | [dev.cc] all: merge default (95f5614b4648) into dev.ccRuss Cox2014-11-235-36/+72
|\ \ | |/ | | | | | | | | TBR=austin CC=golang-codereviews https://codereview.appspot.com/177220044
| * image/jpeg: handle Read returning n > 0, err != nil in d.fillRuss Cox2014-11-222-0/+49
| | | | | | | | | | | | | | | | | | Fixes issue 9127. LGTM=r R=bradfitz, r CC=golang-codereviews, nigeltao https://codereview.appspot.com/178120043
| * cmd/go: fix running pprof on windows.Shenghou Ma2014-11-221-11/+1
| | | | | | | | | | | | | | | | | | | | | | Fixes issue 9149. LGTM=alex.brainman, rsc R=rsc, dave, alex.brainman CC=golang-codereviews https://codereview.appspot.com/176170043 Committer: Russ Cox <rsc@golang.org>
| * go/parser: Use test-specific filesets to avoid races.Robert Griesemer2014-11-202-25/+22
| | | | | | | | | | | | | | | | | | | | | | | | Only affects test code. Fixes issue 9025. Fixes issue 9130. LGTM=r, adonovan R=adonovan, r CC=golang-codereviews https://codereview.appspot.com/180920043
* | [dev.cc] runtime: convert netbsd/386 port to GoJoel Sing2014-11-225-45/+71
| | | | | | | | | | | | | | LGTM=minux R=rsc, minux CC=golang-codereviews https://codereview.appspot.com/177170043
* | [dev.cc] runtime: convert netbsd/amd64 port to GoJoel Sing2014-11-2212-511/+436
| | | | | | | | | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/169620043
* | [dev.cc] runtime: migrate Android/ARM port to Go.Shenghou Ma2014-11-215-10/+5
| | | | | | | | | | | | | | | | | | I tested building Go itself, but not any of go.mobile tests. LGTM=crawshaw R=crawshaw, rsc CC=golang-codereviews https://codereview.appspot.com/179110043
* | [dev.cc] runtime: explicitly exclude android in zgoos_linux.goShenghou Ma2014-11-2112-22/+4
| | | | | | | | | | | | | | | | | | | | Otherwise both zgoos_linux.go and zgoos_android.go will be compiled for GOOS=android. LGTM=crawshaw, rsc R=rsc, crawshaw CC=golang-codereviews https://codereview.appspot.com/178110043
* | [dev.cc] liblink: more docs on Prog and Addr fieldsAustin Clements2014-11-211-1/+2
| | | | | | | | | | | | | | LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/174530043
* | [dev.cc] 9g: correct bad proginfo for ADUFFZERO and ADUFFCOPYAustin Clements2014-11-211-4/+5
| | | | | | | | | | | | | | LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/176130044
* | [dev.cc] liblink: fix warnings on Plan 9David du Colombier2014-11-213-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | warning: src/liblink/list6.c:94 set and not used: s warning: src/liblink/list6.c:157 format mismatch ld VLONG, arg 3 warning: src/liblink/list6.c:157 format mismatch E UINT, arg 4 warning: src/liblink/list6.c:157 format mismatch d VLONG, arg 5 warning: src/liblink/list6.c:163 set and not used: s warning: src/liblink/list9.c:105 set and not used: s warning: src/liblink/list9.c:185 format mismatch ld VLONG, arg 3 warning: src/liblink/list9.c:185 format mismatch E UINT, arg 4 warning: src/liblink/list9.c:185 format mismatch d VLONG, arg 5 warning: src/liblink/list9.c:193 set and not used: s LGTM=rsc R=rsc CC=austin, golang-codereviews, minux https://codereview.appspot.com/176130043
* | [dev.cc] cmd/8g: fix warning on Plan 9David du Colombier2014-11-211-1/+1
| | | | | | | | | | | | | | | | | | warning: /usr/go/src/cmd/8g/reg.c:365 format mismatch d VLONG, arg 5 LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/177160043
* | [dev.cc] runtime: convert Plan 9 port to GoDavid du Colombier2014-11-2118-923/+756
| | | | | | | | | | | | | | | | | | | | Thanks to Aram H?v?rneanu, Nick Owens and Russ Cox for the early reviews. LGTM=aram, rsc R=rsc, lucio.dere, aram, ality CC=golang-codereviews, mischief https://codereview.appspot.com/175370043
* | [dev.cc] runtime: convert nacl support to GoRuss Cox2014-11-2120-767/+562
| | | | | | | | | | | | | | LGTM=dave R=minux, dave CC=golang-codereviews https://codereview.appspot.com/181030043
* | [dev.cc] build: skip API checks on Windows too (not just Unix)Russ Cox2014-11-211-3/+5
| | | | | | | | | | | | TBR=brainman CC=golang-codereviews https://codereview.appspot.com/175490043
* | [dev.cc] runtime: windows does not use _cgo_setenv and _cgo_unsetenvAlex Brainman2014-11-211-5/+7
| | | | | | | | | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/175480043
* | [dev.cc] runtime: fix windows goenvs conversion mistakeAlex Brainman2014-11-211-2/+2
| | | | | | | | | | | | | | | | | | uint16 occupies 2 bytes, not 1 LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/178100043
* | [dev.cc] liblink: fix Solaris build some moreAustin Clements2014-11-201-3/+3
| | | | | | | | | | | | | | | | | | | | | | a->name and a->class are char, so Solaris doesn't like using them as array indexes. (This same problem was fixed for amd64 in CL 169630043.) LGTM=aram, minux R=rsc, minux, aram CC=golang-codereviews https://codereview.appspot.com/175430043
* | [dev.cc] all: merge default (e4ab8f908aac) into dev.ccRuss Cox2014-11-20533-72629/+57115
|\ \ | |/ |/| | | | | | | TBR=austin CC=golang-codereviews https://codereview.appspot.com/179040044
| * [dev.cc] all: merge dev.power64 (f57928630b36) into dev.ccRuss Cox2014-11-20490-83017/+24611
| |\ | | | | | | | | | | | | | | | | | | | | | This will be the last dev.power64 merge; we'll finish on dev.cc. TBR=austin CC=golang-codereviews https://codereview.appspot.com/175420043
| | * [dev.cc] runtime: convert remaining windows C code to GoAlex Brainman2014-11-2012-984/+853
| | | | | | | | | | | | | | | | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/177090043
| | * [dev.cc] runtime: add explicit siginfo.si_addr fieldAustin Clements2014-11-199-27/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | struct siginfo_t's si_addr field is part of a union. Previously, we represented this union in Go using an opaque byte array and accessed the si_addr field using unsafe (and wrong on 386 and arm!) pointer arithmetic. Since si_addr is the only field we use from this union, this replaces the opaque byte array with an explicit declaration of the si_addr field and accesses it directly. LGTM=minux, rsc R=rsc, minux CC=golang-codereviews https://codereview.appspot.com/179970044
| | * [dev.cc] runtime: decode power64 branch instructions the way the CPU doesAustin Clements2014-11-191-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, this used the top 8 bits of an instruction as a sort-of opcode and ignored the top two bits of the relative PC. This worked because these jumps are always negative and never big enough for the top two bits of the relative PC (also the bottom 2 bits of the sort-of opcode) to be anything other than 0b11, but the code is confusing because it doesn't match the actual structure of the instruction. Instead, use the real 6 bit opcode and use all 24 bits of relative PC. LGTM=rsc R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/179960043
| | * [dev.cc] runtime: allow more address bits in lfstack on Power64Austin Clements2014-11-192-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, lfstack assumed Linux limited user space addresses to 43 bits on Power64 based on a paper from 2001. It turns out the limit is now 46 bits, so lfstack was truncating pointers. Raise the limit to 48 bits (for some future proofing and to make it match amd64) and add a self-test that will fail in a useful way if ever unpack(pack(x)) != x. With this change, dev.cc passes all.bash on power64le. LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/174430043
| | * [dev.cc] runtime: update sys_windows_386.s and sys_windows_amd64.s for Go ↵Alex Brainman2014-11-192-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | conversion LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/176970043
| | * [dev.cc] runtime: merge power64 onM/onM_signalok into systemstackAustin Clements2014-11-181-33/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the power64 component of CL 174950043. With this, dev.cc compiles on power64 and power64le and passes most tests if GOGC=off (but crashes in go_bootstrap if GC is on). LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/175290043
| | * [dev.cc] runtime: catch defs_linux_power64*.go up to other archsAustin Clements2014-11-182-4/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix a constant conversion error. Add set_{sec,nsec} for timespec and set_usec for timeval. Fix type of sigaltstackt.ss_size. LGTM=rsc R=rsc, bradfitz CC=golang-codereviews https://codereview.appspot.com/180840043
| | * [dev.cc] runtime: convert power64-specific .c and .h files to GoAustin Clements2014-11-187-66/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | The power64 equivalent of CL 174860043 LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/179890043
| | * [dev.cc] runtime: convert power64 assembly files for C to Go transitionAustin Clements2014-11-182-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | The power64 equivalent of CL 168510043 LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/178940043
| | * [dev.cc] runtime: convert power64 signal handlers from C to GoAustin Clements2014-11-185-235/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | | The power64 equivalent of CL 168500044 LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/175280043