summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* crypto: add SignerAdam Langley2014-08-297-16/+114
| | | | | | | | | | | | | | | | | Signer is an interface to support opaque private keys. These keys typically result from being kept in special hardware (i.e. a TPM) although sometimes operating systems provide a similar interface using process isolation for security rather than hardware boundaries. This changes provides interfaces for representing them and alters crypto/tls so that client certificates can use opaque keys. LGTM=bradfitz R=bradfitz CC=golang-codereviews, jdeprez https://codereview.appspot.com/114680043
* text/template/parse: restore pointer-only receivers for Type on Dot and NilRob Pike2014-08-291-0/+14
| | | | | | | | | Needless except that the api tool complains. We could fix that issue instead. TBR=bradfitz R=golang-codereviews CC=golang-codereviews https://codereview.appspot.com/133290043
* runtime: run runtime.initRuss Cox2014-08-291-0/+2
| | | | | | | | | | | | | | | | | | Run it right before main.init. There is still some runtime initialization that happens before runtime.init, and some of that may call into Go code (for example to acquire locks) so this timing is not perfect, but I believe it is the best we can do. This came up because global variables intialized to func values are done in the generated init code, not in the linker. LGTM=dvyukov R=dvyukov CC=golang-codereviews, iant, khr, r https://codereview.appspot.com/135210043
* cmd/gc: allow runtime to define a hex integer type for printingRuss Cox2014-08-294-11/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As part of the translation of the runtime, we need to rewrite C printf calls to Go print calls. Consider this C printf: runtime?printf("[signal %x code=%p addr=%p pc=%p]\n", g->sig, g->sigcode0, g->sigcode1, g->sigpc); Today the only way to write that in Go is: print("[signal ") printhex(uint64(g->sig)) print(" code=") printhex(uint64(g->sigcode0)) print(" addr=") printhex(uint64(g->sigcode1)) print(" pc=") printhex(uint64(g->sigpc)) print("]\n") (That's nearly exactly what runtime code looked like in C before I added runtime?printf.) This CL recognizes the unexported type runtime.hex as an integer that should be printed in hexadecimal instead of decimal. It's a little kludgy, but it's restricted to package runtime. Other packages can define type hex with no effect at all. Now we can translate that original printf as the more compact: print("[signal ", hex(g->sig), " code=", hex(g->sigcode0), " addr=", hex(g->sigcode1), " pc=", hex(g->sigpc), "]\n") LGTM=r, iant R=r, iant CC=golang-codereviews https://codereview.appspot.com/133220043
* runtime: implement 64 bit division in GoJosh Bleecher Snyder2014-08-294-33/+170
| | | | | | | LGTM=rsc, dave R=minux, rsc, remyoudompheng, dave CC=golang-codereviews https://codereview.appspot.com/133790043
* text/template: add back pointer to Nodes for better error generationRob Pike2014-08-298-168/+272
| | | | | | | | | | | | | | | | | ErrorContext now has all the information it needs from the Node, rather than depending on the template that contains it. This makes it easier for html/template to generate correct locations in its error messages. Updated html/template to use this ability where it is easy, which is not everywhere, but more work can probably push it through. Fixes issue 8577. LGTM=adg R=golang-codereviews, adg CC=golang-codereviews https://codereview.appspot.com/130620043
* runtime: clean up GC codeDmitriy Vyukov2014-08-297-111/+19
| | | | | | | | | | | | | Remove C version of GC. Convert freeOSMemory to Go. Restore g0 check in GC. Remove unknownGCPercent check in GC, it's initialized explicitly now. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr https://codereview.appspot.com/139910043
* runtime: fix sprintf index out of boundsRuss Cox2014-08-291-1/+1
| | | | | | | | | | Breaks on Plan 9, apparently. The other systems must not run sprintf during all.bash. I'd write a test but it's all going away. TBR=r CC=0intro, golang-codereviews https://codereview.appspot.com/133260044
* runtime: allow sysvicall functions to be called from GoAram H?v?rneanu2014-08-295-59/+116
| | | | | | | | | Convert them to Go in the process. LGTM=dvyukov, dave R=khr, dvyukov, rsc, dave CC=golang-codereviews https://codereview.appspot.com/131600043
* runtime: allow to call stdcall from Go on windowsDmitriy Vyukov2014-08-295-60/+149
| | | | | | | | | | | I've started with just one function with 8 arguments, but stdcall is called from nosplit functions and 8 args overflow nosplit area. LGTM=aram, alex.brainman R=golang-codereviews, aram, alex.brainman, dave CC=golang-codereviews, iant, khr, rsc https://codereview.appspot.com/135090043
* image/png: do not apply filters if level is NoCompressionRui Ueyama2014-08-292-7/+13
| | | | | | | | | | | | | PNG filters are applied to get better compression ratio. It does not make sense to apply them if we are not going to compress. LGTM=nigeltao R=nigeltao CC=golang-codereviews https://codereview.appspot.com/137830043 Committer: Nigel Tao <nigeltao@golang.org>
* runtime: convert forcegc helper to GoDmitriy Vyukov2014-08-294-36/+40
| | | | | | | | | | | | | | | Also fix a bunch of bugs: 1. Accesses to last_gc must be atomic (it's int64). 2. last_gc still can be 0 during first checks in sysmon, check for 0. 3. forcegc.g can be unitialized when sysmon accesses it: forcegc.g is initialized by main goroutine (forcegc.g = newproc1(...)), and main goroutine is unsynchronized with both sysmon and forcegc goroutine. Initialize forcegc.g in the forcegc goroutine itself instead. LGTM=khr R=golang-codereviews, khr CC=golang-codereviews, rsc https://codereview.appspot.com/136770043
* runtime: don't allocate a new string in printfKeith Randall2014-08-283-1/+3
| | | | | | | LGTM=dave R=rsc, dave CC=golang-codereviews https://codereview.appspot.com/139890043
* runtime: convert closechan/chanlen/chancap to GoKeith Randall2014-08-283-82/+77
| | | | | | | LGTM=bradfitz, rsc R=golang-codereviews, bradfitz, rsc CC=golang-codereviews https://codereview.appspot.com/135150043
* net: add more cases to lookup API testMikio Hara2014-08-291-35/+129
| | | | | | | LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/126450043
* runtime: convert print.c to GoRuss Cox2014-08-2814-600/+388
| | | | | | | LGTM=iant R=golang-codereviews, iant CC=dvyukov, golang-codereviews, khr, r https://codereview.appspot.com/135930043
* test: add test that caused gccgo to crash on valid codeIan Lance Taylor2014-08-281-0/+34
| | | | | | | | | Update issue 8612 LGTM=minux R=golang-codereviews, minux CC=golang-codereviews https://codereview.appspot.com/135170043
* misc/cgo/test: disable issue 8428 regress test on darwinMatthew Dempsky2014-08-281-0/+4
| | | | | | | | | | | | | | | Clang 3.2 and older (as shipped with OS X Mountain Lion and older) outputs ambiguous DWARF debug info that makes it impossible for us to reconstruct accurate type information as required for this test. Fixes issue 8611. LGTM=rsc R=r, rsc, minux CC=golang-codereviews https://codereview.appspot.com/135990043 Committer: Russ Cox <rsc@golang.org>
* runtime: remove holes in FUNCDATA tablesMatthew Dempsky2014-08-281-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Shrinks the text segment size by about 1.5% for the "go", "gofmt", and "camlistored" commands on linux/amd64. Before: $ size go gofmt camlistored text data bss dec hex filename 6506842 136996 105784 6749622 66fdb6 go 2376046 85232 90984 2552262 26f1c6 gofmt 17051050 190256 130320 17371626 10911ea camlistored After: $ size go gofmt camlistored text data bss dec hex filename 6403034 136996 105784 6645814 656836 go 2331118 85232 90984 2507334 264246 gofmt 16842586 190256 130320 17163162 105e39a camlistored Fixes issue 8604. LGTM=rsc R=golang-codereviews, bradfitz, rsc CC=golang-codereviews https://codereview.appspot.com/137790043 Committer: Ian Lance Taylor <iant@golang.org>
* runtime: fix Plan 9 build for new C calling conventionAnthony Martin2014-08-282-27/+29
| | | | | | | LGTM=0intro, rsc R=rsc, 0intro CC=golang-codereviews https://codereview.appspot.com/132320043
* cmd/internal/objfile: fix dissassembly of Plan 9 object filesAnthony Martin2014-08-281-0/+15
| | | | | | | | | | This is a reapplication of CL 93520045 (changeset 5012df7fac58) since that was lost during the move to an internal package. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/134020043
* crypto/md5: use go generate to create md5block.goChaiShushan2014-08-283-5/+22
| | | | | | | | | LGTM=r R=golang-codereviews, r CC=golang-codereviews https://codereview.appspot.com/129650043 Committer: Rob Pike <r@golang.org>
* compress/flate: use go generate to create fixedhuff.goChaiShushan2014-08-283-16/+43
| | | | | | | | | LGTM=r R=golang-codereviews, r CC=golang-codereviews https://codereview.appspot.com/137750043 Committer: Rob Pike <r@golang.org>
* strconv: use go generate to create isprint.goChaiShushan2014-08-283-25/+49
| | | | | | | | | LGTM=r R=golang-codereviews, r CC=golang-codereviews https://codereview.appspot.com/132230043 Committer: Rob Pike <r@golang.org>
* image/color/palette: use go generate to create palette.goChaiShushan2014-08-283-40/+67
| | | | | | | | | LGTM=r R=golang-codereviews, r CC=golang-codereviews https://codereview.appspot.com/134940043 Committer: Rob Pike <r@golang.org>
* runtime: fix openbsd/386Matthew Dempsky2014-08-284-12/+10
| | | | | | | | | | | | | | | | | | In revision 05c3fee13eb3, openbsd/386's tfork implementation was accidentally changed in one instruction from using the "params" parameter to using the "psize" parameter. While here, OpenBSD's __tfork system call returns a pid_t which is an int32 on all OpenBSD architectures, so change runtime.tfork's return type from int64 to int32 and update the assembly implementations accordingly. LGTM=iant R=rsc, iant CC=golang-codereviews, jsing https://codereview.appspot.com/133190043 Committer: Ian Lance Taylor <iant@golang.org>
* runtime: move finalizer thread to Go.Keith Randall2014-08-289-280/+299
| | | | | | | LGTM=dvyukov R=golang-codereviews, dvyukov, khr CC=golang-codereviews https://codereview.appspot.com/124630043
* go/token: implement PositionFor accessorsRobert Griesemer2014-08-282-36/+116
| | | | | | | | | | | | | | | | | | | | Package addition. PositionFor permits access to both, positions adjusted by //line comments (like the Position accessors), and unadjusted "raw" positions unaffected by //line comments. Raw positions are required for correct formatting of source code via go/printer which until now had to manually fix adjusted positions. Fixes issue 7702. LGTM=adonovan R=adonovan CC=golang-codereviews https://codereview.appspot.com/135110044
* mime: style, perf, and test updates to case-insensitive lookupsBrad Fitzpatrick2014-08-282-28/+71
| | | | | | | | | Only grab the lock once, don't allocate, add more tests. LGTM=ruiu R=ruiu, josharian CC=golang-codereviews https://codereview.appspot.com/139780043
* database/sql: use a value type instead of a pointerBrad Fitzpatrick2014-08-281-6/+6
| | | | | | | | | | Follow-up to https://codereview.appspot.com/107020044/ Also add a little comment. LGTM=ruiu, josharian R=josharian, ruiu CC=golang-codereviews https://codereview.appspot.com/139760043
* runtime: compare only until min(len(s1), len(s2))David Crawshaw2014-08-281-2/+2
| | | | | | | LGTM=bradfitz R=rsc, bradfitz CC=golang-codereviews https://codereview.appspot.com/139770043
* spec: move Method expr/value section near selectorsRobert Griesemer2014-08-281-227/+228
| | | | | | | | | | | | | | | | Preparation for fixing issue 5769 (method selectors do not auto-dereference): The actual fix may require some cleanups in all these sections, and syntactically, method expressions and method values are selector expressions. Moving them next to each other so that it's easy to see the actual changes (next CL). No content changes besides the section moves. LGTM=iant, rsc R=r, rsc, iant, ken CC=golang-codereviews https://codereview.appspot.com/132300043
* cmd/api: more runtime fixesRuss Cox2014-08-281-1/+1
| | | | | | | | | This is getting a little annoying, but once the runtime structs are being defined in Go, these will go away. So it's only a temporary cost. TBR=bradfitz CC=golang-codereviews https://codereview.appspot.com/135940043
* database/sql: use slices rather than container/listAlberto Garc?a Hierro2014-08-282-68/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Significantly reduces the number of allocations, while also simplifying the code and increasing performance by a 1-2%. benchmark old ns/op new ns/op delta BenchmarkConcurrentDBExec 13290567 13026236 -1.99% BenchmarkConcurrentStmtQuery 13249399 13008879 -1.82% BenchmarkConcurrentStmtExec 8806237 8680182 -1.43% BenchmarkConcurrentTxQuery 13628379 12756293 -6.40% BenchmarkConcurrentTxExec 4794800 4722440 -1.51% BenchmarkConcurrentTxStmtQuery 5040804 5200721 +3.17% BenchmarkConcurrentTxStmtExec 1366574 1336626 -2.19% BenchmarkConcurrentRandom 11119120 10926113 -1.74% benchmark old allocs new allocs delta BenchmarkConcurrentDBExec 14191 13684 -3.57% BenchmarkConcurrentStmtQuery 16020 15514 -3.16% BenchmarkConcurrentStmtExec 4179 3672 -12.13% BenchmarkConcurrentTxQuery 16025 15518 -3.16% BenchmarkConcurrentTxExec 12717 12709 -0.06% BenchmarkConcurrentTxStmtQuery 15532 15525 -0.05% BenchmarkConcurrentTxStmtExec 2175 2168 -0.32% BenchmarkConcurrentRandom 12320 11997 -2.62% benchmark old bytes new bytes delta BenchmarkConcurrentDBExec 2164827 2139760 -1.16% BenchmarkConcurrentStmtQuery 2418070 2394030 -0.99% BenchmarkConcurrentStmtExec 1728782 1704371 -1.41% BenchmarkConcurrentTxQuery 2477144 2452620 -0.99% BenchmarkConcurrentTxExec 588920 588343 -0.10% BenchmarkConcurrentTxStmtQuery 790866 796578 +0.72% BenchmarkConcurrentTxStmtExec 98502 98143 -0.36% BenchmarkConcurrentRandom 1725906 1710220 -0.91% LGTM=ruiu, dave, bradfitz R=golang-codereviews, ruiu, gobot, bradfitz, dave, minux CC=bradfitz, golang-codereviews https://codereview.appspot.com/107020044 Committer: Brad Fitzpatrick <bradfitz@golang.org>
* runtime: fix arm buildDavid Crawshaw2014-08-281-1/+0
| | | | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/134030043 Committer: Russ Cox <rsc@golang.org>
* runtime: fix buildRuss Cox2014-08-281-0/+13
| | | | | | | | | | | | 'range hash' makes a copy of the hash array in the stack, creating a very large stack frame. It's just the right amount that it uses most but not all of the total stack size. If you have a lot of environment variables, like the builders, then this is too much and the g0 stack runs out of space. TBR=bradfitz CC=golang-codereviews https://codereview.appspot.com/132350043
* mime: Make filename extensions case-insensitiveJeff R. Allen2014-08-285-24/+50
| | | | | | | | | | | Fixes issue 8350. LGTM=bradfitz R=golang-codereviews, bradfitz, dave CC=golang-codereviews https://codereview.appspot.com/127380043 Committer: Brad Fitzpatrick <bradfitz@golang.org>
* runtime: convert runtime1.goc, noasm_arm.goc to GoRuss Cox2014-08-2812-201/+167
| | | | | | | LGTM=dvyukov R=golang-codereviews, bradfitz, dvyukov CC=golang-codereviews, iant, khr https://codereview.appspot.com/135070043
* runtime: finish converting iface.goc to iface.goRuss Cox2014-08-280-0/+0
| | | | | | | LGTM=bradfitz, dvyukov R=golang-codereviews, bradfitz, dvyukov CC=golang-codereviews, iant, khr https://codereview.appspot.com/131510043
* png: make the encoder configurableJeff R. Allen2014-08-282-10/+68
| | | | | | | | | | | | | | In order to support different compression levels, make the encoder type public, and add an Encoder method to it. Fixes issue 8499. LGTM=nigeltao R=nigeltao, ruiu CC=golang-codereviews https://codereview.appspot.com/129190043 Committer: Nigel Tao <nigeltao@golang.org>
* runtime: fix nacl/386 buildRuss Cox2014-08-271-23/+101
| | | | | | | | | | | | | | | I changed all the NACL_SYSJMP to NACL_SYSCALL in an earlier CL, but I missed the fact that NACL_SYSCALL will push another return PC on the stack, so that the arguments will no longer be in the right place. Since we have to make our own call, we also have to copy the arguments. Do that. Fixes nacl/386 build. TBR=minux CC=golang-codereviews https://codereview.appspot.com/135050044
* cmd/cc: translate C Eface type as Go interface{}Russ Cox2014-08-271-3/+5
| | | | | | | | | | | This will allow structs containing Efaces in C to be manipulated as structs containing real interfaces in Go. The eface struct is still defined for use by Go code. LGTM=iant R=golang-codereviews, iant CC=dvyukov, golang-codereviews, khr, r https://codereview.appspot.com/133980044
* cmd/api: fix for Lock?Mutex changeRuss Cox2014-08-272-2/+2
| | | | | | TBR=iant CC=golang-codereviews https://codereview.appspot.com/133150043
* runtime: rename Lock to MutexRuss Cox2014-08-2731-106/+96
| | | | | | | | | | | Mutex is consistent with package sync, and when in the unexported Go form it avoids having a conflcit between the type (now mutex) and the function (lock). LGTM=iant R=golang-codereviews, iant CC=dvyukov, golang-codereviews, r https://codereview.appspot.com/133140043
* debug/elf: support arm64 relocationsMichael Hudson-Doyle2014-08-274-44/+350
| | | | | | | | | | | | | | | | | | | | | | | This adds the minimal support for AArch64/arm64 relocations needed to get cgo to work (when an isomorphic patch is applied to gccgo) and a test. This change uses the "AAarch64" name for the architecture rather than the more widely accepted "arm64" because that's the name that the relevant docs from ARM such as http://infocenter.arm.com/help/topic/com.arm.doc.ihi0056b/IHI0056B_aaelf64.pdf all use. Fixes issue 8533. LGTM=iant R=golang-codereviews, aram, gobot, iant, minux CC=golang-codereviews https://codereview.appspot.com/132000043 Committer: Ian Lance Taylor <iant@golang.org>
* cmd/5l, cmd/6l, cmd/8l: fix nacl binary corruption bugRuss Cox2014-08-273-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NaCl requires the addition of a 32-byte "halt sled" at the end of the text segment. This means that segtext.len is actually 32 bytes shorter than reality. The computation of the file offset of the end of the data segment did not take this 32 bytes into account, so if len and len+32 rounded up (by 64k) to different values, the symbol table overwrote the last page of the data segment. The last page of the data segment is usually the C .string symbols, which contain the strings used in error prints by the runtime. So when this happens, your program probably crashes, and then when it does, you get binary garbage instead of all the usual prints. The chance of hitting this with a randomly sized text segment is 32 in 65536, or 1 in 2048. If you add or remove ANY code while trying to debug this problem, you're overwhelmingly likely to bump the text segment one way or the other and make the bug disappear. Correct all the computations to use segdata.fileoff+segdata.filelen instead of trying to rederive segdata.fileoff. This fixes the failure during the nacl/amd64p32 build. TBR=iant CC=golang-codereviews https://codereview.appspot.com/135050043
* runtime: fix nacl buildRuss Cox2014-08-276-85/+210
| | | | | | | | | | | | | | | | | | | | | | | | The NaCl "system calls" were assumed to have a compatible return convention with the C compiler, and we were using tail jumps to those functions. Don't do that anymore. Correct mistake introduced in newstackcall duringconversion from (SP) to (FP) notation. (Actually this fix, in asm_amd64p32.s, slipped into the C compiler change, but update the name to match what go vet wants.) Correct computation of caller stack pointer in morestack: on amd64p32, the saved PC is the size of a uintreg, not uintptr. This may not matter, since it's been like this for a while, but uintreg is the correct one. (And on non-NaCl they are the same.) This will allow the NaCl build to get much farther. It will probably still not work completely. There's a bug in 6l that needs fixing too. TBR=minux CC=golang-codereviews https://codereview.appspot.com/134990043
* runtime: fix arm5 softfloat buildDave Cheney2014-08-281-2/+3
| | | | | | | | | | | runtime._sfloat2 now returns the lr value on the stack, not R0. Credit to Russ Cox for the fix. LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/133120045
* runtime: fix arm buildRuss Cox2014-08-271-1/+1
| | | | | | TBR=minux CC=golang-codereviews https://codereview.appspot.com/137810043
* cmd/cc, runtime: preserve C runtime type names in generated GoRuss Cox2014-08-2734-340/+247
| | | | | | | | | | | | | | uintptr or uint64 in the runtime C were turning into uint in the Go, bool was turning into uint8, and so on. Fix that. Also delete Go wrappers for C functions. The C functions can be called directly now (but still eventually need to be converted to Go). LGTM=bradfitz, minux, iant R=golang-codereviews, bradfitz, iant, minux CC=golang-codereviews, khr, r https://codereview.appspot.com/138740043