]> Cypherpunks repositories - gostls13.git/log
gostls13.git
11 years agocrypto/rand: support generation of 2-5 bit primes, also document the error return...
Shenghou Ma [Tue, 10 Dec 2013 04:25:49 +0000 (23:25 -0500)]
crypto/rand: support generation of 2-5 bit primes, also document the error return for Prime
Fixes #6849.
Fixes #6867.

R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/35870043

11 years agoos: clarify docs for Rename.
Shenghou Ma [Tue, 10 Dec 2013 04:25:13 +0000 (23:25 -0500)]
os: clarify docs for Rename.

Three changes:
1. mention "move" to clarify things up.
2. use {old,new}path instead of {old,new}name, which makes it clear what
   relative path would do here.
3. mention "OS-specific restrictions might apply".

Fixes #6887.

R=golang-dev, alex.brainman, iant, r
CC=golang-dev
https://golang.org/cl/36930044

11 years agostrconv: add example for Unquote.
Shenghou Ma [Tue, 10 Dec 2013 04:24:58 +0000 (23:24 -0500)]
strconv: add example for Unquote.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/38920043

11 years agoruntime: check for signed zero in printfloat
Carl Shapiro [Tue, 10 Dec 2013 01:51:30 +0000 (17:51 -0800)]
runtime: check for signed zero in printfloat

Fixes #6899

R=golang-dev, r, cshapiro, iant, rsc
CC=golang-dev
https://golang.org/cl/38120043

11 years agomisc/cgo/testcdefs: rm correct file in test.bash
Alex Brainman [Tue, 10 Dec 2013 01:06:24 +0000 (12:06 +1100)]
misc/cgo/testcdefs: rm correct file in test.bash

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/39780043

11 years agocmd/pack: stop parsing object files to generate __.SYMDEF
Russ Cox [Tue, 10 Dec 2013 00:35:17 +0000 (19:35 -0500)]
cmd/pack: stop parsing object files to generate __.SYMDEF

Nothing looks at __.SYMDEF, and the object file format is changing.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/39580044

11 years agoruntime: remove non-extern decls of runtime.goarm
Russ Cox [Tue, 10 Dec 2013 00:35:07 +0000 (19:35 -0500)]
runtime: remove non-extern decls of runtime.goarm

The linker is in charge of providing the one true declaration.

R=golang-dev, dave, r
CC=golang-dev
https://golang.org/cl/39560043

11 years agocmd/cgo: use __gcc_struct__ for go exported functions
Alex Brainman [Tue, 10 Dec 2013 00:30:12 +0000 (11:30 +1100)]
cmd/cgo: use __gcc_struct__ for go exported functions

Fixes #6833

R=minux.ma, iant
CC=golang-dev
https://golang.org/cl/35790045

11 years agoliblink: fix extern register accesses on Plan 9 (386)
Anthony Martin [Mon, 9 Dec 2013 23:48:44 +0000 (18:48 -0500)]
liblink: fix extern register accesses on Plan 9 (386)

R=golang-dev, 0intro, rsc
CC=golang-dev
https://golang.org/cl/39680044

11 years agocmd/8c, cmd/8g, cmd/8l: fix Plan 9 warnings
David du Colombier [Mon, 9 Dec 2013 23:47:22 +0000 (18:47 -0500)]
cmd/8c, cmd/8g, cmd/8l: fix Plan 9 warnings

warning: src/cmd/8c/list.c:124 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:134 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:142 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:152 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:156 format mismatch d VLONG, arg 4
warning: src/cmd/8c/list.c:160 format mismatch d VLONG, arg 4
warning: src/cmd/8c/list.c:165 format mismatch d VLONG, arg 4
warning: src/cmd/8c/list.c:167 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:172 format mismatch d VLONG, arg 4
warning: src/cmd/8c/list.c:174 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:178 format mismatch d VLONG, arg 3
warning: src/cmd/8c/list.c:184 format mismatch d VLONG, arg 3

warning: src/cmd/8g/list.c:91 format mismatch d VLONG, arg 4
warning: src/cmd/8g/list.c:100 format mismatch d VLONG, arg 4
warning: src/cmd/8g/list.c:114 format mismatch d VLONG, arg 5
warning: src/cmd/8g/list.c:118 format mismatch d VLONG, arg 5
warning: src/cmd/8g/list.c:122 format mismatch d VLONG, arg 5
warning: src/cmd/8g/list.c:126 format mismatch d VLONG, arg 5
warning: src/cmd/8g/list.c:136 format mismatch d VLONG, arg 4

warning: src/cmd/8l/list.c:107 format mismatch d VLONG, arg 4
warning: src/cmd/8l/list.c:125 format mismatch ux VLONG, arg 4
warning: src/cmd/8l/list.c:128 format mismatch ux VLONG, arg 4
warning: src/cmd/8l/list.c:130 format mismatch d VLONG, arg 4
warning: src/cmd/8l/list.c:134 format mismatch d VLONG, arg 5
warning: src/cmd/8l/list.c:138 format mismatch d VLONG, arg 6
warning: src/cmd/8l/list.c:143 format mismatch d VLONG, arg 5
warning: src/cmd/8l/list.c:148 format mismatch d VLONG, arg 5
warning: src/cmd/8l/list.c:150 format mismatch d VLONG, arg 4
warning: src/cmd/8l/list.c:154 format mismatch d VLONG, arg 4
warning: src/cmd/8l/list.c:158 format mismatch d VLONG, arg 4
warning: src/cmd/8l/obj.c:132 format mismatch ux VLONG, arg 2

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/39710043

11 years agoruntime: do not use memmove in the Plan 9 signal handler
Anthony Martin [Mon, 9 Dec 2013 23:41:48 +0000 (18:41 -0500)]
runtime: do not use memmove in the Plan 9 signal handler

Fixes a regression introduced in revision 4cb93e2900d0.

That revision changed runtime·memmove to use SSE MOVOU
instructions for sizes between 17 and 256 bytes. We were
using memmove to save a copy of the note string during
the note handler. The Plan 9 kernel does not allow the
use of floating point in note handlers (which includes
MOVOU since it touches the XMM registers).

Arguably, runtime·memmove should not be using MOVOU when
GO386=387 but that wouldn't help us on amd64. It's very
important that we guard against any future changes so we
use a simple copy loop instead.

This change is extracted from CL 9796043 (since that CL
is still being ironed out).

R=rsc
CC=golang-dev
https://golang.org/cl/34640045

11 years ago.hgignore: ignore liblink/anames?.c
Russ Cox [Mon, 9 Dec 2013 23:40:54 +0000 (18:40 -0500)]
.hgignore: ignore liblink/anames?.c

R=golang-dev, minux.ma, iant
CC=golang-dev
https://golang.org/cl/36300045

11 years agobuild: do not use the host's libbio on Plan 9
Anthony Martin [Mon, 9 Dec 2013 23:39:58 +0000 (18:39 -0500)]
build: do not use the host's libbio on Plan 9

R=jas, lucio.dere, rsc
CC=golang-dev
https://golang.org/cl/14604047

11 years agocmd/gc, runtime: correct a misnomer regarding dead value maps
Carl Shapiro [Mon, 9 Dec 2013 22:45:10 +0000 (14:45 -0800)]
cmd/gc, runtime: correct a misnomer regarding dead value maps

The funcdata symbol incorrectly named the dead value map the
dead pointer map.  The dead value map identifies all dead
values, including pointers and non-pointers, in a stack frame.
The purpose of this map is to allow the runtime to poison
locations of dead data to catch lost invariants.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/38670043

11 years agocmd/gc: fix windows build, probably
Russ Cox [Mon, 9 Dec 2013 18:02:56 +0000 (13:02 -0500)]
cmd/gc: fix windows build, probably

TBR=iant
CC=golang-dev
https://golang.org/cl/39540043

11 years agocmd/6l: fix linux/amd64
Russ Cox [Mon, 9 Dec 2013 17:58:35 +0000 (09:58 -0800)]
cmd/6l: fix linux/amd64

TBR=iant
CC=golang-dev
https://golang.org/cl/39530043

11 years agocmd/dist, cmd/go: pass -fmessage-length always
Russ Cox [Mon, 9 Dec 2013 17:56:23 +0000 (12:56 -0500)]
cmd/dist, cmd/go: pass -fmessage-length always

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/36300044

11 years agocmd/gc: print more information for windows failure
Russ Cox [Mon, 9 Dec 2013 17:55:25 +0000 (12:55 -0500)]
cmd/gc: print more information for windows failure

TBR=iant
CC=golang-dev
https://golang.org/cl/39510043

11 years agocmd/ld: fix linux/386 build
Russ Cox [Mon, 9 Dec 2013 15:42:55 +0000 (07:42 -0800)]
cmd/ld: fix linux/386 build

TBR=iant
CC=golang-dev
https://golang.org/cl/39400044

11 years agocmd/dist, cmd/go: pass -fmessage-length=0 when using clang
Russ Cox [Mon, 9 Dec 2013 15:33:27 +0000 (10:33 -0500)]
cmd/dist, cmd/go: pass -fmessage-length=0 when using clang

That option turns off word wrapping of individual
error messages generated by clang. The wrapping
makes the errors harder to read and conflicts with the
idea of a terminal window that can be resized.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/35810043

11 years agoliblink: fix Plan 9 build
David du Colombier [Mon, 9 Dec 2013 12:55:53 +0000 (07:55 -0500)]
liblink: fix Plan 9 build

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/39280043

11 years agoruntime: remove cross-function jump in vlop_arm.s
Russ Cox [Mon, 9 Dec 2013 03:52:08 +0000 (22:52 -0500)]
runtime: remove cross-function jump in vlop_arm.s

The new linker will disallow this on arm
(it is already disallowed on amd64 and 386)
in order to be able to lay out each function
separately.

The restriction is only for jumps into the middle
of a function; jumps to the beginning of a function
remain fine.

Prereq for linker cleanup (golang.org/s/go13linker).

R=iant, r, minux.ma
CC=golang-dev
https://golang.org/cl/35800043

11 years agocmd/5g, cmd/6g, cmd/8g: use liblink
Russ Cox [Mon, 9 Dec 2013 03:51:55 +0000 (22:51 -0500)]
cmd/5g, cmd/6g, cmd/8g: use liblink

Preparation for golang.org/s/go13linker work.

This CL does not build by itself. It depends on 35740044
and 35790044 and will be submitted at the same time.

R=iant
CC=golang-dev
https://golang.org/cl/34590045

11 years agocmd/5c, cmd/6c, cmd/8c: use liblink
Russ Cox [Mon, 9 Dec 2013 03:51:31 +0000 (22:51 -0500)]
cmd/5c, cmd/6c, cmd/8c: use liblink

Preparation for golang.org/s/go13linker work.

This CL does not build by itself. It depends on 35740044
and 35790044 and will be submitted at the same time.

R=iant
CC=golang-dev
https://golang.org/cl/34580044

11 years agocmd/5a, cmd/6a, cmd/8a: use liblink
Russ Cox [Mon, 9 Dec 2013 03:49:56 +0000 (22:49 -0500)]
cmd/5a, cmd/6a, cmd/8a: use liblink

Preparation for golang.org/s/go13linker work.

This CL does not build by itself. It depends on 35740044
and 35790044 and will be submitted at the same time.

R=iant
CC=golang-dev
https://golang.org/cl/35830043

11 years agoliblink: create new library based on linker code
Russ Cox [Mon, 9 Dec 2013 03:49:37 +0000 (22:49 -0500)]
liblink: create new library based on linker code

There is an enormous amount of code moving around in this CL,
but the code is the same, and it is invoked in the same ways.
This CL is preparation for the new linker structure, not the new
structure itself.

The new library's definition is in include/link.h.

The main change is the use of a Link structure to hold all the
linker-relevant state, replacing the smattering of global variables.
The Link structure should both make it clearer which state must
be carried around and make it possible to parallelize more easily
later.

The main body of the linker has moved into the architecture-independent
cmd/ld directory. That includes the list of known header types, so the
distinction between Hplan9x32 and Hplan9x64 is removed (no other
header type distinguished 32- and 64-bit formats), and code for unused
formats such as ipaq kernels has been deleted.

The code being deleted from 5l, 6l, and 8l reappears in liblink or in ld.
Because multiple files are being merged in the liblink directory,
it is not possible to show the diffs nicely in hg.

The Prog and Addr structures have been unified into an
architecture-independent form and moved to link.h, where they will
be shared by all tools: the assemblers, the compilers, and the linkers.
The unification makes it possible to write architecture-independent
traversal of Prog lists, among other benefits.

The Sym structures cannot be unified: they are too fundamentally
different between the linker and the compilers. Instead, liblink defines
an LSym - a linker Sym - to be used in the Prog and Addr structures,
and the linker now refers exclusively to LSyms. The compilers will
keep using their own syms but will fill out the corresponding LSyms in
the Prog and Addr structures.

Although code from 5l, 6l, and 8l is now in a single library, the
code has been arranged so that only one architecture needs to
be linked into a particular program: 5l will not contain the code
needed for x86 instruction layout, for example.

The object file writing code in liblink/obj.c is from cmd/gc/obj.c.

Preparation for golang.org/s/go13linker work.

This CL does not build by itself. It depends on 35740044
and will be submitted at the same time.

R=iant
CC=golang-dev
https://golang.org/cl/35790044

11 years agocmd/dist: add liblink build information
Russ Cox [Mon, 9 Dec 2013 03:48:11 +0000 (22:48 -0500)]
cmd/dist: add liblink build information

In addition to adding the library, change the way the anames array is created.
Previously, it was written to src/cmd/6l/enam.c (and similarly for 5l and 8l)
and each of the other tools (6g, 6c, 6a) compiled the 6l/enam.c file in addition
to their own sources.

Now that there is a library shared by all these programs, move the anames
array into that library. To eliminate name conflicts, name the array after
the architecture letter: anames5, anames6, anames8.

First step to linker cleanup (golang.org/s/go13linker).

This CL does not build by itself. It depends on the CLs introducing
liblink and changing commands to use it.

R=iant
CC=golang-dev
https://golang.org/cl/35740044

11 years agocmd/gc: do not generate dead value maps yet
Carl Shapiro [Fri, 6 Dec 2013 23:49:47 +0000 (15:49 -0800)]
cmd/gc: do not generate dead value maps yet

We are not clearing dead values in the garbage collector so it
is not worth the RSS cost to materialize the data and write it
out to the binary.

R=golang-dev, iant, cshapiro
CC=golang-dev
https://golang.org/cl/38650043

11 years agocmd/gc: clarify a TODO regarding variables used in liveness analysis
Carl Shapiro [Fri, 6 Dec 2013 23:36:54 +0000 (15:36 -0800)]
cmd/gc: clarify a TODO regarding variables used in liveness analysis

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/38640043

11 years agoruntime: add GODEBUG option for an electric fence like heap mode
Carl Shapiro [Fri, 6 Dec 2013 22:40:45 +0000 (14:40 -0800)]
runtime: add GODEBUG option for an electric fence like heap mode

When enabled this new debugging mode will allocate objects on
their own page and never recycle memory addresses.  This is an
essential tool to root cause a broad class of heap corruption.

R=golang-dev, dave, daniel.morsing, dvyukov, rsc, iant, cshapiro
CC=golang-dev
https://golang.org/cl/22060046

11 years agodoc: update list of gccgo import search paths
Peter Collingbourne [Fri, 6 Dec 2013 21:33:10 +0000 (13:33 -0800)]
doc: update list of gccgo import search paths

R=iant
CC=golang-dev
https://golang.org/cl/38560043

11 years agoCONTRIBUTORS: add Peter Collingbourne (Google CLA)
Ian Lance Taylor [Fri, 6 Dec 2013 21:32:47 +0000 (13:32 -0800)]
CONTRIBUTORS: add Peter Collingbourne (Google CLA)

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/38590043

11 years agocmd/dist: revert an accidental change to the optimization setting
Carl Shapiro [Fri, 6 Dec 2013 01:49:34 +0000 (17:49 -0800)]
cmd/dist: revert an accidental change to the optimization setting

R=golang-dev
CC=golang-dev
https://golang.org/cl/38130043

11 years agocmd/5g, cmd/5l, cmd/6g, cmd/6l, cmd/8g, cmd/8l, cmd/gc, runtime: generate pointer...
Carl Shapiro [Fri, 6 Dec 2013 01:35:22 +0000 (17:35 -0800)]
cmd/5g, cmd/5l, cmd/6g, cmd/6l, cmd/8g, cmd/8l, cmd/gc, runtime: generate pointer maps by liveness analysis

This change allows the garbage collector to examine stack
slots that are determined as live and containing a pointer
value by the garbage collector.  This results in a mean
reduction of 65% in the number of stack slots scanned during
an invocation of "GOGC=1 all.bash".

Unfortunately, this does not yet allow garbage collection to
be precise for the stack slots computed as live.  Pointers
confound the determination of what definitions reach a given
instruction.  In general, this problem is not solvable without
runtime cost but some advanced cooperation from the compiler
might mitigate common cases.

R=golang-dev, rsc, cshapiro
CC=golang-dev
https://golang.org/cl/14430048

11 years agoA+C: add Dmitri Shuralyov
Andrew Gerrand [Wed, 4 Dec 2013 22:28:24 +0000 (09:28 +1100)]
A+C: add Dmitri Shuralyov

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/31900043

11 years agodoc/go1.3.txt: add file to track significant CLs for 1.3
Rob Pike [Wed, 4 Dec 2013 01:08:51 +0000 (17:08 -0800)]
doc/go1.3.txt: add file to track significant CLs for 1.3
Nothing significant so far (right?), but let's lay the keystone.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/36830043

11 years agoencoding/gob: do not hide an unsafe.Pointer in a uintptr
Carl Shapiro [Tue, 3 Dec 2013 23:24:27 +0000 (15:24 -0800)]
encoding/gob: do not hide an unsafe.Pointer in a uintptr

R=golang-dev, r, rsc
CC=golang-dev
https://golang.org/cl/23320044

11 years agoruntime: add an allocation and free tracing for gc debugging
Carl Shapiro [Tue, 3 Dec 2013 22:42:38 +0000 (14:42 -0800)]
runtime: add an allocation and free tracing for gc debugging

Output for an allocation and free (sweep) follows

MProf_Malloc(p=0xc2100210a0, size=0x50, type=0x0 <single object>)
        #0 0x46ee15 runtime.mallocgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:141
        #1 0x47004f runtime.settype_flush /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:612
        #2 0x45f92c gc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2071
        #3 0x45f89e mgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2050
        #4 0x45258b runtime.mcall /usr/local/google/home/cshapiro/go/src/pkg/runtime/asm_amd64.s:179

MProf_Free(p=0xc2100210a0, size=0x50)
        #0 0x46ee15 runtime.mallocgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:141
        #1 0x47004f runtime.settype_flush /usr/local/google/home/cshapiro/go/src/pkg/runtime/malloc.goc:612
        #2 0x45f92c gc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2071
        #3 0x45f89e mgc /usr/local/google/home/cshapiro/go/src/pkg/runtime/mgc0.c:2050
        #4 0x45258b runtime.mcall /usr/local/google/home/cshapiro/go/src/pkg/runtime/asm_amd64.s:179

R=golang-dev, dvyukov, rsc, cshapiro
CC=golang-dev
https://golang.org/cl/21990045

11 years agocmd/gc: fix special-casing of the printed names of map internal structures.
Keith Randall [Tue, 3 Dec 2013 22:27:08 +0000 (14:27 -0800)]
cmd/gc: fix special-casing of the printed names of map internal structures.
Shaves 1% off of binary size.

update #6853

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/35940047

11 years agoruntime: move stack scanning into the parallel mark phase
Carl Shapiro [Tue, 3 Dec 2013 22:12:55 +0000 (14:12 -0800)]
runtime: move stack scanning into the parallel mark phase

This change reduces the cost of the stack scanning by frames.
It moves the stack scanning from the serial root enumeration
phase to the parallel tracing phase.  The output that follows
are timings for the issue 6482 benchmark

Baseline

BenchmarkGoroutineSelect       50  108027405 ns/op
BenchmarkGoroutineBlocking       50   89573332 ns/op
BenchmarkGoroutineForRange       20   95614116 ns/op
BenchmarkGoroutineIdle       20  122809512 ns/op

Stack scan by frames, non-parallel

BenchmarkGoroutineSelect       20  297138929 ns/op
BenchmarkGoroutineBlocking       20  301137599 ns/op
BenchmarkGoroutineForRange       10  312499469 ns/op
BenchmarkGoroutineIdle       10  209428876 ns/op

Stack scan by frames, parallel

BenchmarkGoroutineSelect       20  183938431 ns/op
BenchmarkGoroutineBlocking       20  170109999 ns/op
BenchmarkGoroutineForRange       20  179628882 ns/op
BenchmarkGoroutineIdle       20  157541498 ns/op

The remaining performance disparity is due to inefficiencies
in gentraceback and its callees.  The effect was isolated by
using a parallel stack scan where scanstack was modified to do
a conservative scan of the stack segments without gentraceback
followed by a call of gentrackback with a no-op callback.

The output that follows are the top-10 most frequent tops of
stacks as determined by the Linux perf record facility.

Baseline

+  25.19%  gc.test  gc.test            [.] runtime.xchg
+  19.00%  gc.test  gc.test            [.] scanblock
+   8.53%  gc.test  gc.test            [.] scanstack
+   8.46%  gc.test  gc.test            [.] flushptrbuf
+   5.08%  gc.test  gc.test            [.] procresize
+   3.57%  gc.test  gc.test            [.] runtime.chanrecv
+   2.94%  gc.test  gc.test            [.] dequeue
+   2.74%  gc.test  gc.test            [.] addroots
+   2.25%  gc.test  gc.test            [.] runtime.ready
+   1.33%  gc.test  gc.test            [.] runtime.cas64

Gentraceback

+  18.12%  gc.test  gc.test             [.] runtime.xchg
+  14.68%  gc.test  gc.test             [.] scanblock
+   8.20%  gc.test  gc.test             [.] runtime.gentraceback
+   7.38%  gc.test  gc.test             [.] flushptrbuf
+   6.84%  gc.test  gc.test             [.] scanstack
+   5.92%  gc.test  gc.test             [.] runtime.findfunc
+   3.62%  gc.test  gc.test             [.] procresize
+   3.15%  gc.test  gc.test             [.] readvarint
+   1.92%  gc.test  gc.test             [.] addroots
+   1.87%  gc.test  gc.test             [.] runtime.chanrecv

R=golang-dev, dvyukov, rsc
CC=golang-dev
https://golang.org/cl/17410043

11 years agoruntime: get rid of concatstring's vararg C argument.
Keith Randall [Tue, 3 Dec 2013 18:39:19 +0000 (10:39 -0800)]
runtime: get rid of concatstring's vararg C argument.

Pass as a slice of strings instead.  For 2-5 strings, implement
dedicated routines so no slices are needed.

static call counts in the go binary:
 2 strings: 342 occurrences
 3 strings:  98
 4 strings:  30
 5 strings:  13
6+ strings:  14

Why?  C varags, bad for stack scanning and copying.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/36380043

11 years agoruntime: fix race detector when map keys/values are passed by pointer.
Keith Randall [Tue, 3 Dec 2013 02:03:25 +0000 (18:03 -0800)]
runtime: fix race detector when map keys/values are passed by pointer.

Now that the map implementation is reading the keys and values from
arbitrary memory (instead of from stack slots), it needs to tell the
race detector when it does so.

Fixes #6875.

R=golang-dev, dave
CC=golang-dev
https://golang.org/cl/36360043

11 years agoreflect: test to make sure big Zero()-obtained objects are really zero.
Keith Randall [Tue, 3 Dec 2013 01:58:19 +0000 (17:58 -0800)]
reflect: test to make sure big Zero()-obtained objects are really zero.

Update #6876.

R=dave, bradfitz
CC=golang-dev
https://golang.org/cl/36370043

11 years agoreflect: fix Zero() implementation - not every type has a
Keith Randall [Tue, 3 Dec 2013 00:54:29 +0000 (16:54 -0800)]
reflect: fix Zero() implementation - not every type has a
zero object allocated, so we still need to allocate a new
zero area every time.

Fixes #6876.

R=golang-dev
CC=golang-dev
https://golang.org/cl/36320043

11 years agoreflect: prevent the callXX routines from calling makeFuncStub
Keith Randall [Mon, 2 Dec 2013 21:36:50 +0000 (13:36 -0800)]
reflect: prevent the callXX routines from calling makeFuncStub
and methodValueCall directly.  Instead, we inline their behavior
inside of reflect.call.

This change is required because otherwise we have a situation where
reflect.callXX calls makeFuncStub, neither of which knows the
layout of the args passed between them.  That's bad for
precise gc & stack copying.

Fixes #6619.

R=golang-dev, dvyukov, rsc, iant, khr
CC=golang-dev
https://golang.org/cl/26970044

11 years agoruntime: don't use ... formal argument to deferreturn.
Keith Randall [Mon, 2 Dec 2013 21:07:15 +0000 (13:07 -0800)]
runtime: don't use ... formal argument to deferreturn.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/28860043

11 years agoruntime: pass key/value to map accessors by reference, not by value.
Keith Randall [Mon, 2 Dec 2013 21:05:04 +0000 (13:05 -0800)]
runtime: pass key/value to map accessors by reference, not by value.

This change is part of the plan to get rid of all vararg C calls
which are a pain for getting exact stack scanning.

We allocate a chunk of zero memory to return a pointer to when a
map access doesn't find the key.  This is simpler than returning nil
and fixing things up in the caller.  Linker magic allocates a single
zero memory area that is shared by all (non-reflect-generated) map
types.

Passing things by reference gets rid of some copies, so it speeds
up code with big keys/values.

benchmark             old ns/op    new ns/op    delta
BenchmarkBigKeyMap           34           31   -8.48%
BenchmarkBigValMap           37           30  -18.62%
BenchmarkSmallKeyMap         26           23  -11.28%

R=golang-dev, dvyukov, khr, rsc
CC=golang-dev
https://golang.org/cl/14794043

11 years agotag go1.2
Andrew Gerrand [Sun, 1 Dec 2013 22:06:41 +0000 (09:06 +1100)]
tag go1.2

R=golang-dev, dsymonds, alex.brainman
CC=golang-dev
https://golang.org/cl/35000043

11 years agomisc/vim: send Fmt errors to the quickfix list instead of the location list.
David Symonds [Wed, 27 Nov 2013 08:32:15 +0000 (19:32 +1100)]
misc/vim: send Fmt errors to the quickfix list instead of the location list.

Output from gofmt is a list of errors, so they should appear in the error list.

R=adg
CC=golang-dev
https://golang.org/cl/33760043

11 years agodoc/install.html: fix a tag.
Oling Cat [Mon, 25 Nov 2013 02:36:16 +0000 (13:36 +1100)]
doc/install.html: fix a tag.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/30900044

11 years agomisc/vim: describe how to get gofmt-on-save behaviour.
David Symonds [Mon, 25 Nov 2013 00:03:47 +0000 (11:03 +1100)]
misc/vim: describe how to get gofmt-on-save behaviour.

Fixes #6826.

R=golang-dev, bradfitz, adg
CC=golang-dev
https://golang.org/cl/31770043

11 years agoREADME: Fix installation instructions
Rob Pike [Wed, 20 Nov 2013 21:47:37 +0000 (13:47 -0800)]
README: Fix installation instructions
They were out of date and should refer to the source installation instructions.

Fixes #6783.

R=golang-dev, rsc, adg, dave
CC=golang-dev
https://golang.org/cl/28500043

11 years agodoc: update installation instructions
Andrew Gerrand [Wed, 20 Nov 2013 20:55:29 +0000 (07:55 +1100)]
doc: update installation instructions

Clarify that GOROOT should only be set when using a custom install path.
Remove NetBSD from binary install page (we don't provide binaries).
Remove "What's next" links from installation instructions.
Emphasize "How to Write Go Code" page.

Fixes #6613.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/28700043

11 years agotest: revert unintentional commits
dvyukov [Tue, 19 Nov 2013 11:36:13 +0000 (15:36 +0400)]
test: revert unintentional commits
I thought I am in a different repo...

11 years ago-
dvyukov [Tue, 19 Nov 2013 11:31:01 +0000 (15:31 +0400)]
-

11 years ago13+
dvyukov [Tue, 19 Nov 2013 08:55:12 +0000 (12:55 +0400)]
13+

11 years agomisc/dist: fix file regexp
Andrew Gerrand [Mon, 18 Nov 2013 02:30:25 +0000 (13:30 +1100)]
misc/dist: fix file regexp

This step makes it possible to upload the -osx10.x binaries
separately to their construction (after signing, for example).

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/28160043

11 years agotag go1.2rc5
Andrew Gerrand [Mon, 18 Nov 2013 01:47:37 +0000 (12:47 +1100)]
tag go1.2rc5

R=dsymonds
CC=golang-dev
https://golang.org/cl/28150043

11 years agoC: add Marko Mikulicic (Google CLA)
Brad Fitzpatrick [Fri, 15 Nov 2013 19:01:54 +0000 (11:01 -0800)]
C: add Marko Mikulicic (Google CLA)

R=golang-dev, crawshaw
CC=golang-dev
https://golang.org/cl/27000043

11 years agodoc/asm: more about SP, ARM R11
Russ Cox [Thu, 14 Nov 2013 02:29:34 +0000 (21:29 -0500)]
doc/asm: more about SP, ARM R11

Also rename URL to /doc/asm.

R=golang-dev, minux.ma, r
CC=golang-dev
https://golang.org/cl/26170043

11 years agoencoding/gob: do not use MarshalText, UnmarshalText
Russ Cox [Thu, 14 Nov 2013 02:29:19 +0000 (21:29 -0500)]
encoding/gob: do not use MarshalText, UnmarshalText

This seems to be the best of a long list of bad ways to fix this issue.

Fixes #6760.

R=r
CC=golang-dev
https://golang.org/cl/22770044

11 years agoencoding/gob: expose encode/decode example
Andrew Gerrand [Wed, 13 Nov 2013 22:20:29 +0000 (09:20 +1100)]
encoding/gob: expose encode/decode example

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/26220045

11 years agotag go1.2rc4
Andrew Gerrand [Wed, 13 Nov 2013 04:32:40 +0000 (15:32 +1100)]
tag go1.2rc4

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/25580045

11 years agosrc/cmd/?a: link to new assembler document
Rob Pike [Wed, 13 Nov 2013 04:07:08 +0000 (20:07 -0800)]
src/cmd/?a: link to new assembler document
Blocked on 20930043, the CL the new text references.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/18430044

11 years agodoc/asm.html: new document, a brief guide to the assembler
Rob Pike [Wed, 13 Nov 2013 04:04:22 +0000 (20:04 -0800)]
doc/asm.html: new document, a brief guide to the assembler

Fixes #6060

R=golang-dev, iant, bradfitz, josharian, minux.ma, aram, rsc
CC=golang-dev
https://golang.org/cl/20930043

11 years agospec: clarify rules for blank identifiers
Robert Griesemer [Wed, 13 Nov 2013 02:06:54 +0000 (21:06 -0500)]
spec: clarify rules for blank identifiers

This documents the status quo more precisely.
Not a language change.

Fixes #6006.

R=r, rsc, iant, ken
CC=golang-dev
https://golang.org/cl/14415043

11 years agodoc: use the same wording for OS X as the other OSes
Andrew Gerrand [Wed, 13 Nov 2013 00:53:01 +0000 (11:53 +1100)]
doc: use the same wording for OS X as the other OSes

I used "and above" when I should have said "or later".

Sorry for the churn.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/25670043

11 years agodoc: we support all recent versions of OS X
Andrew Gerrand [Wed, 13 Nov 2013 00:35:25 +0000 (11:35 +1100)]
doc: we support all recent versions of OS X

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/25370045

11 years agoCONTRIBUTORS: add additional e-mail address for Richard Musiol
Robert Griesemer [Tue, 12 Nov 2013 18:03:13 +0000 (10:03 -0800)]
CONTRIBUTORS: add additional e-mail address for Richard Musiol

R=adonovan
CC=golang-dev
https://golang.org/cl/25360043

11 years agoA+C: Richard Musiol (individual CLA)
Robert Griesemer [Tue, 12 Nov 2013 17:57:00 +0000 (09:57 -0800)]
A+C: Richard Musiol (individual CLA)

Generated by addca.

R=gobot
CC=golang-dev
https://golang.org/cl/25350043

11 years agomisc/vim: add a gofmt_command flag for :Fmt
David Crawshaw [Mon, 11 Nov 2013 22:28:07 +0000 (09:28 +1100)]
misc/vim: add a gofmt_command flag for :Fmt

R=dsymonds, dominik.honnef, n13m3y3r, rsc, kamil.kisiel
CC=golang-dev
https://golang.org/cl/22940044

11 years agocmd/godoc: document package-level examples
Olivier Duperray [Mon, 11 Nov 2013 01:09:24 +0000 (12:09 +1100)]
cmd/godoc: document package-level examples

Fixes  issue  5807 .

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/23940043

11 years agomisc/emacs: various cleanups
Dominik Honnef [Fri, 8 Nov 2013 20:23:12 +0000 (15:23 -0500)]
misc/emacs: various cleanups

- Use #' for function symbols
- Remove unused variables
- Use declare-function to shut up byte compiler

This is identical to CL 19010044 with one exception: Making sure
it doesn't break on Emacs 22.1

R=adonovan, bradfitz, shendaras
CC=golang-dev
https://golang.org/cl/20100043

11 years agoemacs: allow users to customize the gofmt command, in particular, to use goimports...
Sameer Ajmani [Fri, 8 Nov 2013 16:31:44 +0000 (11:31 -0500)]
emacs: allow users to customize the gofmt command, in particular, to use goimports instead.

R=adonovan
CC=golang-dev
https://golang.org/cl/23680043

11 years agocmd/cgo: fix handling of array of pointers when using clang
Russ Cox [Thu, 7 Nov 2013 20:24:51 +0000 (15:24 -0500)]
cmd/cgo: fix handling of array of pointers when using clang

Clang does not record the "size" field for pointer types,
so we must insert the size ourselves. We were already
doing this, but only for the case of pointer types.
For an array of pointer types, the setting of the size for
the nested pointer type was happening after the computation
of the size of the array type, meaning that the array type
was always computed as 0 bytes. Delay the size computation.

This bug happens on all Clang systems, not just FreeBSD.
Our test checked that cgo wrote something, not that it was correct.
FreeBSD's default clang rejects array[0] as a C struct field,
so it noticed the incorrect sizes. But the sizes were incorrect
everywhere.

Update testcdefs to check the output has the right semantics.

Fixes #6292.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/22840043

11 years agodoc: update note about GCC 4.8.2 in gccgo instructions
Ian Lance Taylor [Wed, 6 Nov 2013 21:58:35 +0000 (13:58 -0800)]
doc: update note about GCC 4.8.2 in gccgo instructions

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/22510043

11 years agogo/doc: add full stop of Japanese, Chinese and Korean.
Ato Araki [Tue, 5 Nov 2013 04:13:50 +0000 (15:13 +1100)]
go/doc: add full stop of Japanese, Chinese and Korean.

This fix will show a good synopsis on package listings in that languages.

R=adg, r
CC=golang-dev
https://golang.org/cl/21130043

11 years agoA+C: Ato Araki (individual CLA)
Andrew Gerrand [Tue, 5 Nov 2013 04:10:24 +0000 (15:10 +1100)]
A+C: Ato Araki (individual CLA)

Generated by addca.

R=gobot
CC=golang-dev
https://golang.org/cl/21790043

11 years agodoc/go1.2: link to cgo documentation
Andrew Gerrand [Tue, 5 Nov 2013 02:54:48 +0000 (13:54 +1100)]
doc/go1.2: link to cgo documentation

I know it's linked in the previous sentence, but this new link is where I want it to be while reading this sentence.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/21770043

11 years agonet/textproto: fix CanonicalMIMEHeaderKey panic
Brad Fitzpatrick [Mon, 4 Nov 2013 17:35:11 +0000 (12:35 -0500)]
net/textproto: fix CanonicalMIMEHeaderKey panic

Fixes #6712

R=golang-dev, adg, rsc
CC=golang-dev
https://golang.org/cl/21450043

11 years agoC: add Robert Snedegar (Google CLA)
Andrew Gerrand [Mon, 4 Nov 2013 06:41:08 +0000 (17:41 +1100)]
C: add Robert Snedegar (Google CLA)

R=golang-dev
CC=golang-dev
https://golang.org/cl/21390044

11 years agoC: add Brad Garcia (Google CLA)
Brad Fitzpatrick [Fri, 1 Nov 2013 16:18:35 +0000 (09:18 -0700)]
C: add Brad Garcia (Google CLA)

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/19990045

11 years agotag go1.2rc3
Andrew Gerrand [Fri, 1 Nov 2013 01:53:31 +0000 (12:53 +1100)]
tag go1.2rc3

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/20680043

11 years agocmd/5l, runtime: fix divide for profiling tracebacks on ARM
Russ Cox [Thu, 31 Oct 2013 18:15:55 +0000 (18:15 +0000)]
cmd/5l, runtime: fix divide for profiling tracebacks on ARM

Two bugs:
1. The first iteration of the traceback always uses LR when provided,
which it is (only) during a profiling signal, but in fact LR is correct
only if the stack frame has not been allocated yet. Otherwise an
intervening call may have changed LR, and the saved copy in the stack
frame should be used. Fix in traceback_arm.c.

2. The division runtime call adds 8 bytes to the stack. In order to
keep the traceback routines happy, it must copy the saved LR into
the new 0(SP). Change

        SUB $8, SP

into

        MOVW    0(SP), R11 // r11 is temporary, for use by linker
        MOVW.W  R11, -8(SP)

to update SP and 0(SP) atomically, so that the traceback always
sees a saved LR at 0(SP).

Fixes #6681.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/19910044

11 years agoundo CL 19810043 / 352f3b7c9664
Russ Cox [Thu, 31 Oct 2013 17:18:57 +0000 (17:18 +0000)]
undo CL 19810043 / 352f3b7c9664

The CL causes misc/cgo/test to fail randomly.
I suspect that the problem is the use of a division instruction
in usleep, which can be called while trying to acquire an m
and therefore cannot store the denominator in m.
The solution to that would be to rewrite the code to use a
magic multiply instead of a divide, but now we're getting
pretty far off the original code.

Go back to the original in preparation for a different,
less efficient but simpler fix.

««« original CL description
cmd/5l, runtime: make ARM integer division profiler-friendly

The implementation of division constructed non-standard
stack frames that could not be handled by the traceback
routines.

CL 13239052 left the frames non-standard but fixed them
for the specific case of a divide-by-zero panic.
A profiling signal can arrive at any time, so that fix
is not sufficient.

Change the division to store the extra argument in the M struct
instead of in a new stack slot. That keeps the frames bog standard
at all times.

Also fix a related bug in the traceback code: when starting
a traceback, the LR register should be ignored if the current
function has already allocated its stack frame and saved the
original LR on the stack. The stack copy should be used, as the
LR register may have been modified.

Combined, these make the torture test from issue 6681 pass.

Fixes #6681.

R=golang-dev, r, josharian
CC=golang-dev
https://golang.org/cl/19810043
»»»

TBR=r
CC=golang-dev
https://golang.org/cl/20350043

11 years agocmd/5l, runtime: make ARM integer division profiler-friendly
Russ Cox [Wed, 30 Oct 2013 18:50:34 +0000 (18:50 +0000)]
cmd/5l, runtime: make ARM integer division profiler-friendly

The implementation of division constructed non-standard
stack frames that could not be handled by the traceback
routines.

CL 13239052 left the frames non-standard but fixed them
for the specific case of a divide-by-zero panic.
A profiling signal can arrive at any time, so that fix
is not sufficient.

Change the division to store the extra argument in the M struct
instead of in a new stack slot. That keeps the frames bog standard
at all times.

Also fix a related bug in the traceback code: when starting
a traceback, the LR register should be ignored if the current
function has already allocated its stack frame and saved the
original LR on the stack. The stack copy should be used, as the
LR register may have been modified.

Combined, these make the torture test from issue 6681 pass.

Fixes #6681.

R=golang-dev, r, josharian
CC=golang-dev
https://golang.org/cl/19810043

11 years agodoc/go1.2.html: delete repeated word
Rob Pike [Wed, 30 Oct 2013 16:39:20 +0000 (09:39 -0700)]
doc/go1.2.html: delete repeated word
TBR=rsc

R=golang-dev
CC=golang-dev
https://golang.org/cl/19840043

11 years agodoc/go1.2.html: stack sizes, thread limits
Rob Pike [Wed, 30 Oct 2013 15:54:53 +0000 (08:54 -0700)]
doc/go1.2.html: stack sizes, thread limits

R=golang-dev, minux.ma, adg, rsc
CC=golang-dev
https://golang.org/cl/19600043

11 years agocmd/cgo: accept extra leading _ on __cgodebug_data for all object formats
Russ Cox [Wed, 30 Oct 2013 14:24:42 +0000 (10:24 -0400)]
cmd/cgo: accept extra leading _ on __cgodebug_data for all object formats

The current Windows build breakage appears to be because
the Windows code should be looking for __cgodebug_data
not ___cgodebug_data. Dodge the question everywhere by
accepting both.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/19780043

11 years agoundo CL 19010044 / dbcd720e5396
Alan Donovan [Wed, 30 Oct 2013 02:17:14 +0000 (22:17 -0400)]
undo CL 19010044 / dbcd720e5396

bradfitz reports:
> It breaks go-mode on GNU Emacs 22.1.1 as ships with OS X 10.8.6.

««« original CL description
misc/emacs: various cleanups

- Use #' for function symbols
- Remove unused variables
- Use declare-function to shut up byte compiler

R=adonovan
CC=golang-dev
https://golang.org/cl/19010044

»»»

R=bradfitz
CC=golang-dev
https://golang.org/cl/19640043

11 years agodatabase/sql: document Result methods
Brad Fitzpatrick [Wed, 30 Oct 2013 00:38:43 +0000 (17:38 -0700)]
database/sql: document Result methods

Fixes #5110

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/19280046

11 years agodatabase/sql: Fix typos in doc
Julien Schmidt [Tue, 29 Oct 2013 23:03:13 +0000 (16:03 -0700)]
database/sql: Fix typos in doc

R=golang-dev
CC=bradfitz, golang-dev
https://golang.org/cl/17590043

11 years agoA+C: Jakob Borg (individual CLA).
David Symonds [Tue, 29 Oct 2013 22:27:02 +0000 (09:27 +1100)]
A+C: Jakob Borg (individual CLA).

R=golang-dev
CC=golang-dev
https://golang.org/cl/19510043

11 years agotime: correct path to time zone zip file on Unix
Russ Cox [Tue, 29 Oct 2013 21:11:51 +0000 (17:11 -0400)]
time: correct path to time zone zip file on Unix

Most Unix systems have their own time zone data,
so we almost never get far enough in the list to
discover that we cannot fall back to the zip file.
Adjust testing to exercise the final fallback.

Plan 9 and Windows were already correct
(and are the main users of the zip file).

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/19280043

11 years agoencoding/xml: fix doc comment
Russ Cox [Tue, 29 Oct 2013 21:11:25 +0000 (17:11 -0400)]
encoding/xml: fix doc comment

The tag is ",chardata" not "chardata".

Fixes #6631.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/19300046

11 years agonet/http/httputil: fix DumpRequestOut with ContentLength & false body param
Brad Fitzpatrick [Tue, 29 Oct 2013 21:06:11 +0000 (14:06 -0700)]
net/http/httputil: fix DumpRequestOut with ContentLength & false body param

Fixes #6471

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/14920050

11 years agomisc/emacs: various cleanups
Dominik Honnef [Tue, 29 Oct 2013 17:07:42 +0000 (13:07 -0400)]
misc/emacs: various cleanups

- Use #' for function symbols
- Remove unused variables
- Use declare-function to shut up byte compiler

R=adonovan
CC=golang-dev
https://golang.org/cl/19010044

11 years agoos: do not return Lstat errors from Readdir
Russ Cox [Tue, 29 Oct 2013 15:50:40 +0000 (11:50 -0400)]
os: do not return Lstat errors from Readdir

This CL restores the Go 1.1.2 semantics for os.File's Readdir method.

The code in Go 1.1.2 was rewritten mainly because it looked buggy.
This new version attempts to be clearer but still provide the 1.1.2 results.

The important diff is not this CL's version against tip but this CL's version
against Go 1.1.2.

Go 1.1.2:

        names, err := f.Readdirnames(n)
        fi = make([]FileInfo, len(names))
        for i, filename := range names {
                fip, err := Lstat(dirname + filename)
                if err == nil {
                        fi[i] = fip
                } else {
                        fi[i] = &fileStat{name: filename}
                }
        }
        return fi, err

This CL:

        names, err := f.Readdirnames(n)
        fi = make([]FileInfo, len(names))
        for i, filename := range names {
                fip, lerr := lstat(dirname + filename)
                if lerr != nil {
                        fi[i] = &fileStat{name: filename}
                        continue
                }
                fi[i] = fip
        }
        return fi, err

The changes from Go 1.1.2 are stylistic, not semantic:
1. Use lstat instead of Lstat, for testing (done before this CL).
2. Make error handling in loop body look more like an error case.
3. Use separate error variable name in loop body, to be clear
   we are not trying to influence the final return result.

Fixes #6656.
Fixes #6680.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/18870043

11 years agocmd/gc: silence clang warning
Russ Cox [Tue, 29 Oct 2013 15:50:18 +0000 (11:50 -0400)]
cmd/gc: silence clang warning

This code is only built when you run 'make' in cmd/gc,
not in all.bash.

R=golang-dev, jsing, iant
CC=golang-dev
https://golang.org/cl/19160043

11 years agomisc/emacs: support godef-jump on import statements
Dominik Honnef [Tue, 29 Oct 2013 15:14:56 +0000 (11:14 -0400)]
misc/emacs: support godef-jump on import statements

The newest version of godef supports jumping to a package's source
directory if point is on an import statement.

R=adonovan
CC=golang-dev
https://golang.org/cl/18230043