- 01 Apr, 2014 3 commits
-
-
Shenghou Ma authored
LGTM=bradfitz R=golang-codereviews, gobot, bradfitz CC=golang-codereviews https://golang.org/cl/81890044
-
Shenghou Ma authored
Fixes #7562. LGTM=nigeltao R=nigeltao CC=golang-codereviews https://golang.org/cl/81190044
-
Shenghou Ma authored
Fixes #7648. LGTM=r, remyoudompheng R=golang-codereviews, r, remyoudompheng, jscrockett01 CC=golang-codereviews https://golang.org/cl/80560045
-
- 31 Mar, 2014 1 commit
-
-
Russ Cox authored
People (like me!) will still try to run misc/benchcmp and wonder where it went. Tell them. LGTM=bradfitz R=golang-codereviews, bradfitz, dave CC=adg, golang-codereviews, r https://golang.org/cl/82710043
-
- 29 Mar, 2014 5 commits
-
-
Shenghou Ma authored
LGTM=iant R=iant CC=golang-codereviews https://golang.org/cl/82140043
-
Mike Andrews authored
e.g., don't delete /dev/null. this fix inspired by gnu libiberty, unlink-if-ordinary.c. Fixes #7563 LGTM=iant R=golang-codereviews, iant, 0intro CC=golang-codereviews, r https://golang.org/cl/76810045
-
Jan Ziak authored
Fixes #7153 LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/82180043
-
Mikio Hara authored
On DragonFly BSD, we adjust the ephemeral port range because unlike other BSD systems its default ephemeral port range doesn't conform to IANA recommendation as described in RFC 6355 and is pretty narrow. On DragonFly BSD 3.6: default range [1024, 5000], high range [49152, 65535] On FreeBSD 10: default range [10000, 65535], high range [49152, 65535] On Linux 3.11: default range [32768, 61000] Fixes #7541. LGTM=iant R=jsing, gobot, iant CC=golang-codereviews https://golang.org/cl/80610044
-
Mikio Hara authored
SendmsgN is an alternate version Sendmsg that also returns the number of bytes transferred, instead of just the error. Update #7645 LGTM=aram, iant R=iant, aram, bradfitz CC=golang-codereviews https://golang.org/cl/81210043
-
- 28 Mar, 2014 8 commits
-
-
Brad Fitzpatrick authored
Fixes #7654 LGTM=rsc R=rsc, dan.kortschak CC=golang-codereviews https://golang.org/cl/81530043
-
Russ Cox authored
chanrecv now expects a pointer to the data to be filled in. mapiterinit expects a pointer to the hash iterator to be filled in. In both cases, the temporary being pointed at changes from dead to alive during the call. In order to make sure it is preserved if a garbage collection happens after that transition but before the call returns, the temp must be marked as live during the entire call. But if it is live during the entire call, it needs to be safe for the garbage collector to scan at the beginning of the call, before the new data has been filled in. Therefore, it must be zeroed by the caller, before the call. Do that. My previous attempt waited to mark it live until after the call returned, but that's unsafe (see first paragraph); undo that change in plive.c. This makes powser2 pass again reliably. I looked at every call to temp in the compiler. The vast majority are followed immediately by an initialization of temp, so those are fine. The only ones that needed changing were the ones where the next operation is to pass the address of the temp to a function call, and there aren't too many. Maps are exempted from this because mapaccess returns a pointer to the data and lets the caller make the copy. Fixes many builds. TBR=khr CC=golang-codereviews https://golang.org/cl/80700046
-
Adam Langley authored
This change sets systemSkip on a test where Go and CAPI have different chain building behaviour. CAPI is correct, but aligning the Go code is probably too large a change prior to 1.3. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/81620043
-
Alex Brainman authored
LGTM=minux.ma R=golang-codereviews, minux.ma CC=golang-codereviews https://golang.org/cl/80400043
-
Mikio Hara authored
For now we strictly use IPV6_V6ONLY=1 for IPv6-only communications and IPV6_V6ONLY=0 for both IPv4 and IPv6 communications. So let the capability test do the same. LGTM=iant R=golang-codereviews, gobot, iant CC=golang-codereviews https://golang.org/cl/80140044
-
Mikio Hara authored
LGTM=iant R=iant, bradfitz CC=golang-codereviews https://golang.org/cl/80700044
-
Rob Pike authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/81650043
-
Alex Brainman authored
Fixes #7635 LGTM=minux.ma R=golang-codereviews, minux.ma CC=golang-codereviews https://golang.org/cl/80390043
-
- 27 Mar, 2014 12 commits
-
-
Adam Langley authored
The root update on 3/11/2014 removed the Verisign root cert that the Go tests use. This only affects the 'TestSystemVerify' test in crypto/x509. Fixes #7523. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/80000044
-
Rui Ueyama authored
Name of built-in function is not reserved word in Go, and you can use it as variable name. "new" is often used as local variable, for instance. This patch is to apply font-lock-builtin-face only when built-in function name is followed by '(', so that it doesn't highlight non-function variable that happen to have the same name as built-in function. LGTM=dominik.honnef R=golang-codereviews, dominik.honnef, adonovan CC=golang-codereviews https://golang.org/cl/79260043
-
Daniel Morsing authored
cgo represents all 0-sized and unsized types internally as [0]byte. This means that pointers to incomplete types would be interchangable, even if given a name by typedef. Fixes #7409. LGTM=iant R=golang-codereviews, bradfitz, iant CC=golang-codereviews https://golang.org/cl/76450043
-
Rui Ueyama authored
Go-mode in Emacs 23 does not recognize a backslash followed by a backquote as end of raw string literal, as it does not support syntax-propertize-function which Go-mode uses to remove special meaning from backslashes in ``. This patch provides a fallback mechanism to do the same thing using font-lock-syntactic-keywords, which is supported by Emacs 23. LGTM=dominik.honnef R=golang-codereviews, dominik.honnef CC=adonovan, golang-codereviews https://golang.org/cl/78730048
-
Russ Cox authored
This is the same check we use during stack copying. The check cannot be applied to C stack frames, even though we do emit pointer bitmaps for the arguments, because (1) the pointer bitmaps assume all arguments are always live, not true of outputs during the prologue, and (2) the pointer bitmaps encode interface values as pointer pairs, not true of interfaces holding integers. For the rest of the frames, however, we should hold ourselves to the rule that a pointer marked live really is initialized. The interface scanning already implicitly checks this because it interprets the type word as a valid type pointer. This may slow things down a little because of the extra loads. Or it may speed things up because we don't bother enqueuing nil pointers anymore. Enough of the rest of the system is slow right now that we can't measure it meaningfully. Enable for now, even if it is slow, to shake out bugs in the liveness bitmaps, and then decide whether to turn it off for the Go 1.3 release (issue 7650 reminds us to do this). The new m->traceback field lets us force printing of fp= values on all goroutine stack traces when we detect a bad pointer. This makes it easier to understand exactly where in the frame the bad pointer is, so that we can trace it back to a specific variable and determine what is wrong. Update #7650 LGTM=khr R=khr CC=golang-codereviews https://golang.org/cl/80860044
-
Russ Cox authored
1. On entry to a function, only zero the ambiguously live stack variables. Before, we were zeroing all stack variables containing pointers. The zeroing is pretty inefficient right now (issue 7624), but there are also too many stack variables detected as ambiguously live (issue 7345), and that must be addressed before deciding how to improve the zeroing code. (Changes in 5g/ggen.c, 6g/ggen.c, 8g/ggen.c, gc/pgen.c) Fixes #7647. 2. Make the regopt word-based liveness analysis preserve the whole-variable liveness property expected by the garbage collection bitmap liveness analysis. That is, if the regopt liveness decides that one word in a struct needs to be preserved, make sure it preserves the entire struct. This is particularly important for multiword values such as strings, slices, and interfaces, in which all the words need to be present in order to understand the meaning. (Changes in 5g/reg.c, 6g/reg.c, 8g/reg.c.) Fixes #7591. 3. Make the regopt word-based liveness analysis treat a variable as having its address taken - which makes it preserved across all future calls - whenever n->addrtaken is set, for consistency with the gc bitmap liveness analysis, even if there is no machine instruction actually taking the address. In this case n->addrtaken is incorrect (a nicer way to put it is overconservative), and ideally there would be no such cases, but they can happen and the two analyses need to agree. (Changes in 5g/reg.c, 6g/reg.c, 8g/reg.c; test in bug484.go.) Fixes crashes found by turning off "zero everything" in step 1. 4. Remove spurious VARDEF annotations. As the comment in gc/pgen.c explains, the VARDEF must immediately precede the initialization. It cannot be too early, and it cannot be too late. In particular, if a function call sits between the VARDEF and the actual machine instructions doing the initialization, the variable will be treated as live during that function call even though it is uninitialized, leading to problems. (Changes in gc/gen.c; test in live.go.) Fixes crashes found by turning off "zero everything" in step 1. 5. Do not treat loading the address of a wide value as a signal that the value must be initialized. Instead depend on the existence of a VARDEF or the first actual read/write of a word in the value. If the load is in order to pass the address to a function that does the actual initialization, treating the load as an implicit VARDEF causes the same problems as described in step 4. The alternative is to arrange to zero every such value before passing it to the real initialization function, but this is a much easier and more efficient change. (Changes in gc/plive.c.) Fixes crashes found by turning off "zero everything" in step 1. 6. Treat wide input parameters with their address taken as initialized on entry to the function. Otherwise they look "ambiguously live" and we will try to emit code to zero them. (Changes in gc/plive.c.) Fixes crashes found by turning off "zero everything" in step 1. 7. An array of length 0 has no pointers, even if the element type does. Without this change, the zeroing code complains when asked to clear a 0-length array. (Changes in gc/reflect.c.) LGTM=khr R=khr CC=golang-codereviews https://golang.org/cl/80160044
-
Russ Cox authored
Zeroing the outputs makes sure that during function calls in those functions we do not let the garbage collector treat uninitialized values as pointers. The garbage collector may still see uninitialized values if a preemption occurs during the function prologue, before the zeroing has had a chance to run. This reduces the number of 'bad pointer' messages when that runtime check is enabled, but it doesn't fix all of them, so the check is still disabled. It will also avoid leaks, although I doubt any of these were particularly serious. LGTM=iant, khr R=iant, khr CC=golang-codereviews https://golang.org/cl/80850044
-
Russ Cox authored
This was added by the one-pass CL (post Go 1.2) so it can still be removed. Removing because surely there will be new operations added later, and we can't change the constant value once we define it, so "last" is a bad concept to expose. Nothing uses it. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/81160043
-
Jan Ziak authored
Fixes #6402 LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/81340044
-
Rui Ueyama authored
This patch includes fixes pointed out in CL 52140043, which was originally written by john.gosset. LGTM=minux.ma R=golang-codereviews, minux.ma CC=golang-codereviews https://golang.org/cl/80320043
-
Russ Cox authored
The garbage collector will scan these pointers, so make sure they are initialized. LGTM=bradfitz, khr R=khr, bradfitz CC=golang-codereviews https://golang.org/cl/80960047
-
Rob Pike authored
LGTM=iant, rsc R=rsc, iant, mtj CC=golang-codereviews https://golang.org/cl/80260044
-
- 26 Mar, 2014 11 commits
-
-
Erik Westrup authored
If you compile a program that has cgo LDFLAGS directives, those are exported to an environment variable to be used by subsequent compiler tool invocations. The linking phase when using the gccgo toolchain did not consider the envvar CGO_LDFLAGS's linking directives resulting in undefined references when using cgo+gccgo. Fixes #7573 LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://golang.org/cl/80780043
-
Ian Lance Taylor authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/80920048
-
Shenghou Ma authored
GCC on OS X 10.6 doesn't support -Wuninitialized without -O. Fixes #7492. LGTM=iant R=golang-codereviews, dave, iant CC=golang-codereviews https://golang.org/cl/72360045
-
Dmitriy Vyukov authored
m->moreargp/morebuf were not cleared in case of preemption and stack growing, it can lead to persistent leaks of large memory blocks. It seems to fix the sync.Pool finalizer failures. I've run the test 500'000 times w/o a single failure; previously it would fail dozens of times. Fixes #7633. Fixes #7533. LGTM=rsc R=golang-codereviews CC=golang-codereviews, khr, rsc https://golang.org/cl/80480044
-
Dmitriy Vyukov authored
Update channel race annotations to support change in cl/75130045: doc: allow buffered channel as semaphore without initialization The new annotations are added only for channels with capacity 1. Strictly saying it's possible to construct a counter-example that will produce a false positive with capacity > 1. But it's hardly can lead to false positives in real programs, at least I would like to see such programs first. Any additional annotations also increase probability of false negatives, so I would prefer to add them lazily. LGTM=rsc R=golang-codereviews CC=golang-codereviews, iant, khr, rsc https://golang.org/cl/76970043
-
Dmitriy Vyukov authored
Currently it's possible that bgsweep finishes before all spans have been swept (we only know that sweeping of all spans has *started*). In such case bgsweep may fail wake up runfinq goroutine when it needs to. finq may still be nil at this point, but some finalizers may be queued later. Make bgsweep to wait for sweeping to *complete*, then it can decide whether it needs to wake up runfinq for sure. Update #7533 LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/75960043
-
Dmitriy Vyukov authored
If we set obj, then it will be enqueued for marking at the end of the scanning loop. This is not necessary, since we've already marked it. This can wait for 1.4 if you wish. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/80030043
-
Rob Pike authored
Fixes #7519. LGTM=adg, mikioh.mikioh R=golang-codereviews, adg, mikioh.mikioh CC=golang-codereviews https://golang.org/cl/80370043
-
Rob Pike authored
Their priority was not documented. Fixes #7571. LGTM=adg R=golang-codereviews, adg CC=golang-codereviews https://golang.org/cl/80360043
-
Mikio Hara authored
LGTM=r R=golang-codereviews, r CC=golang-codereviews https://golang.org/cl/80120044
-
Dave Cheney authored
Fixes #7627. CL 61970044 changed the order in which .a files are passed to gccgo's link phase. However by reversing the order it caused gccgo to complain if both internal (liba.a) and external (liba_test.a) versions of a package were presented as the former would not contain all the necessary symbols, and the latter would duplicate symbols already defined. This change ensures that all 'fake' targets remain at the top of the final link order which should be fine as a package compiled as an external test is a superset of its internal sibling. Looking at how gcToolchain links tests I think this change now accurately mirrors those actions which present $WORK/_test before $WORK in the link order. LGTM=iant R=rsc, iant CC=golang-codereviews, michael.hudson https://golang.org/cl/80300043
-