summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* runtime: a few cleanups.Keith Randall2014-09-087-18/+13
| | | | | | | LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/134630043
* androidtest.bash: adjustment for move from src/pkg to srcDavid Crawshaw2014-09-081-1/+1
| | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/142740043
* cmd/cc: fix undefined behaviour warning in bv.cDave Cheney2014-09-081-1/+1
| | | | | | | | | | | | Fixes warning # _/home/dfc/go/misc/cgo/test/backdoor /home/dfc/go/src/cmd/cc/bv.c:43:11: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/136330043
* cmd/gc: fix undefined behaviour warning in subr.cDave Cheney2014-09-081-1/+1
| | | | | | | | | | | Fixes warning /home/dfc/go/src/cmd/gc/subr.c:3469:8: runtime error: negation of -9223372036854775808 cannot be represented in type 'int64' (aka 'long'); cast to an unsigned type to negate this value to itself LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/141220043
* build: more adjustments for move from src/pkg to srcRuss Cox2014-09-082-3/+3
| | | | | | | | | | These were missed in CL 134570043. Fixes nacl, solaris builds. TBR=r CC=golang-codereviews https://codereview.appspot.com/136320043
* build: move package sources from src/pkg to srcRuss Cox2014-09-082097-0/+0
| | | | | | Preparation was in CL 134570043. This CL contains only the effect of 'hg mv src/pkg/* src'. For more about the move, see golang.org/s/go14nopkg.
* build: adjustments for move from src/pkg to srcRuss Cox2014-09-0867-259/+247
| | | | | | | | | | | | | | | | | | | This CL adjusts code referring to src/pkg to refer to src. Immediately after submitting this CL, I will submit a change doing 'hg mv src/pkg/* src'. That change will be too large to review with Rietveld but will contain only the 'hg mv'. This CL will break the build. The followup 'hg mv' will fix it. For more about the move, see golang.org/s/go14nopkg. LGTM=r R=r CC=golang-codereviews https://codereview.appspot.com/134570043
* net/http: add Transport.DialTLS hookBrad Fitzpatrick2014-09-072-20/+83
| | | | | | | | | | | | Per discussions out of https://codereview.appspot.com/128930043/ and golang-nuts threads and with agl. Fixes Issue 8522 LGTM=agl, adg R=agl, c, adg CC=c, golang-codereviews https://codereview.appspot.com/137940043
* runtime: implement time.now in assembly on plan9, solaris, windowsRuss Cox2014-09-079-43/+95
| | | | | | | | | | | | | | | | | | | These all used a C implementation that contained 64-bit divide by 1000000000. On 32-bit systems that ends up in the 64-bit C divide support, which makes other calls and ends up using a fair amount of stack. We could convert them to Go but then they'd still end up in software 64-bit divide code. That would be okay, because Go code can split the stack, but it's still unnecessary. Write time?now in assembly, just like on all the other systems, and use the actual hardware support for 64/32 -> 64/32 division. This cuts the software routines out entirely. The actual code to do the division is copied and pasted from the sys_darwin_*.s files. LGTM=alex.brainman R=golang-codereviews, alex.brainman CC=aram, golang-codereviews, iant, khr, r https://codereview.appspot.com/136300043
* net/http/httptest: delete TestIssue7264Russ Cox2014-09-071-23/+0
| | | | | | | | | | | | | | | | | | Now it's failing on Windows: panic: httptest: failed to listen on a port: listen tcp 127.0.0.1:0: listen: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full. Since we can't seem to understand what the test is trying to test, and because it is causing problems on multiple systems, delete it. Fixes issue 7264. TBR=bradfitz CC=brainman, golang-codereviews https://codereview.appspot.com/141210043
* runtime: fix semacquire->acquireSudog->malloc->gogc->semacquire loopRuss Cox2014-09-071-1/+13
| | | | | | | | | | This is what broke the build at http://build.golang.org/log/d9c6d334be16cbab85e99fddc6b4ba034319bd4e LGTM=iant R=golang-codereviews, iant CC=dvyukov, golang-codereviews, khr, r https://codereview.appspot.com/135580043
* net/http/httptest: fix deadlock in TestIssue7264Russ Cox2014-09-071-5/+5
| | | | | | | | | | | | | | | | | | | | I am seeing deadlocks waiting on <-inHandler. It seems to me that there is no guarantee that the handler actually runs, if the client does write header close connection fast enough. The server might see the EOF on the connection before it manages to invoke the handler. This change fixes the deadlock, but it may make the test not actually test anything. Not sure. LGTM=bradfitz R=bradfitz, dvyukov CC=golang-codereviews https://codereview.appspot.com/140970043
* runtime: save g to TLS more aggressivelyRuss Cox2014-09-073-25/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is one of those "how did this ever work?" bugs. The current build failures are happening because a fault comes up while executing on m->curg on a system-created thread using an m obtained from needm, but TLS is set to m->g0, not m->curg. On fault, sigtramp starts executing, assumes r10 (g) might be incorrect, reloads it from TLS, and gets m->g0, not m->curg. Then sighandler dutifully pushes a call to sigpanic onto the stack and returns to it. We're now executing on the m->curg stack but with g=m->g0. Sigpanic does a stack split check, sees that the SP is not in range (50% chance depending on relative ordering of m->g0's and m->curg's stacks), and then calls morestack. Morestack sees that g=m->g0 and crashes the program. The fix is to replace every change of g in asm_arm.s with a call to a function that both updates g and saves the updated g to TLS. Why did it start happening? That's unclear. Unfortunately there were other bugs in the initial checkin that mask exactly which of a sequence of CLs started the behavior where sigpanic would end up tripping the stack split. Fixes arm build. Fixes issue 8675. LGTM=iant R=golang-codereviews, iant CC=dave, golang-codereviews, khr, minux, r https://codereview.appspot.com/135570043
* crypto/tls: print unexpected error in testRuss Cox2014-09-071-1/+1
| | | | | | | | Maybe will help us understand Solaris build failure. TBR=aram CC=golang-codereviews https://codereview.appspot.com/139290043
* liblink: fix arm wrapper prologueRuss Cox2014-09-071-1/+1
| | | | | | | | Fixes arm build. TBR=khr CC=golang-codereviews https://codereview.appspot.com/132700043
* build: fix windows make.batRuss Cox2014-09-071-1/+1
| | | | | | | | | The Unix make.bash builds cmd/dist from *.c. make.bat apparently does not. TBR=r CC=golang-codereviews https://codereview.appspot.com/137280043
* cmd/dist: remove goc2cRuss Cox2014-09-073-860/+0
| | | | | | | | | | | | | After the three pending CLs listed below, there will be no more .goc files. 134580043 runtime: move stubs.goc code into runtime.c 133670043 runtime: fix windows syscalls for copying stacks 141180043 runtime: eliminate Go -> C -> block paths for Solaris LGTM=bradfitz R=golang-codereviews, bradfitz, dave CC=golang-codereviews, iant, r https://codereview.appspot.com/132680043
* runtime: fix nacl/amd64p32 buildRuss Cox2014-09-072-13/+25
| | | | | | | | | Update issue 8675 Fixes nacl/amd64p32 build. TBR=khr CC=golang-codereviews https://codereview.appspot.com/141140045
* runtime: fix windows syscalls for copying stacksRuss Cox2014-09-064-138/+184
| | | | | | | | | | | | Syscall and everything it calls must be nosplit: we cannot split a stack once Syscall has been invoked, because we don't know which of its arguments are pointers. LGTM=khr, r, alex.brainman R=dvyukov, iant, khr, r, bradfitz, alex.brainman CC=golang-codereviews https://codereview.appspot.com/133670043
* runtime: eliminate Go -> C -> block paths for SolarisRuss Cox2014-09-063-5/+33
| | | | | | | LGTM=aram, r R=golang-codereviews, aram, r CC=golang-codereviews, iant, khr https://codereview.appspot.com/141180043
* runtime: increase stack split limit againRuss Cox2014-09-062-94/+2
| | | | | | | | | | | | | | | | | | | | | Increase NOSPLIT reservation from 192 to 384 bytes. The problem is that the non-Unix systems (Solaris and Windows) just can't make system calls in a small amount of space, and then worse they do things that are complex enough to warrant calling runtime.throw on failure. We don't have time to rewrite the code to use less stack. I'm not happy about this, but it's still a small amount. The good news is that we're doing this to get to only using copying stacks for stack growth. Once that is true, we can drop the default stack size from 8k to 4k, which should more than make up for the bytes we're losing here. LGTM=r R=iant, r, bradfitz, aram.h CC=golang-codereviews https://codereview.appspot.com/140350043
* cmd/yacc: move cmd/yacc/expr to cmd/yacc/testdata/exprRuss Cox2014-09-064-2/+3
| | | | | | | | | | | | | This will keep the go command from trying to build it when the cmd/ tree is no longer a special case. Also update doc.go to refer to the correct location. (It was incorrect even before this CL.) LGTM=r R=iant, r CC=golang-codereviews https://codereview.appspot.com/134560043
* runtime/cgo: use just #include "textflag.h"Russ Cox2014-09-065-5/+5
| | | | | | | | | This will withstand the src/pkg/ to src/ move. LGTM=r R=iant, r CC=golang-codereviews https://codereview.appspot.com/134530044
* runtime: move stubs.goc code into runtime.cRuss Cox2014-09-062-57/+48
| | | | | | | | | | Now that the calling conventions are the same, there's no danger to using plain C for these. LGTM=bradfitz R=golang-codereviews, bradfitz CC=dvyukov, golang-codereviews, iant, khr, r https://codereview.appspot.com/134580043
* liblink: fix arm build errorsRuss Cox2014-09-062-10/+8
| | | | | | | | | | This was supposed to be in CL 135490044 but got lost in a transfer from machine to machine. TBR=khr R=khr CC=golang-codereviews https://codereview.appspot.com/135560043
* runtime, syscall: rewrite syscall_solaris.goc in GoAram H?v?rneanu2014-09-066-376/+509
| | | | | | | LGTM=dave, rsc R=khr, dvyukov, dave, gobot, rsc CC=golang-codereviews, rsc https://codereview.appspot.com/133220044
* runtime: fix panic/wrapper/recover mathRuss Cox2014-09-0616-194/+243
| | | | | | | | | | | | | | | | | | The gp->panicwrap adjustment is just fatally flawed. Now that there is a Panic.argp field, update that instead. That can be done on entry only, so that unwinding doesn't need to worry about undoing anything. The wrappers emit a few more instructions in the prologue but everything else in the system gets much simpler. It also fixes (without trying) a broken test I never checked in. Fixes issue 7491. LGTM=khr R=khr CC=dvyukov, golang-codereviews, iant, r https://codereview.appspot.com/135490044
* runtime: badreflectcall runs on the G stack - convert to Go.Keith Randall2014-09-062-6/+4
| | | | | | | LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/136260043
* runtime: get rid of other Go->C calls in test exports.Keith Randall2014-09-065-30/+33
| | | | | | | | | | testSchedLocal* tests need to malloc now because their stack frames are too big to fit on the G0 stack. LGTM=iant R=golang-codereviews, iant, khr CC=golang-codereviews https://codereview.appspot.com/133660043
* runtime: move gostringw and gogobytes test stubs to Go.Keith Randall2014-09-052-16/+14
| | | | | | | LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/141150043
* runtime: run getgcmask on the M stack.Keith Randall2014-09-053-10/+14
| | | | | | | LGTM=rsc R=rsc, khr CC=golang-codereviews https://codereview.appspot.com/132660043
* runtime: disable StackCopyAlwaysRuss Cox2014-09-051-1/+1
| | | | | | | | I forgot to clear this before submitting. TBR=khr CC=golang-codereviews https://codereview.appspot.com/132640044
* runtime: use reflect.call during panic instead of newstackcallRuss Cox2014-09-0513-280/+179
| | | | | | | | | | newstackcall creates a new stack segment, and we want to be able to throw away all that code. LGTM=khr R=khr, iant CC=dvyukov, golang-codereviews, r https://codereview.appspot.com/139270043
* runtime: handle nil ptr load/store in arm software floating pointRuss Cox2014-09-052-15/+66
| | | | | | | | | | | | | | | | | We cannot let a real panic start there, because there is C code on the stack, and worse, there is an assembly frame with a saved copy of the registers and we have no idea which ones are pointers. Instead, detect the nil ptr load/store and return out of the C and assembly into a stub that will start the call to sigpanic. Fixes GOARM=5 build. LGTM=iant R=golang-codereviews, iant CC=dave, golang-codereviews, minux, r https://codereview.appspot.com/138130043
* runtime: clean up sigqueue.goRuss Cox2014-09-051-59/+53
| | | | | | | | | | Minor changes to make logic clearer. Observed while working on the conversion. LGTM=iant, dvyukov R=dvyukov, iant CC=golang-codereviews https://codereview.appspot.com/140250043
* net: temporarily skip TestAcceptIgnoreSomeErrorsAlex Brainman2014-09-051-0/+2
| | | | | | | | | | | Update issue 8662 LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/138120043 Committer: Brad Fitzpatrick <bradfitz@golang.org>
* runtime: convert panic/recover to GoKeith Randall2014-09-0512-214/+250
| | | | | | | | | | | | | created panic1.go just so diffs were available. After this CL is in, I'd like to move panic.go -> defer.go and panic1.go -> panic.go. LGTM=rsc R=rsc, khr CC=golang-codereviews https://codereview.appspot.com/133530045 Committer: Russ Cox <rsc@golang.org>
* runtime: use cas loop to coordinate with sigprofRuss Cox2014-09-041-5/+9
| | | | | | | | | | | | | | | | | | | | | | | sigprof and setcpuprofilerate coordinate the enabling/disabling of the handler using a Mutex. This has always been a bit dodgy: setcpuprofilerate must be careful to turn off signals before acquiring the lock to avoid a deadlock. Now the lock implementations use onM, and onM isn't okay on the signal stack. We know how to make it okay, but it's more work than is probably worth doing. Since this is super-dodgy anyway, replace the lock with a simple cas loop. It is only contended if setcpuprofilerate is being called, and that doesn't happen frequently enough to care about the raw speed or about using futexes/semaphores. TBR to fix freebsd/amd64 and dragonfly/amd64 builds. Happy to make changes in a follow-up CL. TBR=dvyukov CC=golang-codereviews https://codereview.appspot.com/141080044
* syscall: in linux/arm Syscall, zero R3, R4, R5Russ Cox2014-09-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The general kernel system call interface takes 6 arguments: R0, R1, R2, R3, R4, R5. Syscall is for calls that only need 3. The amd64 and 386 versions zero the extra arg registers, but the arm version does not. func utimensat calls Syscall with 3 arguments. The kernel expects a 4th argument. That turns out to be whatever is in R3 at the time of the call. CL 137160043 changed various pieces of code and apparently changed the value left in R3 at the time of utimensat's Syscall. This causes the kernel to return EINVAL. Change linux/arm Syscall to zero R3, R4, R5, so that calls will behave deterministically, even if they pass too few arguments. Arguably, utimensat could be fixed too, but the predictable zeroing is certainly worth doing, and once done utimensat's use of Syscall is fine. Fixes arm build. TBR=bradfitz CC=golang-codereviews https://codereview.appspot.com/141080043
* runtime: use new #include "textflag.h"Russ Cox2014-09-04106-106/+106
| | | | | | | | | | I did this just to clean things up, but it will be important when we drop the pkg directory later. LGTM=bradfitz R=r, bradfitz CC=golang-codereviews https://codereview.appspot.com/132600043
* runtime: do not stop traceback at onMRuss Cox2014-09-044-5/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Behavior before this CL: 1. If onM is called on a g0 stack, it just calls the given function. 2. If onM is called on a gsignal stack, it calls badonm. 3. If onM is called on a curg stack, it switches to the g0 stack and then calls the function. In cases 1 and 2, if the program then crashes (and badonm always does), we want to see what called onM, but the traceback stops at onM. In case 3, the traceback must stop at onM, because the g0 stack we are renting really does stop at onM. The current code stops the traceback at onM to handle 3, at the cost of making 1 and 2 crash with incomplete traces. Change traceback to scan past onM but in case 3 make it look like on the rented g0 stack, onM was called from mstart. The traceback already knows that mstart is a top-of-stack function. Alternate fix at CL 132610043 but I think this one is cleaner. This CL makes 3 the exception, while that CL makes 1 and 2 the exception. Submitting TBR to try to get better stack traces out of the freebsd/amd64 builder, but happy to make changes in a followup CL. TBR=khr R=khr CC=golang-codereviews https://codereview.appspot.com/133620043
* cmd/dist: another attempt at textflag.hRuss Cox2014-09-043-14/+23
| | | | | | | | | The old change worked fine in my client, but my client must not have been in a completely clean state. TBR=r CC=golang-codereviews https://codereview.appspot.com/138100043
* cmd/dist: make textflag.h available in runtime, avoid android/linux conflictsRuss Cox2014-09-043-6/+23
| | | | | | | | | | | | | | | | | 1) cmd/dist was copying textflag.h to the build include directory, but only after compiling package runtime. So other packages could use it, just not runtime. Copy earlier, so that runtime can use it too. 2) We decided for android that anything marked linux is also included in the build. The generated linux-specific files in cmd/dist must therefore have explicit +build !android tags, or else you can't have simultaneous linux/arm and android/arm builds in a single client. The tag was already there for at least one file, but it was missing from many others. LGTM=r R=r CC=golang-codereviews https://codereview.appspot.com/134500043
* runtime: mark sysAlloc nosplitRuss Cox2014-09-0410-4/+46
| | | | | | | | | sysAlloc is the only mem function called from Go. LGTM=iant, khr R=golang-codereviews, khr, 0intro, iant CC=dvyukov, golang-codereviews, r https://codereview.appspot.com/139210043
* runtime: more C to Go conversion adjustmentsRuss Cox2014-09-0416-280/+478
| | | | | | | | | | | | | | | | Mostly NOSPLIT additions. Had to rewrite atomic_arm.c in Go because it calls lock, and lock is too complex. With this CL, I find no Go -> C calls that can split the stack on any system except Solaris and Windows. Solaris and Windows need more work and will be done separately. LGTM=iant, dave R=golang-codereviews, bradfitz, iant, dave CC=dvyukov, golang-codereviews, khr, r https://codereview.appspot.com/137160043
* cmd/api: don't depend on os/user or USER to check apiBrad Fitzpatrick2014-09-041-3/+1
| | | | | | | | | | | | | | | | | The -nocgo builder failed because it has cgo disabled as well as no USER environment variable: http://build.golang.org/log/2250abb82f5022b72a12997b8ff89fcdeff094c9 # Checking API compatibility. Error getting current user: user: Current not implemented on linux/amd64 exit status 1 Don't require the environment variable here. LGTM=minux R=dave, adg, minux CC=golang-codereviews https://codereview.appspot.com/140290043
* go/parser: fix "zero day" parse errorRobert Griesemer2014-09-042-9/+11
| | | | | | | | | | | (a b string, ok bool) is not a valid signature Fixes issue 8656. LGTM=adonovan R=adonovan CC=golang-codereviews https://codereview.appspot.com/137140043
* runtime: make more functions safe for GoRuss Cox2014-09-0419-220/+274
| | | | | | | | | | | | | Convert no-op race functions. Everything else is tiny and gets NOSPLITs. After this, all that is left on darwin is sysAlloc, panic, and gothrow (all pending). There may be system-specific calls in other builds. LGTM=iant R=golang-codereviews, iant CC=dvyukov, golang-codereviews, khr, r https://codereview.appspot.com/140240044
* runtime: convert cgocall to GoDmitriy Vyukov2014-09-043-182/+150
| | | | | | | | | LGTM=khr, rsc R=golang-codereviews, khr, rsc CC=golang-codereviews https://codereview.appspot.com/131670043 Committer: Russ Cox <rsc@golang.org>
* runtime: use C for readgstatus, goroutine status valuesRuss Cox2014-09-042-28/+3
| | | | | | | | | | When this code was written, there was no way for Go to reuse the C function and enum values. Now there is. LGTM=bradfitz R=rlh, bradfitz CC=dvyukov, golang-codereviews, iant, khr, r https://codereview.appspot.com/139150045